本文共 3672 字,大约阅读时间需要 12 分钟。
Zabbix proxy是在大规模分布式监控场景中,采用的一种用以分担server端压力的分层结构,Proxy只负责一定区域内的数据采集工作,可以代替zabbix server检索客户端的数据,然后定期将数据一次性发送给server,极大的减轻了server的负载压力,使得可以支持更大规模的监控需求,非常简便的实现了集中式、分布式监控。
Zabbix主要由zabbix server和zabbix agent组成
而数据的采集方式除了在被监控主机上部署agent程序外,还可通过ICMP/IPMI/SNMP等协议对网络设备进行监控,同时配置web监控方式可以监控web页面的下载速率和响应时间等重要参数
zabbix proxy 使用场景:
环境说明(企业中):
zabbix-server 处于外网,zabbix-agent 处于各个地方的内网,所有内网都是互通的。其中有一台内网服务器既可以和内网通信,也可以和外网进行通信。
通过zabbix proxy的搭建,zabbix server可以远程从proxy获取到数据,这里的环境相当于zabbix server具有一个公网ip地址,zabbix agent只具有内网地址,zabbix proxy具有外网地址和内网地址,搭建zabbix proxy使zabbix server能通过proxy远程获取到zabbix agent的数据
图来自网络
zabbix proxy 仅仅需要一条 tcp 连接到 zabbix server,所以防火墙上仅仅需要加上一条规则即可
zabbix proxy 数据库必须和 server 分开,否则数据会被破坏
proxy 收集到数据之后,首先将数据缓存在本地,然后在一定的时间之后传递给 zabbixserver,这样就不会因为服务器的任何临时通信问题而丢失数据。这个时间由 proxy配置文件中参数 ProxyLocalBuffer 和 ProxyOfflineBuffer 决定
Zabbix server数据库直接更新,最新配置的proxy可能会比Zabbix server新,而Zabbix server的配置由于 CacheUpdateFrequency 的原因而无法快速更新。因此,proxy收集发送Zabbix server数据可能会被忽略
zabbix proxy 是一个数据收集器,它不计算触发器、不处理事件、不发送报警
二:Zabbix proxy 分布式监控的部署
主机 | 服务 |
---|---|
server1 | zabbix-server,zabbix-agent |
server2 | zabbix-agent |
proxy | zabbix-proxy |
实验步骤如下所示:
前提:
因为我们这里的proxy是用原来的server3虚拟机,所以实验环境也是server3的,为了实验环境的纯净,我们做以下操作:
这里我还修改了主机名称:为了方便识别
[root@proxy mnt]# yum install -y zabbix-proxy-mysql-4.0.5-1.el7.x86_64.rpm fping-2.4b2-16.el6.x86_64.rpm [root@proxy mnt]# yum install -y mariadb-server.x86_64 [root@proxy mnt]#systemctl start mariadb.service [root@proxy mnt]#systemctl enable mariadb.service [root@proxy mnt]#systemctl status mariadb.service
对数据库进行配置
[root@proxy mnt]#mysql_secure_installation [root@proxy mnt]#mysql -pcreate database zabbix_proxy character set utf8 collate utf8_bin;grant all privileges on zabbix_.* to zabbix@localhost identified by 'westos';
导入数据库
root@proxy mnt]# zcat /usr/share/doc/zabbix-proxy-mysql-4.0.5/schema.sql.gz | mysql -p zabbix_proxy #这里的密码是zabbix_proxy用户的密码
第二步:配置zabbix-proxy
[root@proxy mnt]# vim /etc/zabbix/zabbix_proxy.conf 30 Server=172.25.27.139 ServerPort=10051 49 Hostname=proxy173 DBName=zabbix_proxy188 DBUser=zabbix196 DBPassword=westos
在浏览器设置agent代理
proxy启动服务:并查看日志
[root@proxy mnt]# systemctl start zabbix-proxy.service [root@proxy mnt]# systemctl enable zabbix-proxy.service [root@proxy mnt]# cat /var/log/zabbix/zabbix_proxy.log #可以接受到data来自172.25.27.1
server1查看日志
[root@server1 ~]# cat /var/log/zabbix/zabbix_server.log #可以发送data给proxy给172.25.27.3
查看代理服务:
第三步:给server2设置代理
在浏览器设置:
root@server2 ~]# vim /etc/zabbix/zabbix_agentd.confServer=172.25.27.3ServerActive=172.25.27.3[root@server2 ~]# systemctl restart zabbix-agent.service [root@server2 ~]# cat /var/log/zabbix/zabbix_agentd.log #发现有错误proxy172.25.27.3找不到server2
server1
root@server1 ~]# zabbix_server -R config_cache_reload zabbix_server [5993]: command sent successfully[root@server1 ~]# cat /var/log/zabbix/zabbix_server.log #强制加载
proxy
[root@proxy mnt]# systemctl restart zabbix-proxy.service [root@proxy mnt]# cat /var/log/zabbix/zabbix_proxy.log 能够检测到server2
server2:
[root@server2 ~]# systemctl restart zabbix-agent.service [root@server2 ~]# cat /var/log/zabbix/zabbix_agentd.log #成功
在浏览器刷新之后发现JMX没启用,这是因为我们的代理配置文件的没有设置这个监控
第四步:proy设置监控java模块
[root@proxy mnt]# vim /etc/zabbix/zabbix_proxy.conf 329 JavaGateway=172.25.27.1337 JavaGatewayPort=10052345 StartJavaPollers=5[root@proxy mnt]# systemctl restart zabbix-proxy.service [root@proxy mnt]# cat /var/log/zabbix/zabbix_proxy.log
ps ax查看一下是否有五个java进程
此时去浏览器,发现JMX启用了
转载地址:http://aljvb.baihongyu.com/