一.概述
zabbix proxy 可以代替 zabbix server 收集性能和可用性数据,然后把数据汇报给 zabbix server,并且在一定程度上分担了zabbix server 的压力.此外,当所有agents和proxies报告给一个Zabbix server并且所有数据都集中收集时,使用proxy是实现集中式和分布式监控的最简单方法。(摘自官网)
zabbix proxy 使用场景:
监控远程区域设备
监控本地网络不稳定区域
当 zabbix 监控上千设备时,使用它来减轻 server 的压力
简化分布式监控的维护
zabbix proxy 仅仅需要一条 tcp 连接到 zabbix server,所以防火墙上仅仅需要加上一条规则即可
分布式监控原理
proxy收集到数据之后,首先将数据缓存在本地,然后在一定得时间之后传递给zabbix server,这样就不会因为服务器的任何临时通信问题而丢失数据。这个时间由proxy配置文件中参数ProxyLocalBuffer和 ProxyOfflineBuffer决定。
二.实践配置
环境说明:
zabbix-server 处于外网,zabbix-agent 处于各个地方的内网,各地的内网都是互通的。其中有一台内网服务器既可以和内网通信,也可以和外网进行通信。
实践场景与地址分配
1.操作配置
1)zabbix-server端
这里省略,之前已有安装好的。
2)zabbix-proxy端安装。
#下载安装包
[root@sh-proxy ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
[root@sh-proxy ~]# yum -y install zabbix-proxy-mysql
#安装数据库
[root@sh-proxy ~]# yum -y install mariadb-server
#启动数据库并设置开机自启
[root@sh-proxy ~]# systemctl start mariadb
[root@sh-proxy ~]# systemctl enable mariadb
#初始化数据库并创建数据库以及授权
[root@sh-proxy ~]# mysql_secure_installation
[root@sh-proxy ~]# mysql -uroot -p123456
MariaDB [(none)]> create database zabbix_proxy default charset utf8;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all on zabbix_proxy.* to zabbix_proxy@'localhost' identified by 'zabbix_proxy';
Query OK, 0 rows affected (0.00 sec)
#导入数据
[root@sh-proxy ~]# cd /usr/share/doc/zabbix-proxy-mysql-4.0.16/
[root@sh-proxy /usr/share/doc/zabbix-proxy-mysql-4.0.16]# ls
AUTHORS ChangeLog COPYING NEWS README schema.sql.gz
[root@sh-proxy /usr/share/doc/zabbix-proxy-mysql-4.0.16]# zcat schema.sql.gz |mysql -uzabbix_proxy -pzabbix_proxy zabbix_proxy
#配置proxy连接数据库
[root@sh-proxy ~]# grep '^[a-Z]' /etc/zabbix/zabbix_proxy.conf
Server=10.0.0.71
Hostname=sh-proxy #与主机名保持一致
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
SocketDir=/var/run/zabbix
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=zabbix_proxy
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
#启动zabbix-agent
[root@sh-proxy ~]# systemctl start zabbix-proxy.service
[root@sh-proxy ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 7959/mysqld
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7127/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 7224/master
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 8201/zabbix_proxy
tcp6 0 0 :::22 :::* LISTEN 7127/sshd
tcp6 0 0 ::1:25 :::* LISTEN 7224/master
tcp6 0 0 :::10051 :::*
2.server端 Web 配置
1)创建一个agent代理程序;进入:配置 -> agent代理程序 -> 创建代理
agnet代理名称(必须是zabbix-proxy上面的主机名),模式根据配置里面来定,代理地址(zabbix-proxy上面能和zabbix-server通信的地址)
2)配置zabbix-agent
[root@zabbix-agent ~]# grep '^[a-Z]' /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=172.16.1.8
ServerActive=172.16.1.8
Hostname=172.16.1.7
Include=/etc/zabbix/zabbix_agentd.d/*.conf
3)添加主机
自动添加
手动添加
注意:根据实际需求配置数据同步和配置同步的频率,由于地域和网络的问题,配置有不同,自行配置即可。