美好的一天!
我知道Zabbix可以通过两种方式监控Linux机器上的任何服务:
proc.num[<processname>]
这完全违反直觉,因为我可以使用相同的可执行文件名生成进程,并且它们会欺骗Zabbix。我更喜欢使用标准service <servicename> status
或systemctl status name.service
工具。但除了system.run[cmd]
您能否帮我编写用于监控特定服务状态的模板。我们想使用不同的操作系统,如Centos 7和Ubuntu 14.04和16.04发行版。遗憾的是service <servicename> status
在列出的操作系统中完全不同。
答案 0 :(得分:3)
您还可以在zabbix_agentd.conf中添加以下UserParameters来监视systemd系统中的服务状态。对于非systemd,OS并不真正监视服务状态,各种bash脚本“status”参数通常不可靠。
UserParameter=systemd.unit.is-active[*],systemctl is-active --quiet '$1' && echo 1 || echo 0
UserParameter=systemd.unit.is-failed[*],systemctl is-failed --quiet '$1' && echo 1 || echo 0
UserParameter=systemd.unit.is-enabled[*],systemctl is-enabled --quiet '$1' && echo 1 || echo 0
然后,例如对于sshd status,使用如下键创建项目:
systemd.unit.is-active[sshd]
答案 1 :(得分:2)
如果Linux服务由# Check the physical disk memory 128 MB and free disk 256 MB
- name: check the physical memory
command: vmstat -s
register: phy_mem
(Centos 7 +,Ubuntu 16 +,...)管理,那么您可以使用https://github.com/cavaliercoder/zabbix-module-systemd。它使用标准systemd D-Bus communication - 这是systemd
所做的内容。
答案 2 :(得分:0)
对于centos 6可以做到:
UserParameter=check_service_status_asterisk,sudo service asterisk status 2> /dev/null | grep -q "is running";echo $?
对于centos 7或类似版本,可以使用以下方法创建:
UserParameter=check_service_status_grafana,systemctl status grafana-server 2> /dev/null |sed -n 3p |grep -q "running";echo $?
或
UserParameter=check_service_status[*],systemctl status $1 2> /dev/null |sed -n 3p |grep -q "running";echo $?