一、概述
为什么需要自定义监控呢?
虽然zabbix已经给我们准备好了很多的模板,但是有的东西还是无法监控,这时候就要我们自定义监控了。
自定义监控的思路?
比如我们现在想要监控这个值,如下所示,模板里面并没有。
二、步骤
第一步:我们首先要把需要的值取出来
iostat | awk '/^sda/{print $2}' 4.11
第二步:在被监控端增加增加监控项
[root@web01 ~]#yum -y install zabbix-agent
[root@web01 ~]#systemctl start zabbix-agent
[root@web01 ~]# systemctl enable zabbx-agent
[root@web01 ~]# vim /etc/zabbix/zabbix_agentd.conf Format: UserParameter=<key>,<shell command> #这就是格式 Include=/etc/zabbix/zabbix_agentd.d/*.conf
Server 192.168.80.22 #修改这一处即可,这时的IP是zabbix端的IP,而不是被监控端的,就是告诉被监控端,把数据交给谁。
[root@web01 ~]# vim /etc/zabbix/zabbix_agentd.d/iotop.conf UserParameter=iotop,iostat | awk '/^sda/{print $2}'
[root@web01 ~]# systemctl restart zabbix-agent #重启 [root@web01 ~]# zabbix_agentd -p | grep iotop #验证是否生效 iotop [t|3.96]
第三步:在zabbix-server上验证zabbix-agent是否有对应的监控项
[root@zabbix ~]# yum -y install zabbix-get [root@zabbix ~]# zabbix_get -s 192.168.80.240 -p10050 -k iotop 3.91
第四步:在zabbix-web界面进行关联对应的主机
单位和更新时间随便写,单位可以自定义,写”个“,”帧“都可以,没问题。
更新时间就是多长时间刷新一次。
历史保留时长不要搞太长,动不动就很长时间,如果着急取一个值,但是数据库满了,数据放不进进去了,web界面也无法显示,到时候干瞪眼!!
这个查看值值得说一下:
错误总结
问题一:
后来再复现这个实验时出了问题,什么问题呢?zabbix通过zabbix_get 命令控测被监控端老是报错:
Check access restrictions in Zabbix agent configuration
检查过程当中也没有发现什么错误,到最后在agent端上看日志时发现了这么一条:
22640:20191230:111447.722 failed to accept an incoming connection: connection from "192.168.80.173" rejected, allowed hosts: "192.168.80.22"
原来代理仅允许80.22访问,而zabbix有两个网卡,一个网卡是80.22另一个网卡是80.173,zabbix探测agent的时候是通过80.173网卡过去的,结果被agent端给拒绝了,其实也很好解决这个问题,在zabbix把带有173地址的那个网卡在down了就可以了,怎么down呢?ifconfig eth1 down。
问题2:
在配置agent代理时,我们要进入agent的配置文件设置ansible-server的IP地址,原本以为这个地址的意思是将收集好的信息交给哪台主机?后来通过查看日志之后发现不是这样,server的意思是我只允许哪台服务器从我这里面通过zabbix协议获取信息,默认的日志地址:var/log/zabbix/zabbix_agentd.log ,这同时也说明了为什么只有zabbix的服务端才能使用zabbix-get命令。