Zabbix的分布式监控
基础zabbix架构
分布式架构
Zabbix通过Zabbix proxies为IT基础设施提供有效和可用的分布式监控
代理(proxy)可用于代替Zabbix server本地收集数据,然后将数据报告给服务器。
zabbix-proxy的特征
当选择使用/不使用proxy时,必须考虑几个注意事项。
Proxy | |
---|---|
轻量级(Lightweight) | Yes |
图形界面(GUI) | No |
独立工作(Works independently) | Yes |
易于维护(Easy maintenance) | Yes |
*自动生成数据库(Automatic DB creation)*1 | Yes |
本地管理(Local administration) | No |
准备嵌入式硬件 (Ready for embedded hardware) | Yes |
单向TCP连接(One way TCP connections) | Yes |
集中配置(Centralised configuration) | Yes |
生成通知(Generates notifications) | No |
概述
zabbix proxy 使用场景: 1.监控远程区域设备 2.监控本地网络不稳定区域 3.当 zabbix 监控上千设备时,使用它来减轻 server 的压力 4.简化分布式监控的维护
zabbix proxy 仅仅需要一条 tcp 连接到 zabbix server,所以防火墙上仅仅需要加上一条规则即可。
proxy 收集到数据之后,首先将数据缓存在本地,然后在一定得时间之后传递给 zabbix server,这样就不会因为服务器的任何临时通信问题而丢失数据。这个时间由 proxy配置文件中参数 ProxyLocalBuffer 和 ProxyOfflineBuffer 决定。
注意:1.zabbix proxy 数据库必须和 server 分开,否则数据会被破坏。
2.从Zabbix server数据库直接更新最新配置的proxy可能会比Zabbix server新,而Zabbix server的配置由于 CacheUpdateFrequency 的原因而无法快速更新。因此,proxy收集发送Zabbix server数据可能会被忽略。
功能 | proxy支持(yes/no) | |
项目(Items) | ||
Zabbix agent checks | Yes | |
Zabbix agent checks (active) | Yes 1 | |
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 |
部署zabbix-proxy
环境准备
主机名 | WanIP | LanIP | 角色 | 安装应用 |
---|---|---|---|---|
zabbix | 10.0.0.71 | 172.16.1.71 | zabbix-server | zabbix-server、zabbix-agent、zabbix-get |
db04 | 10.0.0.54 | 172.16.1.54 | zabbix-proxy | zabbix-porxy、MySQL5.7 |
web02 | 10.0.0.8 | 172.16.1.8 | zabbix-agent | zabbix-agent、zabbix-java-gateway |
db01 | 10.0.0.51 | 172.16.1.51 | zabbix-server的数据库 | MySQL5.7 |
安装zabbix-proxy
## 1.使用yum安装
[root@db04 ~]# yum install -y https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-proxy-mysql-5.0.26-1.el7.x86_64.rpm
## 2.配置数据库
[root@db04 ~]# mysql -uroot -p
Enter password:
mysql> create database zabbix_proxy50 charset utf8;
mysql> grant all on zabbix_proxy50.* to proxy@'localhost' identified by '123';
## 3.导入数据
[root@db04 ~]# zcat /usr/share/doc/zabbix-proxy-mysql-5.0.26/schema.sql.gz|mysql -uproxy -p123 zabbix_proxy50
## 4.修改zabbix-proxy配置文件
[root@db04 ~]# vim /etc/zabbix/zabbix_proxy.conf
Server=172.16.1.71
Hostname=Zabbix proxy
DBHost=localhost
DBName=zabbix_proxy50
DBUser=proxy
DBPassword=123
DBSocket=/tmp/mysql.sock
## 5.启动并加入开机自启
[root@db01 ~]# systemctl start zabbix-proxy
[root@db01 ~]# systemctl enable zabbix-proxy
zabbix-proxy 连接数据库时,找不到 socket文件
修改zabbix-proxy配置文件
DBSocket=/tmp/mysql.sock(你的数据库socket文件路径)
修改zabbix-agent配置
[root@web02 ~]# vim /etc/zabbix/zabbix_agentd.conf
ServerActive=172.16.1.54
Server=172.16.1.54
[root@web02 ~]# systemctl restart zabbix-agent
因为现在web01的Server指向zabbix-proxy
zabbix-server无法直接获取到web01的数据
页面配置
[root@db04 ~]# vim /etc/hosts
172.16.1.7 web01
172.16.1.51 proxy
测试邮件是否能发送报错与恢复
[root@web02 ~]# systemctl stop sshd.service