一、说明
zabbix监控搭建完毕之后我们可以发现zabbix自己带了很多定义好的监控项,但是这可能无法满足我们很多需求。这时我们就很需要自定义监控项,利用自己写好的针对不同功能的脚本,对需要的指标进行监控。我们也可以写脚本查询一些数据,通过告警的方式收到这些数据。
这里我的需求就是想监控主机间的ping是否可达,如不可达进行告警。
二、agent端操作
把脚本放在指定目录下
mkdir -pv /root/zzx
chmod 777 /root/zzx
编写脚本
vi /root/zzx/pingzzx.sh
#!/bin/bash
hostip=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v 201|grep -v inet6|awk '{print $2}'|tr
-d "addr:"`
HLIST=$(cat /root/zzx/ipadds.txt)
for IP in $HLIST
do
ping -c 3 -i 0.2 -W 3 $IP &> /dev/null
if [ $? -ne 0 ] ; then
echo "$hostip to $IP is Off-line."
fi
done
这里我的脚本名为pingzzx.sh,将本机需要ping的ip放入ipadds.txt中。
别忘了修改权限,防止zabbix没有权限
chmod 777 /root/zzx/*
修改zabbix_agentd.conf
egrep -v "(^#|^$)" /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
EnableRemoteCommands=1
Server=192.168.6.2
ServerActive=192.168.6.2
Hostname=sblx01
Timeout=30
AllowRoot=1
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1
UserParameter=checkzzx,/root/zzx/pingzzx.sh
需要注意,UserParameter参数为用户自定义的脚本,逗号前的参数为自定义的监控项名,这里的checkzzx后面没有[*],如果你的脚本需要有参数传入,需要将中括号和星加到后面。记住这个名字,在web端配置时需要用到,逗号后的为存放脚本的位置。
然后如果脚本执行需要一点时间的话,需要把agent端和server端的配置文件进行修改,我把Timeout值修改为30,方便ping命令的执行。
重启zabbix-agent
systemctl restart zabbix-agent
如果这里报错,可以查看日志或者查看系统内的报错自行百度,都会有解决办法。
然后我们在zabbix-server端进行测试,查看此监控项是否会有结果返回。
我们利用的时zabbix_get命令,如果没有请yum安装zabbix-get,yum源跟安装zabbix的yum源相同即可。
zabbix_get -s 192.168.6.3 -p 10050 -k "checkzzx"
192.168.7.3 to 192.168.7.2 is Off-line.
三、web端配置
web端需要自己定义模板和模板内的内容,然后再将主机进行关联。
创建模板
配置–>模块–>创建模板–>填写模板名称–>放入组–>添加,其他不用配置。
添加监控项
配置–>模板–>checkzzx–>监控项 -->创建监控项–>名称–>键值(你在agent配置的UserParameter里的值) -->信息类型"文本"(自己选择需要的类型)–>添加
创建图形:
配置–>模板–>checkzzx -->图形 -->创建图形 -->名称 -->选择之前的监控项 -->添加
添加触发器
如需要告警就需要添加触发器,利用zabbix判断返回的结果是否正常,不正常则告警
配置–>模板–>checkzzx -->触发器 -->创建触发器 -->名称 -->表达式(zabbix提供了表达式构造器,自己研究一下就好) -->添加
四、验证数据
先添加模板到主机上
检测–>最新数据–>进行筛选–>查看历史
如果无法查找到,可能是zabbix对该模板有报错,我们查看主机的监控项
配置–>主机–>找到需要查看的主机–>监控项–>筛选出自己需要的监控项–>查看状态是否为已启用
如果有报错可能为超时或者其他的请自行百度。
然后我们改写ipadds.txt故意让zabbix告警进行测试
告警短信
Problem started at 21:29:00 on 2022.04.09
Problem name: checkpingfail
Host: sblx02
Severity: Disaster
再把文件恢复,收到恢复短信
Problem has been resolved at 21:30:57 on 2022.04.09
Problem name: checkpingfail
Host: sblx02
Severity: Disaster
然后再看一下历史数据是否都收集到了。
到这我们的模板就设置完成了,也可以成功告警了。