教Zabbix监控服务状态

时间:2017-04-26 07:59:52

标签: service zabbix

美好的一天!

我知道Zabbix可以通过两种方式监控Linux机器上的任何服务:

  • 扫描服务绑定的特定tcp或udp端口
  • 或使用proc.num[<processname>]
  • 计算服务流程

这完全违反直觉,因为我可以使用相同的可执行文件名生成进程,并且它们会欺骗Zabbix。我更喜欢使用标准service <servicename> statussystemctl status name.service工具。但除了system.run[cmd]

之外,没有标准的方法可以从Zabbix中使用它

您能否帮我编写用于监控特定服务状态的模板。我们想使用不同的操作系统,如Centos 7和Ubuntu 14.04和16.04发行版。遗憾的是service <servicename> status在列出的操作系统中完全不同。

3 个答案:

答案 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 $?