Zabbix proxy
简介
- zabbix proxy可以代替zabbix server检索客户端的数据,然后把数据汇报给zabbix server,并且在一定程度上分担了zabbix server的压力.zabbix proxy可以非常简便的实现了集中式、分布式监控。
- zabbix proxy仅仅需要一条tcp连接到zabbix server,所以防火墙上仅仅需要加上一条规则即可.zabbix proxy数据库必须和server分开,否则数据会被破坏,毕竟这两个数据库的表大部分都相同。总之记住,数据库分开即可。
- proxy收集到数据之后,首先将数据缓存在本地,然后在一定得时间之后传递给zabbix server.这个时间由proxy配置文件中参数ProxyLocalBuffer and ProxyOfflineBuffer决定。
- zabbix proxy是一个数据收集器,它不计算触发器、不处理事件、不发送报警。
使用场景
- 监控远程区域设备
- 监控本地网络不稳定区域
- 当zabbix监控上千设备时,使用它来减轻server的压力
- 简化zabbix的维护
实验环境
主机(IP) | 服务 |
---|---|
server1(172.25.24.1) | zabbix server |
server2(172.25.24.2) | zabbix agent |
server3(172.25.24.3) | zabbix proxy |
zabbix proxy的部署
server3
- 关闭并将zabbix agent服务设置开机不启动
[root@server3 ~]# systemctl stop zabbix-agent.service
[root@server3 ~]# systemctl disable zabbix-agent.service
[root@server3 ~]# systemctl status zabbix-agent.service
- 安装zabbix proxy,并修改主机名方便我们实验,修改三台主机的解析
[root@server3 ~]# yum install zabbix-proxy-mysql.x86_64 -y
[root@server3 ~]# hostnamectl set-hostname proxy
[root@server3 ~]# hostname
server1 2 3同时加入解析:
[root@proxy ~]# vim /etc/hosts
172.25.24.3 server3 proxy
- 下载mariadb,并安全初始化,新建数据库zabbix_proxy,并授权,导入数据库。
[root@proxy ~]# yum install mariadb-server -y
[root@proxy ~]# systemctl start mariadb
[root@proxy ~]# systemctl enable mariadb.service
[root@proxy ~]# mysql_secure_installation
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'westos';
[root@proxy ~]# zcat /usr/share/doc/zabbix-proxy-mysql-4.0.5/schema.sql.gz | mysql -p zabbix_proxy
- 修改配置文件的4处。
[root@proxy ~]# vim /etc/zabbix/zabbix_proxy.conf
30 Server=172.25.24.1 #zabbix server 的ip
39 ServerPort=10051 #打开端口
49 Hostname=proxy #主机名
196 DBPassword=westos #zabbix proxy数据库密码
web界面的设置
- web界面删除server3 ,添加代理 然后再开启服务zabbix proxy。
- 创建代理
- 代理地址为server proxy的ip。
- 开启服务,并查看日志。
[root@proxy ~]# systemctl start zabbix-proxy
[root@proxy ~]# systemctl enable zabbix-proxy
[root@proxy ~]# cat /var/log/zabbix/zabbix_proxy.log
- 在server1主机查看日志,发现配置数据已发送成功。
[root@server1 bin]# cat /var/log/zabbix/zabbix_server.log
server2
- 修改server2为由agent代理监测。
- 修改配置文件,并查看server2的日志。
[root@server2 bin]# vim /etc/zabbix/zabbix_agentd.conf
[root@server2 bin]# systemctl restart zabbix-agent
98 Server=172.25.24.3 #将主动模式和被动模式采集到的数据都发给server3代理。
139 ServerActive=172.25.24.3
[root@server2 bin]# cat /var/log/zabbix/zabbix_agentd.log
- server2的日志如上,我们需要在server1主机重载配置缓存。
[root@server1 bin]# zabbix_server -R config_cache_reload
[root@server1 bin]# cat /var/log/zabbix/zabbix_server.log
- server3 重启服务,继续查看日志。
[root@proxy ~]# systemctl restart zabbix-proxy
[root@proxy ~]# cat /var/log/zabbix/zabbix_proxy.log
- web图形界面查看,zabbix proxy配置成功。
- 但是此时JMX监控tomcat又不可用了,这是因为在zabbix server主机(server1)配置了zabbix javagateay,所以我们需要在zabbix proxy主机上也作相应的配置。设置完成查看日志。
[root@proxy ~]# vim /etc/zabbix/zabbix_proxy.conf
329 JavaGateway=172.25.24.1
337 JavaGatewayPort=10052
345 StartJavaPollers=5
[root@proxy ~]# systemctl restart zabbix-proxy
[root@proxy ~]# cat /var/log/zabbix/zabbix_proxy.log
- 在web界面查看。
zabbix总结
-
报警的过程:
zabbix采集方式 (4种,ZBX,SNMP,JMX,IPMI) —> pollers 进程 —> items 监控项 —> triggers 触发器 —> events —> actions 由触发器决定相应的要采取的动作。 —> alter 第三方的媒介。 -
监控的流程:数据采集(agent) --> 数据存储 (db server) --> 数据展示(UI界面)
-
agent默认支持主被动模式:server 被动 server-active 主动。
-
从数据库的层面,当agent增加的时候,db数据库(存储)的压力会增大,解决办法就是固态硬盘或者分布式的数据库(tidb 替换mariadb,分库分表所以tidb会提供原生地mysql数据库引擎的支持,端口为4000)。
-
proxy:扩展架构,简化了监控结构,将监控架构变为分布式的,proxy在这里重当了server的角色。proxy的db信息时从server端复制过去的,是为了存储数据,定义监控项。
-
zabbix的特点:原生的分布式监控平台。
数据采集 :一般为c/s结构。周期性的调用采集。
有4种主流的采集方式:数据采集–>通过轮询器(pollers进程)来调用监控项(items),监控项去采集后端的主机(监控项(items)会通过模板(template)主机可以自动连接模板)–>tiggers(触发器,有时需要自己设置定义),触发之后生成事件(events)事件是执行action动作的依据,执行的话会发报警alter,报警回调用媒介(第三方 eg:云告警) -
模板中不只有监控项还有图形,触发器等。把共同的东西放入模板中。主机可以加入主机群组中。
-
注意:主机有维护中的状态,比如:换硬盘的时候,会误报警,所以要设置维护状态。