Zabbix 主要有以下几个组件组成:
Zabbix Server:Zabbix 服务端,是 Zabbix 的核心组件。它负责接收监控数据并触发告警,还负责将监控数据持久化到数据库中。
Zabbix Agent:Zabbix 客户端,部署在被监控设备上,负责采集监控数据,采集后的数据发送给 Zabbix Server 处理。
Zabbix Agent 目前有两个版本:Zabbix agent 和 Zabbix agent 2。前者是 C 语言开发的,几乎支持所有的主流平台。而后者是 Go 开发的,优点包括:能有效降低 TCP 连接的数量;支持更高的并发;易于扩展。目标是替代 Zabbix agent ,目前只支持 Linux 和Windows 两个平台。
Zabbix Proxy:代替 Zabbix Server 接收监控数据并进行预处理,预处理后的数据批量发送给 Zabbix Server,这样可减轻 Zabbix Server 的压力。
Web 页面:可通过 Web 页面来管理和维护被监控设备的配置信息、查看监控数据、配置告警等。
数据库:负责存储被监控设备的配置信息和监控数据。支持的数据库有:MySQL(Percona,MariaDB),Oracle,PostgreSQL,TimescaleDB for PostgreSQL,SQLite。
本文主要包括以下四部分:
1. 安装 Zabbix Server
2. 安装 Web 组件
3. 配置 Zabbix Web 页面
4. 安装 Zabbix Agent
部署环境如下表所示。
| 角色 | IP | OS | Zabbix 版本 |
| Zabbix Server | 10.0.0.228 | CentOS 7.9 | Zabbix 6.0.2 |
| Zabbix Agent | 10.0.0.232 | CentOS 7.9 | Zabbix 6.0.2 |
下面开始安装 Zabbix Server,具体步骤如下。
(1)准备工作
关闭防火墙和 SElinux
# systemctl stop firewalld.service# systemctl disable firewalld.service# setenforce 0# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
(2)下载 zabbix 软件包:
下载地址:https://www.zabbix.com/download

我这里使用的是源码包。
(3)解压源码包,建立软链接:
# cd /usr/src/# wget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.2.tar.gz# tar xvf zabbix-6.0.2.tar.gz# ln -s zabbix-6.0.2 zabbix
(4)创建 zabbix 用户:
# groupadd --system zabbix# useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
(5)创建 zabbix 数据库:
这里将 MySQL 作为 zabbix 的后端数据库,我这里使用的是 MySQL 8.0.27 二进制版本。
下面开始安装 MySQL 8.0.27 二进制版本。
# cd /usr/local/# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz# tar xvf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz# ln -s mysql-8.0.27-linux-glibc2.12-x86_64 mysql
编辑 MySQL 配置文件
# vim /etc/my.cnf[client]socket=/data/mysql/3306/data/mysql.sock[mysqld]#server configurationuser=mysqldatadir=/data/mysql/3306/databasedir=/usr/local/mysqlport=3306socket=/data/mysql/3306/data/mysql.socklog_timestamps=systemlog_error=/data/mysql/3306/data/mysqld.errskip_name_resolve#Replication Frameworkserver_id=1master_info_repository=TABLErelay_log_info_repository=TABLElog_slave_updates=ONlog_bin=mysql-binbinlog_format=ROW
创建数据目录,初始化实例,启动实例
# mkdir -p /data/mysql/3306/data/# /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize-insecure# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
下面创建 zabbix 数据库和用户。
mysql> create database zabbix character set utf8 collate utf8_bin;mysql> create user 'zabbix_admin'@'%' identified with mysql_native_password by 'zabbix_pass';mysql> grant all privileges on zabbix.* to 'zabbix_admin'@'%';
接着初始化数据。
# cd /usr/src/zabbix/database/mysql/# mysql -h127.0.0.1 -uzabbix_admin -pzabbix_pass zabbix < schema.sql# mysql -h127.0.0.1 -uzabbix_admin -pzabbix_pass zabbix < images.sql # mysql -h127.0.0.1 -uzabbix_admin -pzabbix_pass zabbix < data.sql
(6)编译安装 Zabbix Server:
# yum install gcc mysql-devel libevent-devel libcurl-devel libxml2-devel net-snmp-devel# cd /usr/src/zabbix# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2# make install
编译时注意:
1. configure 命令中的 --prefix 是安装目录,如果不设置,则默认是 /usr/local。
2. 在 make install 的过程中,如果出现如下错误:
/bin/ld: warning: libcrypto.so.1.1, needed by /usr/local/mysql/lib/libmysqlclient.so, not found (try using -rpath or -rpath-link)/bin/ld: warning: libssl.so.1.1, needed by /usr/local/mysql/lib/libmysqlclient.so, not found (try using -rpath or -rpath-link)
则需要对依赖的两个库做个软链接。具体命令如下:
# find / -name libssl.so.1.1/usr/local/mysql-8.0.27-linux-glibc2.12-x86_64/lib/private/libssl.so.1.1# ln -s /usr/local/mysql-8.0.27-linux-glibc2.12-x86_64/lib/private/libssl.so.1.1 /usr/lib64# ln -s /usr/local/mysql-8.0.27-linux-glibc2.12-x86_64/lib/private/libcrypto.so.1.1 /usr/lib64
编译完成后,我们看看 /usr/local/zabbix/ 目录的内容。
# tree /usr/local/zabbix/usr/local/zabbix├── bin│ ├── zabbix_get│ ├── zabbix_js│ └── zabbix_sender├── etc│ ├── zabbix_agentd.conf│ ├── zabbix_agentd.conf.d│ ├── zabbix_server.conf│ └── zabbix_server.conf.d├── lib│ └── modules├── sbin│ ├── zabbix_agentd│ └── zabbix_server└── share ├── man │ ├── man1 │ │ ├── zabbix_get.1 │ │ └── zabbix_sender.1 │ └── man8 │ ├── zabbix_agentd.8 │ └── zabbix_server.8 └── zabbix ├── alertscripts └── externalscripts?14 directories, 11 files
其中,
etc 是配置文件目录。
alertscripts 是告警脚本目录。
externalscripts 是外部脚本目录。
(7)修改配置文件
首先修改 Zabbix Server 的配置文件,修改后的配置如下。
# grep -Ev '^$|^#' /usr/local/zabbix/etc/zabbix_server.confLogFile=/tmp/zabbix_server.logDBHost=127.0.0.1DBName=zabbixDBUser=zabbix_adminDBPassword=zabbix_passDBPort=3306Timeout=4LogSlowQueries=3000StatsAllowedIP=127.0.0.1
这里主要修改了连接数据库的相关参数。
其次修改 Zabbix Agent 的配置文件,修改后的配置如下。
# grep -Ev '^$|^#' /usr/local/zabbix/etc/zabbix_agentd.confLogFile=/tmp/zabbix_agentd.logServer=127.0.0.1ServerActive=127.0.0.1Hostname=Zabbix server
这里为什么也要修改 Zabbix Agent 的配置文件呢?因为 Zabbix Server 自身及所在服务器的监控数据也需要 Zabbix Agent 来采集,所以,Zabbix Agent 同样也需要安装并启动。
(8)配置服务管理脚本
针对 Zabbix Server,主要修改三处:1. 设置 zabbix_server 的路径;2. 设置配置文件的路径;3. 启动时指定配置文件。
# vim /usr/src/zabbix/misc/init.d/fedora/core5/zabbix_server...ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_server"CONFIG_FILE="/usr/local/zabbix/etc/zabbix_server.conf"...start() { echo -n $"Starting $prog: " daemon $ZABBIX_BIN -c $CONFIG_FILE # cp /usr/src/zabbix/misc/init.d/fedora/core5/zabbix_server /etc/init.d/
针对 Zabbix Agent,同样也是调整这三处的内容。
# vim /usr/src/zabbix/misc/init.d/fedora/core5/zabbix_agentd...ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd"CONGIG_FILE="/usr/local/zabbix/etc/zabbix_agentd.conf"...start() { echo -n $"Starting $prog: " daemon $ZABBIX_BIN -c $CONGIG_FILE...?# cp /usr/src/zabbix/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/
(9)启动 Zabbix Server 和 Zabbix Agent
# service zabbix_server start# service zabbix_agentd start启动 Zabbix Server 的过程中,如果提示以下错误,
Starting Zabbix Server: /usr/local/zabbix/sbin/zabbix_server: error while loading shared libraries: libmysqlclient.so.21: cannot open shared object file: No such file or directory
同样可通过设置软链接来解决。
# ln -s /usr/local/mysql/lib/libmysqlclient.so.21 /usr/lib64
(10)将 Zabbix Server 和 Zabbix Agent 设置为开机自启动。
# chkconfig zabbix_server on# chkconfig zabbix_agentd on
安装完 Zabbix Server,接下来我们安装 Web 组件。
这里使用的 Web 服务器是 httpd,也可使用 Nginx。
(1)安装 httpd 和 PHP。
方便起见,这里直接通过 yum 安装 httpd 和 PHP。Zabbix 从 5.0 开始,要求 PHP 的版本不低于 7.2。但在 CentOS 7 中,yum 源中默认的是 PHP 5.4.16。所以,这里需要安装额外的 epel 和 webtatic 源。
# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm# yum install httpd php72w-cli php72w-common php72w-gd php72w-ldap php72w-mbstring php72w-mysqlnd php72w-xml php72w-bcmath mod_php72w -y
(2)将 Zabbix 源码包中的 PHP 文件复制到 httpd 的根目录下。
# mkdir -p /var/www/html/zabbix# cp -r /usr/src/zabbix/ui/* /var/www/html/zabbix# chown -R apache.apache /var/www/html/
(3)修改 php 的配置文件。
# vim /etc/php.inimax_execution_time = 300max_input_time = 300memory_limit = 128Mpost_max_size = 16Mupload_max_filesize = 2Mdate.timezone = Asia/Shanghai
注意,这里给出的只是最小需求值,可根据实际需要调大。
(4)启动 httpd 服务
# service httpd start
(5)将 httpd 服务设置为开机自启动
# chkconfig httpd on
安装完 Web 组件,最后我们开始配置 Zabbix Web 页面。
(1)登录 Zabbix Server Web 首页。
浏览器中输入 http://10.0.0.228/zabbix ,其中,10.0.0.228 是 Zabbix Server 的地址

将默认的语言调整为 Chinese(zh_CN) ,点击下一步。
(2)依赖性检查。
主要是检查 php 的插件、配置是否满足要求。如果不满足,最右边的 OK 将显示为 Fail。

(3)配置数据库连接信息。

因为我们的演示环境 Zabbix Server 和数据库是在一台主机上部署,所以,这里 Database host 设置的是 127.0.0.1。生成环境建议分开部署。
(4)设置 Zabbix Server 信息

(5)检查配置是否正确。

(6)安装页面

进入Zabbix的登录界面,默认的用户名为Admin,密码为zabbix,管理员权限。

登录成功后的页面如下所示:

同样的源码包,在被监控主机(192.168.244.10)上部署。
(1)编译安装 Zabbix Agent:
# groupadd --system zabbix# useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix# cd /usr/src/# tar xvf zabbix-6.0.2.tar.gz# ln -s zabbix-6.0.2 zabbix# yum install gcc pcre-devel -y# cd zabbix# ./configure --prefix=/usr/local/zabbix --enable-agent# make install
(2)修改配置文件:
# grep -Ev '^$|^#' /usr/local/zabbix/etc/zabbix_agentd.confLogFile=/tmp/zabbix_agentd.logServer=10.0.0.228ServerActive=127.0.0.1Hostname=node1
其中,
Server:被动模式下 Zabbix Server 的地址,在这种模式下,Zabbix Server 发送请求,Agent 才会响应数据。被动模式是 Zabbix Agent 默认的工作模式。
ServerActive:主动模式下 Zabbix Server 的地址,在这种模式下,Agent 会将采集到的数据主动发送给 Zabbix Server。
Hostname:主机名。注意,这里的主机名并不一定要是主机的 hostname,也可以是 IP 或其它有标识性的字符串,只要保证这个配置在 Zabbix Server 监控的主机内全局唯一即可。Hostname 只适用于主动模式,被动模式下无需设置。
(3)配置服务管理脚本:
# vim /usr/src/zabbix/misc/init.d/fedora/core5/zabbix_agentd...ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd"CONGIG_FILE="/usr/local/zabbix/etc/zabbix_agentd.conf"...start() { echo -n $"Starting $prog: " daemon $ZABBIX_BIN -c $CONGIG_FILE...?# cp /usr/src/zabbix/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/
(4)启动 Zabbix Agent:
# service zabbix_agentd start
(5)设置开机自启动:
# chkconfig zabbix_agentd on