简单讲zabbix proxy就是zabbix server的代理服务,它能帮助zabbix server采集数据,然后再统一的发送给zabbix server ;它的功能和zabbix server 很类似,zabbix server 能做到它几乎都能做;主要作用就是代理zabbix server ;我们知道监控一个主机或者服务,通常监控项有很多,每个监控项的数据采集工作都会消耗zabbix server 一个socket;这样一来监控一个主机少则十几个socket连接,多则几十个上百个;我们试想一个场景,我们要监控一个集群,这个集群有100台物理主机,每个物理主机都要监控cpu,内存,磁盘等等,一台服务器平均监控项为20个,那么100台服务器就要2000个socket连接;这意味着zabbix server要有2000个socket连接需要维持;这样一来无疑对zabbix server性能有很大的影响;为了降低zabbix server连接socket数量过大而带来的性能消耗,此时zabbix server就应该委托其他主机来代理收集数据;这个代理就是zabbix proxy;除了以上场景,比如跨机房的场景我们也需要用zabbix proxy,每个zabbix proxy只负责采集本地同一机房里的主机的数据,然后统一发送给zabbix server;这样一来可以减少zabbix server的socket连接数量,从而降低zabbix server的压力;
zabbix proxy 部署
1. 创建用户
为了安全考虑,Zabbix 只使用普通用户运行,假如你当前用户是 zhang3,那么你运行它,它便使用 zhang3 身份运行。但是如果你在 root 环境下运行 Zabbix,那么 Zabbix 将会主动使用 zabbix
用户来运行。假如你的系统没有名叫 zabbix
的用户,那么你需要创建一个用户,如下:
groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
2. 安装 Zabbix 所需依赖
dnf -y install epel-release
dnf -y install net-snmp-devel fping OpenIPMI-devel go
3. 下载 Zabbix 源码并解压
wget https://cdn.zabbix.com/zabbix/sources/stable/7.0/zabbix-7.0.2.tar.gz
tar -zxvf zabbix-7.0.0.tar.gz
4. 创建Zabbix数据库
使用命令的方式创建 zabbix 数据库,创建完成后去 宝塔面板-数据库-从服务器获取 就可以看到新建的数据库了。
mysql -uroot -p
password
MariaDB [(none)]> create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;
MariaDB [(none)]> create user zabbix_proxy@localhost identified by 'zabbix_proxy';
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix_proxy@localhost;
MariaDB [(none)]> set global log_bin_trust_function_creators = 1;
MariaDB [(none)]> quit;
解压前面下载到本地的源码文件,进入
/database/mysql
目录,分别按顺序导入schema.sql
这个文件,这样数据库就创建完成并导入初始数据了。
mysql -uroot -p
password
MariaDB [(none)]> show databases;
MariaDB [(none)]> use zabbix_proxy;
Database changed
MariaDB [zabbix]> source ~/zabbix-7.0.2/database/mysql/schema.sql;
MariaDB [zabbix]> quit;
mysql -uroot -p
password
MariaDB [(none)]> set global log_bin_trust_function_creators = 0;
MariaDB [(none)]> quit;
5.编译解压后的程序
构建 Zabbix 代理或 Zabbix 代理需要带有 GNU 扩展的 C99。可以通过设置 CFLAGS="-std=gnu99" 明确指定此版本:
export CFLAGS="-std=gnu99"
./configure --prefix=/usr/local/zabbix --enable-agent2 --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-openssl --with-ssh2 --enable-proxy
若无报错则开始编译安装
make install
6. 更新 Zabbix 的配置文件
编辑 Zabbix 代理配置文件/usr/local/zabbix/etc/zabbix_agentd.conf
必须在文件中指定 Zabbix 服务器IP 地址。来自其他主机的连接将被拒绝。
nano /usr/local/zabbix/etc/zabbix_agent2.conf
编辑 Zabbix 代理配置文件/usr/local/zabbix/etc/zabbix_proxy.conf
nano /usr/local/zabbix/etc/zabbix_proxy.conf
ProxyMode=0
Server=xxx.xxx.xxx.xxx #填写Server的IP,Proxy会将收集到的数据发往这个IP。
Hostname=web #在web端网页配置时需要用到,保持一致
DBHost=localhost #数据库,使用本地,也可以使用ip
DBName=zabbix_proxy #数据库名称,创建zabbix-proxy的mysql的数据库名称
DBUser=zabbix_proxy
DBPassword=zabbix_proxy
DBSocket=/tmp/mysql.sock #mysqlsock文件,默认是使用socket通信的
DBPort=3306
ProxyLocalBuffer=0 #当数据发送到Server,还要在本地保留多少小时.不保留
ProxyOfflineBuffer=3 #当数据没有发送到Server,在本地保留多少小时,3小时。
ConfigFrequency=3600 #代理多久从Server获取一次配置变化,默认3600秒.
DataSenderFrequency=60 #这个是proxy端向server端发送数据的时间,单位是秒
ExternalScripts=/usr/lib/zabbix/externalscripts
PidFile=/tmp/zabbix_proxy.pid
SocketDir=/tmp
CacheSize=64M
StartPollers=5
StartAgentPollers=5
StartSNMPPollers=5
StartIPMIPollers=5
7. 启动 Zabbix 程序
#配置zabbix-agent2
nano /usr/lib/systemd/system/zabbix-agent2.service
[Unit]
Description = Zabbix Agent2
After = syslog.target network.target
[Service]
Type = forking
Restart = on-failure
PIDFile = /tmp/zabbix_agent2.pid
KillMode = control-group
ExecStart = /usr/local/zabbix/sbin/zabbix_agent2 -c /usr/local/zabbix/etc/zabbix_agent2.conf
RestartSec = 10s
TimeoutSec = 0
User = zabbix
Group = zabbix
[Install]
WantedBy = multi-user.target
#配置zabbix-proxy
nano /usr/lib/systemd/system/zabbix-proxy.service
[Unit]
Description = Zabbix Proxy
After = syslog.target network.target
[Service]
Type = forking
Restart = on-failure
PIDFile = /tmp/zabbix_proxy.pid
KillMode = control-group
ExecStart = /usr/local/zabbix/sbin/zabbix_proxy -c /usr/local/zabbix/etc/zabbix_proxy.conf
RestartSec = 10s
TimeoutSec = 0
User = zabbix
Group = zabbix
[Install]
WantedBy = multi-user.target
设置开机自动启动
systemctl enable zabbix-proxy.service
systemctl enable zabbix-agent2.service
systemctl start zabbix-proxy.service
systemctl start zabbix-agent2.service
systemctl status zabbix-proxy.service
systemctl status zabbix-agent2.service
8.在zabbix web界面配置添加zabbix proxy
主界面,管理,proxy
创建proxy, 名字和配置文件中hostname一致
添加proxy所在网络主机监控,直接用proxy所在网段ip即可