如果你有几百上千台客户端的数据需要上报给zabbix服务端,即便是你做了主动注册,监控项目主动式,那服务端压力还是会很大,所以我们可以考虑zabbix分布式监控。
zabbix proxy可以代替zabbix server收集性能和可用性数据,然后把数据汇报给zabbix server,并且在一定程序分担zabbix server的压力。此外,当所有的agents和proxies报告给一个zabbix server并且所有的数据都集中收集时,使用proxy是实现集中式和分布式监控的最简单的方法。
zabbix使用场景
1、监控远程区域设备
2、监控本地网络不稳定区域
3、当zabbix监控上千台设备时,用它减轻server的压力
4、简化分布式监控的维护
zabbix功能详解
zabbix proxy是一个数据收集器,它不计算触发器、不处理事件,不发送报警,具体功能如下表
功能/项目 | proxy支持(yes/no) |
Zabbix agent checks | yes |
Zabbix agent checks(active) | yes |
Simple checks | yes |
Trapper items | yes |
SNMP checks | yes |
SNMP traps | yes |
IPMI checks | yes |
JMX checks | yes |
日志文件监控(Log file monitoring) | yes |
内部检查(Internal checks) | yes |
SSH checks | yes |
Telnet checks | yes |
外部检查(External checks) | yes |
内置web监控(Built-in web monitoring) | yes |
网络发现(Network discovery) | yes |
自动发现(Low-level discovery) | yes |
触发器计算(Calculating triggers) | no |
处理事件(Processing events) | no |
发送报警(Sending alerts) | no |
远程命令(Remote commands) | no |
1. 以下是Zabbix代理检查的不同类型的解释: 2. 3. 1. Zabbix代理检查(主动检查):Zabbix代理主动从Zabbix服务器获取配置,并执行指定的检查。它通过建立到服务器的连接,上传收集到的数据,并接收来自服务器的命令。 4. 5. 2. 简单检查:这是一种基本的检查类型,用于收集主机上的指标数据。代理程序会定期对指定的参数进行检查,并将结果报告给Zabbix服务器。 6. 7. 3. Trapper项:Trapper项允许用户将数据主动推送到Zabbix服务器。这些项不同于简单检查项,因为它们不是由代理程序主动发送的,而是由用户定义的脚本、应用程序或其他外部实体推送到代理程序,然后由代理程序发送给服务器。 8. 9. 4. SNMP检查:SNMP(Simple Network Management Protocol)检查是通过使用SNMP协议检索设备的信息和指标。Zabbix代理可以执行SNMP检查来监控网络设备、服务器等。 10. 11. 5. SNMP陷阱:SNMP陷阱是由网络设备主动发送的通知,用于报告设备状态的变化,例如故障、警报等。Zabbix代理可以接收和处理这些SNMP陷阱,并将其转发给Zabbix服务器进行相应的处理和记录。 12. 13. 6. IPMI检查:IPMI(Intelligent Platform Management Interface)检查用于监控和管理服务器硬件的接口。Zabbix代理可以执行IPMI检查来收集服务器的硬件数据,例如温度、风扇速度等。 14. 15. 7. JMX检查:JMX(Java Management Extensions)检查用于监控和管理Java应用程序。Zabbix代理可以执行JMX检查,通过连接到Java应用程序的JMX接口,收集和报告应用程序的性能和状态数据。
注意:zabbix proxy仅仅需要一条tcp链接到zabbix server,所以需要在zabbix server上添加一条规则即可。
zabbix proxy数据库必须和server分开,否则数据会被破坏。
zabbix proxy部署
将172.16.1.7 作为zabbix proxy服务端
1、安装zabbix proxy代理,导入proxy数据库
1. # 配置仓库 2. [root@Web01 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm 3. [root@Web01 ~]# yum clean all 4. 5. # 安装proxy代理 数据库 6. [root@Web01 ~]# yum -y install zabbix-proxy-mysql 7. [root@Web01 ~]# yum -y install mariadb-server 8. [root@Web01 ~]# systemctl enable --now mariadb 9. [root@Web01 ~]# mysql 10. ... 11. MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; 12. Query OK, 1 row affected (0.00 sec) 13. ... 14. MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; 15. ... 16. 17. # 将Zabbix代理的MySQL数据库架构文件(schema.sql.gz)导入到名为zabbix的MySQL数据库中 18. # 创建和初始化Zabbix代理所需的数据库表和结构 19. [root@Web01 ~]# zcat /usr/share/doc/zabbix-proxy-mysql-5.0.36/schema.sql.gz | mysql -uzabbix -pzabbix zabbix 20. 21. # 检查数据库导入是否正常 22. [root@Web01 ~]# mysql -uroot -e "use zabbix;show tables;" 23. +----------------------------+ 24. | Tables_in_zabbix | 25. +----------------------------+ 26. | acknowledges | 27. | actions | 28. | alerts | 29. | application_discovery | 30. | application_prototype | 31. | application_template | 32. | applications | 33. ......
2、修改zabbix proxy配置文件
1. [root@Web01 ~]# egrep '^[DH]|^Server' /etc/zabbix/zabbix_proxy.conf 2. Server=10.0.0.71 3. Hostname=sz_proxy 4. DBName=zabbix 5. DBUser=zabbix 6. DBPassword=zabbix
3、启动zabbix proxy代理
1. [root@Web01 ~]# systemctl start zabbix-proxy.service 2. [root@Web01 ~]# netstat -tnulp | grep 10051 3. tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 33809/zabbix_proxy 4. tcp6 0 0 :::10051 :::* LISTEN 33809/zabbix_proxy
4、配置客户端指向zabbix proxy
172.16.1.7 和 172.16.1.8 作为客户端测试
1. [root@Web01 ~]# egrep '^Server|^Hostname' /etc/zabbix/zabbix_agentd.conf 2. Server=172.16.1.7 3. ServerActive=172.16.1.7 4. Hostname=Web01 5. [root@Web01 ~]# systemctl restart zabbix-agent.service 6. 7. [root@Web02 ~]# egrep '^Server|^Hostname' /etc/zabbix/zabbix_agentd.conf 8. Server=172.16.1.7 9. ServerActive=172.16.1.7 10. Hostname=Web02 11. [root@Web02 ~]# systemctl restart zabbix-agent.service
5、server端添加主机
清空原监控客户端,停用自动注册,自动发现动作
添加agent代理程序
基于代理添加Web01主机
Web02主机操作与Web01一致
查看主机列表,均已添加完成,ZBX可用性还是灰色
但是我们的数据可以顺利拿到,并且是主动式
上面的操作主机是我手动添加的,用自动注册,自动发现也是可以的,在配置动作的时候选择相应的触发条件即可,里面有agent代理程序的类型。
我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!