zabbix服务自定义监控
我们此次准备的被监控端主机为192.168.198.115(node3)这台主机,监控主机为192.168.198.131(RHEL8)这台主机
注:我们的自定义监控得出内容是写在被监控主机的zabbix_agentd.conf这个配置文件中的,所以我们都是在被监控端进行配置
1.自定义监控进程
在被监控端开启自定义监控功能[root@node3 ~]# cd /usr/local/etc/
[root@node3 etc]# ls
zabbix_agentd.conf zabbix_agentd.conf.d
[root@node3 etc]# vim zabbix_agentd.conf
[root@node3 etc]# grep -A2 'UnsafeUserParameters=0' zabbix_agentd.conf
#UnsafeUserParameters=0
UnsafeUserParameters=1
//同时,配置文件中也告诉了我们使用自定义监控的格式,我们获取值的方式是通过脚本来实现的
[root@node3 etc]# grep -A4 'Option: UserParameter$' zabbix_agentd.conf
### Option: UserParameter
# User-defined parameter to monitor. There can be several user-defined parameters.
# Format: UserParameter=<key>,<shell command>
# See 'zabbix_agentd' directory for examples.
1.2编辑一个脚本文件,用于获取服务的进程号
脚本默认放在同一个地方,此处我们创建一个专门用于放置脚本文件的目录,放置到/script,不要放在用户家目录下面,防止后续出现权限受限的问题
[root@node3 ~]# mkdir /script
[root@node3 ~]# cd /script
[root@node3 script]# vim showprocess.sh
[root@node3 script]# cat showprocess.sh
process=$(ps -ef | grep "$1" | grep -Ev "grep|$0" | wc -l)
if [ $process -eq 0 ];then
echo "1"
else
echo "0"
fi
[root@node3 script]# chmod +x showprocess.sh
//执行脚本进行测试
[root@node3 script]# ./showprocess.sh postfix
0
[root@node3 script]# ./showprocess.sh zabbix_server
1
//进入配置文件,创建自动监控任务
[root@node3 ~]# cd /usr/local/etc/
[root@node3 etc]# ls
zabbix_agentd.conf zabbix_agentd.conf.d
[root@node3 etc]# tail -1 zabbix_agentd.conf
UserParameter=show_process[*],/bin/bash /script/showprocess.sh $1
//因为我们修改了配置文件,所以需要重启服务,重新读取配置文件内容
[root@node3 etc]# systemctl restart zabbix_agentd.service
//创建自定义监控任务后,我们需要在server端去测试一下是否能够接受到被监控端的值
[root@RHEL8 ~]# zabbix_get -s 192.168.198.115 -k show_process['postfix']
0 //成功接收到值
创建监控项