1.zabbix安装
官网
环境准备
zabbix服务端10.0.0.143
zabbix客户端10.0.0.45
服务端
nginx+php
php修改文件
PHP 8.1
yum install epel-release -y yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y yum install -y yum-utils yum-config-manager --enable remi-php81 yum install nginx php php-fpm php-mysqlnd php-gd php-bcmath php-mbstring php-xml -y
sed -ri ‘/^(user|group)/s#apache#nginx#g’ /etc/php-fpm.d/www.conf
[root@zabbix ~]$ egrep ‘^(user|group)’ /etc/php-fpm.d/www.conf
user = nginx
group = nginx
[root@zabbix ~]$ php-fpm -t
[19-Jan-2025 16:27:44] NOTICE: configuration file /etc/php-fpm.conf test is successful
[root@zabbix ~]$ systemctl start php-fpm.service nginx.service
[root@zabbix ~]$ systemctl enable php-fpm.service nginx.service
数据库
vi /etc/yum.repos.d/MariaDB.repo
然后添加如下内容(以 MariaDB 10.5 为例):
[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.5/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
[root@mysqldb ~]$ yum install -y mariadb-server
[root@zabbix ~]$ systemctl start mariadb.service
[root@zabbix ~]$ systemctl enable mariadb.service
设置用户名密码
mysql_secure_installation
Enter current password for root (enter for none): 回车
设置密码
set root password? [Y/n] y
New password:123
Re-enter new password:123
提示信息
Remove anonymous users? [Y/n] y
… Success!
Disallow root login remotely? [Y/n]y
后续更改
方法一:使用 SQL 命令
登录到 MariaDB:以 root 用户身份登录到 MariaDB 数据库,在终端或命令提示符中输入 mysql -u root -p,然后输入 root 用户的密码23。
授予远程登录权限:如果要允许 root 用户从任何主机远程登录,执行 GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;,其中 password 是你为 root 用户设置的远程登录密码。如果只想允许特定 IP 段的主机连接,比如 192.168.100.%,则将命令改为 GRANT ALL PRIVILEGES ON *.* TO ‘root’@’192.168.100.%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;47。
刷新权限:执行 FLUSH PRIVILEGES;,使权限设置立即生效467。
方法二:修改配置文件
打开配置文件:在服务器上找到 MariaDB 的配置文件,通常在 /etc/mysql/mariadb.conf.d/50-server.cnf 或 /etc/my.cnf 等位置。使用文本编辑器打开该文件14。
修改绑定地址:找到 bind-address = 127.0.0.1 这一行,如果要允许远程访问,将其注释掉或者改为 bind-address = 0.0.0.0。0.0.0.0 表示允许来自任何地址的连接14。
重启 MariaDB 服务:保存配置文件后,重启 MariaDB 服务使配置生效。在 Ubuntu/Debian 系统上,执行 sudo systemctl restart mariadb;在 CentOS/RHEL 系统上,执行 sudo systemctl restart mysqld14。
默认情况下,MariaDB 会自带一个名为 test 的数据库,该数据库允许任何人访问,主要用于测试目的。在生产环境中,为了避免潜在的安全风险和不必要的干扰,通常建议移除这个测试数据库以及对它的访问权限234。
Remove test database and access to it? [Y/n]y
在对 MariaDB 进行安全配置的过程中,比如修改了用户密码、移除了匿名用户、删除了测试数据库等操作后,这些更改并不会立即生效,需要重新加载权限表,才能让数据库重新读取并应用这些新的权限设置,确保所有的更改能够立即生效,使数据库的权限状态与所做的配置更改保持一致。
Reload privilege tables now? [Y/n]y
查看
[root@zabbix ~]$ mysql -uroot -p123
mysql配置zabbix
CREATE DATABASE zabbix character set utf8 collate utf8_bin;
CREATE USER ‘zabbix’@’localhost’ IDENTIFIED BY ‘123456’;
GRANT ALL PRIVILEGES ON zabbix.* TO ‘zabbix’@’localhost’;
FLUSH PRIVILEGES;
create database zabbix character set utf8 collate utf8_bin;
CREATE USER ‘zabbix’@’10.0.0.143’ IDENTIFIED BY ‘123456’;
GRANT ALL PRIVILEGES ON zabbix.* TO ‘zabbix’@’10.0.0.143’;
FLUSH PRIVILEGES;
CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
这条命令创建了一个名为zabbix的新数据库,并设置了字符集为utf8,排序规则为utf8_bin。这确保了数据库能够支持多语言字符,并且在比较字符串时区分大小写。
CREATE USER 'zabbix'@'10.0.0.143' IDENTIFIED BY '123456';
这条命令创建了一个名为zabbix的用户,该用户只能从IP地址10.0.0.143连接到数据库服务器,并设置了密码为123456。
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'10.0.0.143';
这条命令授予了zabbix用户对zabbix数据库的所有权限(如SELECT, INSERT, UPDATE, DELETE等)
FLUSH PRIVILEGES;
执行这条命令是为了确保权限更改立即生效。虽然某些情况下MariaDB/MySQL会自动处理权限更新,但显式地刷新权限是一个好习惯
nginx配置文件
[root@zabbix ~]$ cat /etc/nginx/conf.d/zabbix.conf
server {
listen 80;
server_name zabbix.jk.com;
root /code/zabbix;
location / {
index index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
[root@zabbix ~]$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@zabbix ~]$ systemctl reload nginx.service
php+nginx测试
[root@zabbix ~]$ cat /code/zabbix/info.php
<?php
phpinfo();
?>
服务端(官网)(官网如果失败可以找阿里源或者清华源)
# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/7/x86_64/zabbix-release-latest-7.0.el7.noarch.rpm
# yum clean all
[root@zabbix ~]$ yum install -y zabbix-agent zabbix-server
# systemctl restart zabbix-agent abbix-server
# systemctl enable zabbix-agent abbix-server
zabbix 数据库导入数据按照顺序
[root@zabbix ~]$ mysql -uzabbix -p123456 zabbix < /usr/share/zabbix-mysql/schema.sql
[root@zabbix ~]$ mysql -uzabbix -p123456 zabbix < /usr/share/zabbix-mysql/images.sql
[root@zabbix ~]$ mysql -uzabbix -p123456 zabbix < /usr/share/zabbix-mysql/data.sql
[root@zabbix ~]$ mysql -h 10.0.0.26 -uzabbix -p123456 zabbix < /usr/share/zabbix-mysql/schema.sql
[root@zabbix ~]$ mysql -h 10.0.0.26 -uzabbix -p123456 zabbix < /usr/share/zabbix-mysql/images.sql
[root@zabbix ~]$ mysql -h 10.0.0.26 -uzabbix -p123456 zabbix < /usr/share/zabbix-mysql/data.sql
zabbix配置连接数据库
编辑 /etc/zabbix/zabbix_server.conf 文件,并设置数据库密码:
DBPassword=123456
[root@zabbix ~]$ grep ^DB /etc/zabbix_server.conf
DBHost=10.0.0.26
DBName=zabbix
DBUser=zabbix
DBPassword=123456
DBSocket=/var/lib/mysql/mysql.sock
[root@zabbix ~]$ grep ‘^[a-Z]’ /etc/zabbix_server.conf
LogFile=/var/log/zabbixsrv/zabbix_server.log
LogFileSize=0
PidFile=/run/zabbixsrv/zabbix_server.pid
DBHost=10.0.0.26
DBName=zabbix
DBUser=zabbix
DBPassword=123456
DBSocket=/var/lib/mysql/mysql.sock
Timeout=4
AlertScriptsPath=/var/lib/zabbixsrv/alertscripts
ExternalScripts=/var/lib/zabbixsrv/externalscripts
LogSlowQueries=3000
TmpDir=/var/lib/zabbixsrv/tmp
StatsAllowedIP=127.0.0.1
zabbix前端页面准备
[root@zabbix ~]$ ss -lntup |grep zabbix
tcp LISTEN 0 128 *:10050 *:* users:((“zabbix_agentd”,pid=20364,fd=4),(“zabbix_agentd”,pid=20363,fd=4),(“zabbix_agentd”,pid=20362,fd=4),(“zabbix_agentd”,pid=20361,fd=4),(“zabbix_agentd”,pid=20360,fd=4),(“zabbix_agentd”,pid=20359,fd=4),(“zabbix_agentd”,pid=20358,fd=4),(“zabbix_agentd”,pid=20357,fd=4),(“zabbix_agentd”,pid=20356,fd=4),(“zabbix_agentd”,pid=20355,fd=4),(“zabbix_agentd”,pid=20354,fd=4),(“zabbix_agentd”,pid=20353,fd=4),(“zabbix_agentd”,pid=20352,fd=4))
tcp LISTEN 0 128 [::]:10050 [::]:* users:((“zabbix_agentd”,pid=20364,fd=5),(“zabbix_agentd”,pid=20363,fd=5),(“zabbix_agentd”,pid=20362,fd=5),(“zabbix_agentd”,pid=20361,fd=5),(“zabbix_agentd”,pid=20360,fd=5),(“zabbix_agentd”,pid=20359,fd=5),(“zabbix_agentd”,pid=20358,fd=5),(“zabbix_agentd”,pid=20357,fd=5),(“zabbix_agentd”,pid=20356,fd=5),(“zabbix_agentd”,pid=20355,fd=5),(“zabbix_agentd”,pid=20354,fd=5),(“zabbix_agentd”,pid=20353,fd=5),(“zabbix_agentd”,pid=20352,fd=5))
下载配置
[root@zabbix ~]$ wget https://cdn.zabbix.com/zabbix/sources/stable/7.0/zabbix-7.0.10.tar.gz
[root@zabbix ~]$ ll
-rw-r–r– 1 root root 45000043 Feb 24 19:14 zabbix-7.0.10.tar.gz
[root@zabbix ~]$ tar xf zabbix-7.0.10.tar.gz
[root@zabbix ~]$ cd zabbix-7.0.10/
[root@zabbix ~/zabbix-7.0.10]$ mv ui/ /code/zabbix/
[root@zabbix ~/zabbix-7.0.10]$ chown -R nginx.nginx /code/zabbix/
启动 zabbix-server
6.0
服务端
下载配置
[root@zabbix ~]$ rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-latest-6.0.el7.noarch.rpm
[root@zabbix ~]$ rpm -ql zabbix-release
/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
/etc/yum.repos.d/zabbix-agent2-plugins.repo
/etc/yum.repos.d/zabbix.repo
/usr/share/doc/zabbix-release-6.0
/usr/share/doc/zabbix-release-6.0/GPL
[root@zabbix ~]$ yum install -y zabbix-server
修改配置文件
[root@zabbix ~]$ vim /etc/zabbix_server.conf
[root@zabbix ~]$ grep ^DB /etc/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123456
DBSocket=/var/lib/mysql/mysql.sock
基础配置
[root@zabbix ~]$ grep ‘^[a-Z]’ /etc/zabbix_server.conf
LogFile=/var/log/zabbixsrv/zabbix_server.log
LogFileSize=0
PidFile=/run/zabbixsrv/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123456
DBSocket=/var/lib/mysql/mysql.sock
Timeout=4
AlertScriptsPath=/var/lib/zabbixsrv/alertscripts
ExternalScripts=/var/lib/zabbixsrv/externalscripts
LogSlowQueries=3000
TmpDir=/var/lib/zabbixsrv/tmp
StatsAllowedIP=127.0.0.1
导入数据库
[root@zabbix ~]$ mysql -uzabbix -p123456 zabbix < /usr/share/zabbix-mysql/schema.sql
[root@zabbix ~]$ mysql -uzabbix -p123456 zabbix < /usr/share/zabbix-mysql/images.sql
[root@zabbix ~]$ mysql -uzabbix -p123456 zabbix < /usr/share/zabbix-mysql/data.sql
启动
[root@zabbix ~]$ systemctl enable zabbix-server-mysql.service
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server-mysql.service to /usr/lib/systemd/system/zabbix-server-mysql.service.
[root@zabbix ~]$ systemctl start zabbix-server-mysql.service
[root@zabbix ~]$ ss -lntup |grep zabbix
tcp LISTEN 0 128 *:10051 *:* users:((“zabbix_server”,pid=5590,fd=9),(“zabbix_server”,pid=5589,fd=9),(“zabbix_server”,pid=5588,fd=9),(“zabbix_server”,pid=5587,fd=9),(“zabbix_server”,pid=5586,fd=9),(“zabbix_server”,pid=5581,fd=9),(“zabbix_server”,pid=5580,fd=9),(“zabbix_server”,pid=5579,fd=9),(“zabbix_server”,pid=5578,fd=9),(“zabbix_server”,pid=5577,fd=9),(“zabbix_server”,pid=5572,fd=9),(“zabbix_server”,pid=5571,fd=9),(“zabbix_server”,pid=5570,fd=9),(“zabbix_server”,pid=5569,fd=9),(“zabbix_server”,pid=5567,fd=9),(zabbix_server”,pid=5566,fd=9),(“zabbix_server”,pid=5565,fd=9),(“zabbix_server”,pid=5564,fd=9),(“zabbix_server”,pid=5563,fd=9),(“zabbix_server”,pid=5561,fd=9),(“zabbix_server”,pid=5559,fd=9),(“zabbix_server”,pid=5558,fd=9),(“zabbix_server”,pid=5557,fd=9),(“zabbix_server”,pid=5556,fd=9),(“zabbix_server”,pid=5555,fd=9),(“zabbix_server”,pid=5545,fd=9),(“zabbix_server”,pid=5544,fd=9),(“zabbix_server”,pid=5543,fd=9),(“zabbix_server”,pid=5542,fd=9),(“zabbix_server”,pid=5541,fd=9),(“zabbix_server”,pid=5540,fd=9),(“zabbix_server”,pid=5539,fd=9),(“zabbix_server”,pid=5538,fd=9),(“zabbix_server”,pid=5537,fd=9),(“zabbix_server”,pid=5536,fd=9),(“zabbix_server”,pid=5535,fd=9),(“zabbix_server”,pid=5534,fd=9),(“zabbix_server”,pid=5533,fd=9),(“zabbix_server”,pid=5532,fd=9),(“zabbix_server”,pid=5531,fd=9),(“zabbix_server”,pid=5530,fd=9),(“zabbix_server”,pid=5529,fd=9),(“zabbix_server”,pid=5528,fd=9),(“zabbix_server”,pid=5527,fd=9),(“zabbix_server”,pid=5526,fd=9),(“zabbix_server”,pid=5525,fd=9),(“zabbix_server”,pid=5516,fd=9))
tcp LISTEN 0 128 [::]:10051 [::]:* users:((“zabbix_server”,pid=5590,fd=10),(“zabbix_server”,pid=5589,fd=10),(“zabbix_server”,pid=5588,fd=10),(“zabbix_server”,pid=5587,fd=10),(“zabbi_server”,pid=5586,fd=10),(“zabbix_server”,pid=5581,fd=10),(“zabbix_server”,pid=5580,fd=10),(“zabbix_server”,pid=5579,fd=10),(“zabbix_server”,pid=5578,fd=10),(“zabbix_server”,pid=5577,fd=10),(“zabbix_server”,pid=5572,fd=10),(“zabbix_server”,pid=5571,fd=10),(“zabbix_server”,pid=5570,fd=10),(“zabbix_server”,pid=5569,fd=10),(“zabbix_server”,pid=5567,fd=10),(“zabbix_server”,pid=5566,fd=10),(“zabbix_server”,pid=5565,fd=10),(“zabbix_server”,pid=5564,fd=10),(zabbix_server”,pid=5563,fd=10),(“zabbix_server”,pid=5561,fd=10),(“zabbix_server”,pid=5559,fd=10),(“zabbix_server”,pid=5558,fd=10),(“zabbix_server”,pid=5557,fd=10),(“zabbix_server”,pid=5556,fd=10),(“zabbix_server”,pid=5555,fd=10),(“zabbix_server”,pid=5545,fd=10),(“zabbix_server”,pid=5544,fd=10),(“zabbix_server”,pid=5543,fd=10),(“zabbix_server”,pid=5542,fd=10),(“zabbix_server”,pid=5541,fd=10),(“zabbix_server”,pid=5540,fd=10),(“zabbix_server”,pid=5539,fd=10),(“zabbix_server”,pid=5538,fd=10),(“zabbix_server”,pid=5537,fd=10),(“zabbix_server”,pid=5536,fd=10),(“zabbix_server”,pid=5535,fd=10),(“zabbix_server”,pid=5534,fd=10),(“zabbix_server”,pid=5533,fd=10),(“zabbix_server”,pid=5532,fd=10),(“zabbix_server”,pid=5531,fd=10),(“zabbix_server”,pid=5530,fd=10),(“zabbix_server”,pid=5529,fd=10),(“zabbi_server”,pid=5528,fd=10),(“zabbix_server”,pid=5527,fd=10),(“zabbix_server”,pid=5526,fd=10),(“zabbix_server”,pid=5525,fd=10),(“zabbix_server”,pid=5516,fd=10))
[root@zabbix ~]$
前端页面
下载源码包
[root@zabbix ~]$ wget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.40.tar.gz
[root@zabbix ~]$ tar xf zabbix-6.0.40.tar.gz
移动目录修改权限
[root@zabbix ~]$ cd zabbix-6.0.40/
[root@zabbix ~/zabbix-6.0.40]$ mv ui/* /code/zabbix/
[root@zabbix ~/zabbix-6.0.40]$ chown -R nginx.nginx /code/zabbix/
提前修改php配置文件
[root@zabbix ~]$ egrep -n ‘^(max_|date.timezone|post_max)’ /etc/php.ini
409:max_execution_time = 300
419:max_input_time = 300
698:post_max_size = 16M
853:max_file_uploads = 20
927:date.timezone = Asia/Shanghai
[root@zabbix ~]$ systemctl reload php-fpm.service
页面
zabbix-agent2安装
agent和agent2的区别详细信息
开发语言与架构
基于 C 语言 开发,采用单进程架构(zabbix_agentd),通过多线程处理并发请求(默认最多 500 个线程)。架构较为传统,扩展性依赖于静态编译的模块,对自定义功能的支持较有限。
基于 Go 语言 开发,采用模块化架构(zabbix_agent2),核心进程负责管理插件,插件以独立 goroutine(轻量级线程)运行。Go 语言的并发模型(goroutine+channel)使其在高并发场景下更高效,资源占用更可控。
监控项支持
仅支持传统监控项类型,包括:
被动模式(服务器主动拉取数据)和主动模式(代理主动推送数据);
基础系统指标(CPU、内存、磁盘、网络等);
通过 UserParameter 自定义脚本(如 Shell/Python 等)扩展监控项。
容器相关:Docker、Kubernetes(原生插件,无需依赖docker API脚本);
数据库:MySQL、PostgreSQL(通过插件直接连接,替代mysqladmin等工具);
应用服务:Redis、Nginx、RabbitMQ 等;
系统特殊指标:如进程文件描述符、Cgroup 资源等
性能与资源占用
单进程多线程架构在高并发场景下(如监控项数量过万)可能出现线程竞争,导致响应延迟;内存占用较低(通常几 MB),但在大量自定义脚本调用时,可能因进程创建(如 Shell 脚本 fork)导致资源波动。
Go 语言的 goroutine 比线程更轻量(单个 goroutine 内存占用仅几 KB),支持数万并发监控项时仍能保持稳定;插件以常驻 goroutine 运行,避免了脚本频繁调用的进程创建开销,资源占用更平稳(内存通常比 Agent 略高,但可控)。
通信协议与连接数
Zabbix Agent
协议:使用传统的 Zabbix 协议(Zabbix Protocol 1),基于 TCP 连接。
连接数:与 Server 通信时可能需要较多的 TCP 连接(如每个主动检查项一个连接),导致资源浪费和网络压力。
Zabbix Agent2
协议:引入了 Zabbix Protocol 4(ZP4),支持更高效的数据传输。
连接数:通过复用 TCP 连接和优化通信逻辑,显著降低连接数需求(如一个连接可处理多个请求)。
安全性
Zabbix Agent
加密支持:仅支持基础的 SSL/TLS 加密(需手动配置)。
风险:在传输过程中可能存在中间人攻击的风险(若未启用加密)。
Zabbix Agent2
加密支持:默认支持 端到端 TLS 加密(通过 TLSCAFile、TLSCertFile 等参数配置),数据传输更安全。
优势:内置更完善的加密机制,减少数据泄露的可能性。
扩展方式
主要通过 UserParameter 扩展(在配置文件中定义自定义命令,如UserParameter=my.key,/path/script.sh),依赖外部脚本(Shell/Python 等)实现复杂监控。
缺点:脚本维护成本高,调用效率低(每次执行需创建进程),无统一的错误处理机制。
采用 插件化架构,支持通过 Go 语言开发原生插件(也支持调用外部脚本,但非推荐方式)。插件可直接集成到 Agent2 进程中,支持:
常驻内存(避免重复初始化);
统一的日志、错误处理和配置管理;
支持动态加载 / 卸载(部分插件)。
优势:扩展更灵活,性能更高,适合复杂监控场景
其他特性
TLS 加密:二者均支持 TLS 1.2/1.3 加密通信,但 Agent2 的 Go 原生 TLS 实现更稳定,对加密算法的支持更全面。
日志与调试:Agent2 的日志更详细(支持DebugLevel=5级调试),且插件级日志独立输出,便于问题排查。
资源控制:Agent2 可通过配置限制插件的 CPU / 内存占用(如Plugins.<Name>.MaxMemory),避免单个插件异常影响整体
适用场景总结
场景 | 推荐使用 | 原因 |
---|---|---|
小型监控系统 | Zabbix Agent | 配置简单,资源消耗低,稳定性高。 |
大规模监控(千台以上) | Zabbix Agent2 | 并发性高,资源消耗低,适合高负载环境。 |
需要频繁扩展功能 | Zabbix Agent2 | 插件框架灵活,支持快速开发和集成新功能。 |
对安全性要求极高 | Zabbix Agent2 | 支持 TLS 加密,数据传输更安全。 |
稳定性优先的生产环境 | Zabbix Agent | 经过长期验证,兼容性好,风险更低。 |
安装
[root@zabbix ~]$ yum install -y zabbix-agent2
修改配置文件
[root@zabbix ~]$ grep ‘^[a-Z]’ /etc/zabbix/zabbix_agent2.conf
PidFile=/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agent2.d/*.conf
PluginSocket=/run/zabbix/agent.plugin.sock
ControlSocket=/run/zabbix/agent.sock
Include=./zabbix_agent2.d/plugins.d/*.conf
启动
[root@zabbix ~]$ systemctl enable zabbix-agent2.service
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent2.service to /usr/lib/systemd/system/zabbix-agent2.service.
[root@zabbix ~]$ systemctl start zabbix-agent2.service
配置文件
[root@zabbix ~]$ grep ‘^[a-Z]’ /etc/zabbix/zabbix_agent2.conf
PidFile=/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agent2.d/*.conf
PluginSocket=/run/zabbix/agent.plugin.sock
ControlSocket=/run/zabbix/agent.sock
Include=./zabbix_agent2.d/plugins.d/*.conf
Server=127.0.0.1 #zabbix 服务端ip地址
ServerActive=127.0.0.1 #zabbix 客户端主动模式的服务端ip地址
Hostname=Zabbix server #客户端主机名 暂时不改
Include=/etc/zabbix/zabbix_agent2.d/*.conf #类似于nginx incloude功能
客户端zabbix-agent2安装
源
[root@web01 ~]$ rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-latest-6.0.el7.noarch.rpm
[root@web01 ~]$ yum clean all
[root@web01 ~]$ yum install -y zabbix-agent2
修改配置文件
[root@web01 ~]$ grep ^Server= /etc/zabbix/zabbix_agent2.conf
Server=172.16.1.143
启动
[root@web01 ~]$ systemctl enable zabbix-agent2.service
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent2.service to /usr/lib/systemd/system/zabbix-agent2.service.
[root@web01 ~]$ systemctl start zabbix-agent2.service
检查端口
[root@web01 ~]$ ss -lntup | grep 10050
tcp LISTEN 0 128 [::]:10050 [::]:* users:((“zabbix_agent2”,pid=18262,fd=8))
[root@web01 ~]$ ps -ef | grep zabbix
zabbix 18262 1 0 16:36 ? 00:00:06 /usr/sbin/zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf
root 33942 1785 0 22:23 pts/1 00:00:00 grep –color=auto zabbix
测试是否可以链接端口
[root@web01 ~]$ nmap -p10051 172.16.1.143
Starting Nmap 6.40 ( http://nmap.org ) at 2025-07-13 22:58 CST
Nmap scan report for zabbix (172.16.1.143)
Host is up (0.00047s latency).
PORT STATE SERVICE
10051/tcp open unknown
MAC Address: 00:50:56:38:49:C4 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.47 seconds
[root@web01 ~]$ telnet 172.16.1.143 10051
Trying 172.16.1.143…
Connected to 172.16.1.143.
Escape character is ‘^]’.
Connection closed by foreign host.
调试命令
[root@zabbix ~]$ yum install -y zabbix-get
[root@zabbix ~]$ zabbix_get -s 172.16.1.45 -k system.hostname
web01
-s 172.16.1.45:该参数指定了目标 Zabbix Agent 的 IP 地址,也就是 172.16.1.45。
-k system.hostname:此参数指定了要获取的监控项键值,system.hostname 代表的是目标主机的主机名。
web前端 操作 添加主机
7.0
[root@zabbix ~]$ wget https://cdn.zabbix.com/zabbix/sources/stable/7.0/zabbix-7.0.12.tar.gz
安装编译依赖 yum install -y net-snmp-devel libevent-devel OpenIPMI-devel libxml2-devel libcurl-devel go openldap-devel
[root@zabbix ~]$ tar xf zabbix-7.0.12.tar.gz
[root@zabbix ~]$ cd zabbix-7.0.12/
[root@zabbix ~/zabbix-7.0.12]$
./configure \
–enable-server \
–enable-agent2 \
–with-mysql \
–with-net-snmp \
–with-libcurl \
–with-libxml2 \
–with-openssl11 \
–with-libevent=/usr/local/libevent-2.1.12 \
–with-ldap
编译并安装
make -j$(nproc) sudo make install
7.0报错
1.configure: error: MySQL library not found
解决方案
添加 MySQL 8.0 官方仓库
下载并安装 MySQL 8.0 的仓库 RPM 包 sudo yum localinstall -y https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
启用 MySQL 8.0 仓库
默认情况下,MySQL 8.0 仓库可能未启用。运行以下命令启用:
禁用其他 MySQL 版本仓库(如 5.7) sudo yum-config-manager --disable mysql57-community 启用 MySQL 8.0 仓库 sudo yum-config-manager --enable mysql80-community
清除 yum 缓存并更新
生成新缓存 sudo yum makecache
安装
yum install -y mysql-community-devel
2.configure: error: OpenSSL library version requirement for server or proxy not met (>= 1.1.0)
检查当前 OpenSSL 版本
openssl version
输出示例:OpenSSL 1.0.2k-fips 26 Jan 2017(需升级)
通过第三方仓库安装 OpenSSL 1.1.1+
CentOS 7 默认仓库不提供 OpenSSL 1.1.x,需使用 IUS 社区仓库:
添加 IUS 仓库 sudo yum install -y https://repo.ius.io/ius-release-el7.rpm 安装 OpenSSL 1.1.1 及开发包 sudo yum install -y openssl11 openssl11-devel
配置环境变量指向新版本
设置符号链接(强制使用新版本) sudo ln -sf /usr/bin/openssl11 /usr/bin/openssl sudo ln -sf /usr/include/openssl11 /usr/include/openssl 更新动态链接库缓存 echo "/usr/lib64/openssl11" | sudo tee /etc/ld.so.conf.d/openssl11.conf sudo ldconfig 验证版本 openssl version 输出应为:OpenSSL 1.1.1k ...
配置 PKG_CONFIG_PATH
如果使用第三方仓库(如 IUS)安装的 OpenSSL 1.1.x,需设置 pkg-config
路径:
export PKG_CONFIG_PATH=/usr/lib64/openssl11/pkgconfig:$PKG_CONFIG_PATH 验证是否生效 pkg-config --libs openssl 应输出:-L/usr/lib64/openssl11 -lssl -lcrypto
设置 PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/usr/lib64/openssl11/pkgconfig:$PKG_CONFIG_PATH 永久生效(添加到 ~/.bashrc 或 /etc/profile) echo 'export PKG_CONFIG_PATH=/usr/lib64/openssl11/pkgconfig:$PKG_CONFIG_PATH' | sudo tee -a /etc/profile source /etc/profile
3.升级 Net-SNMP 到 5.8+ 版本(zabbix需要重新执行)
yum install -y perl-devel perl-ExtUtils-Embed gcc make rpm-build libtool-ltdl-devel openssl-devel perl-devel python-devel
wget https://downloads.sourceforge.net/project/net-snmp/net-snmp/5.9.4/net-snmp-5.9.4.tar.gz tar -zxvf net-snmp-5.9.4.tar.gz cd net-snmp-5.9.4
./configure --prefix=/usr \ --sysconfdir=/etc \ --enable-embedded-perl \ --with-default-snmp-version=3 \ --with-security-modules=tsm \ --with-persistent-directory=/var/lib/net-snmp \ --with-logfile=/var/log/snmpd.log \ --with-mib-modules="ucd-snmp/diskio tcp-mib udp-mib" \ --disable-static
make -j$(nproc) sudo make install
更新动态库缓存 sudo ldconfig
验证
net-snmp-config –version
5.9.4.pre2
4.libevent 版本过低
安装编译依赖 sudo yum install -y openssl-devel 下载 libevent 2.1.12 wget https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz tar -zxvf libevent-2.1.12-stable.tar.gz cd libevent-2.1.12-stable 配置并编译
./configure \ --prefix=/usr/local/libevent-2.1.12 \ --enable-openssl \ --enable-dns \ --enable-http \ --enable-static=no
make -j$(nproc) sudo make install
检查头文件路径 find /usr -name "event.h" | grep libevent 检查动态库版本 ldconfig -p | grep libevent
检查头文件路径:
ls /usr/local/libevent-2.1.12/include/event2/dns.h
如果仍报错,手动设置编译环境变量:
export CFLAGS="-I/usr/local/libevent-2.1.12/include" export LDFLAGS="-L/usr/local/libevent-2.1.12/lib" 重新运行 configure 和 make ./configure [其他参数] make -j$(nproc)
5. go build错误
卸载旧版本 Go
移除通过 yum 安装的 Go sudo yum remove -y golang 清理残留文件 sudo rm -rf /usr/local/go
安装 Go 1.21+(以 1.22.4 为例)
下载最新 Go 二进制包 wget https://go.dev/dl/go1.22.4.linux-amd64.tar.gz 解压到 /usr/local sudo tar -C /usr/local -xzf go1.22.4.linux-amd64.tar.gz 设置环境变量(临时生效) export PATH=/usr/local/go/bin:$PATH 永久生效(添加到 ~/.bashrc 或 /etc/profile) echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee -a /etc/profile source /etc/profile 验证版本 go version 输出应为:go version go1.22.4 linux/amd64
重新编译 Zabbix
进入 Zabbix 源码目录 cd /root/zabbix-7.0.12/src/go 清理旧编译缓存 make clean 重新编译 make
6.用户权限
创建 Zabbix 用户和组
创建 zabbix 用户和组(禁止登录且无家目录) sudo groupadd --system zabbix sudo useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix 验证用户信息 id zabbix 应输出:uid=993(zabbix) gid=991(zabbix) groups=991(zabbix)