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

提示信息

提示你关于匿名用户的情况,并询问是否要移除匿名用户。下面为你详细解释及给出应对建议:
在默认情况下,MariaDB 安装完成后会存在匿名用户。这些匿名用户允许任何人在无需创建用户账户的情况下登录到 MariaDB 数据库。这种设计初衷主要是为了方便测试,并且让安装过程更加顺畅。不过,在生产环境中,匿名用户的存在会带来安全风险,因为任何人都可以无限制地访问数据库,所以建议在进入生产环境之前移除这些匿名用户

Remove anonymous users? [Y/n] y
… Success!

这是 MariaDB 安全配置过程中的一个提示,询问是否禁止 root 用户远程登录。以下是对该提示的详细分析以及应对建议
通常情况下,root 用户作为数据库的超级管理员,拥有最高的权限。如果允许 root 用户从网络远程登录,那么恶意用户可能会尝试通过网络猜测 root 用户的密码,一旦密码被破解,整个数据库的安全将受到严重威胁。因此,为了增强数据库的安全性,建议只允许 root 用户从本地主机(localhost)登录。

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

如果后续想要禁止 root 用户远程登录,使用方法一时,可执行 REVOKE ALL PRIVILEGES ON *.* FROM ‘root’@’%’; 后刷新权限;使用方法二时,将配置文件中的绑定地址改回 127.0.0.1 并重启服务即可

默认情况下,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的区别详细信息

开发语言与架构

Zabbix Agent
基于 C 语言 开发,采用单进程架构(zabbix_agentd),通过多线程处理并发请求(默认最多 500 个线程)。架构较为传统,扩展性依赖于静态编译的模块,对自定义功能的支持较有限。
Zabbix Agent2
基于 Go 语言 开发,采用模块化架构(zabbix_agent2),核心进程负责管理插件,插件以独立 goroutine(轻量级线程)运行。Go 语言的并发模型(goroutine+channel)使其在高并发场景下更高效,资源占用更可控。

监控项支持

Zabbix Agent
仅支持传统监控项类型,包括:

被动模式(服务器主动拉取数据)和主动模式(代理主动推送数据);

基础系统指标(CPU、内存、磁盘、网络等);

通过 UserParameter 自定义脚本(如 Shell/Python 等)扩展监控项。

对现代技术栈(如容器、云服务)的原生支持较弱,需依赖外部脚本或模板。
Zabbix Agent2
在支持 Agent 所有功能的基础上,新增了对 原生插件 的支持,可直接监控复杂服务,无需额外脚本:

容器相关:Docker、Kubernetes(原生插件,无需依赖docker API脚本);

数据库:MySQL、PostgreSQL(通过插件直接连接,替代mysqladmin等工具);

应用服务:Redis、Nginx、RabbitMQ 等;

系统特殊指标:如进程文件描述符、Cgroup 资源等

性能与资源占用

Zabbix Agent
单进程多线程架构在高并发场景下(如监控项数量过万)可能出现线程竞争,导致响应延迟;内存占用较低(通常几 MB),但在大量自定义脚本调用时,可能因进程创建(如 Shell 脚本 fork)导致资源波动。
Zabbix Agent2
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 等参数配置),数据传输更安全。

优势:内置更完善的加密机制,减少数据泄露的可能性。

扩展方式

Zabbix Agent
主要通过 UserParameter 扩展(在配置文件中定义自定义命令,如UserParameter=my.key,/path/script.sh),依赖外部脚本(Shell/Python 等)实现复杂监控。
缺点:脚本维护成本高,调用效率低(每次执行需创建进程),无统一的错误处理机制。
Zabbix Agent2
采用 插件化架构,支持通过 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 clean all
生成新缓存
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)

 

作者 dmxsp

发表回复

您的电子邮箱地址不会被公开。