首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >教导Zabbix监控服务状态

教导Zabbix监控服务状态
EN

Stack Overflow用户
提问于 2017-04-26 15:59:52
回答 3查看 11.4K关注 0票数 8

我知道Zabbix可以通过两个选项监控Linux机器上的任何服务:

  • 扫描绑定服务的特定tcp或udp端口
  • 或对服务进程进行计数proc.num[]

这完全是违反直觉的,因为我可以生成具有相同可执行文件名称的进程,而它们会欺骗Zabbix。我更喜欢使用标准的service status或者systemctl status name.service工具。但是在Zabbix中没有使用它的标准方法,除了system.run[cmd]

您可以帮助我编写用于监控特定服务状态的模板吗?我们希望使用不同的OSes,比如CentOS7和Ubuntu14.04和16.04发行版。很遗憾,但是service status在列出的操作系统中是完全不同的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-26 22:04:13

如果Linux服务由systemd(Centos 7+,Ubuntu 16+,...),然后你就可以使用https://github.com/cavaliercoder/zabbix-module-systemd..。它使用标准的 systemd D-Bus 通信——这就是systemctl在幕后所做的。

票数 2
EN

Stack Overflow用户

发布于 2018-06-12 19:24:17

您还可以在zabbix中添加以下UserParameters_用于监视systemd系统中的服务状态的agentd.conf。对于非systemd操作系统并不真正监控服务状态,各种bash脚本的" status“参数通常是不可靠的。

代码语言:javascript
复制
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状态,使用如下键创建一个项:

代码语言:js
复制
systemd.unit.is-active[sshd]
票数 13
EN

Stack Overflow用户

发布于 2020-07-02 12:06:06

对于centos 6,可以这样做:

代码语言:js
复制
UserParameter=check_service_status_asterisk,sudo service asterisk status 2> /dev/null | grep -q "is running";echo $?

对于centos 7或类似版本,可以使用以下命令创建:

代码语言:js
复制
UserParameter=check_service_status_grafana,systemctl status grafana-server 2> /dev/null |sed -n 3p |grep -q "running";echo $?

或者

代码语言:js
复制
UserParameter=check_service_status[*],systemctl status $1 2> /dev/null |sed -n 3p |grep -q "running";echo $?
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43628225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档