千家信息网

zabbix如何监控docker容器状态

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要为大家展示了"zabbix如何监控docker容器状态",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"zabbix如何监控docker容器状态"
千家信息网最后更新 2025年12月02日zabbix如何监控docker容器状态

这篇文章主要为大家展示了"zabbix如何监控docker容器状态",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"zabbix如何监控docker容器状态"这篇文章吧。

首选,zabbix_agentd 配置 vim /usr/local/zabbix/etc/zabbix_agentd.conf

UserParameter=docker.discovery,/usr/local/zabbix/script/docker.pyUserParameter=docker.[*],/usr/local/zabbix/script/docker.py $1 $2

下面是docker.py 脚本,采用自动发现规则来发现容器,然后指定容器获取状态信息

#!/usr/bin/pythonimport sysimport osimport jsondef discover(): d = {} d['data'] = [] with os.popen("docker ps -a --format {{.Names}}") as pipe:  for line in pipe:   info = {}   info['{#CONTAINERNAME}'] = line.replace("\n","")   d['data'].append(info) print json.dumps(d)def status(name,action): if action == "ping":  cmd = 'docker inspect --format="{{.State.Running}}" %s' %name  result = os.popen(cmd).read().replace("\n","")  if result == "true":   print 1  else:   print 0 else:  cmd = 'docker stats %s --no-stream --format "{{.%s}}"' % (name,action)  result = os.popen(cmd).read().replace("\n","")  if "%" in result:   print float(result.replace("%",""))  else:   print resultif __name__ == '__main__':  try:    name, action = sys.argv[1], sys.argv[2]    status(name,action)  except IndexError:    discover()

这里说一下自动发现规则的坑。。。我被坑了好久才找出来.....一是必须返回json格式内容,二是 info['{#CONTAINERNAME}' ] 这个key一定要这么写{#CONTAINERNAME}......

返回结果如下,一定要是这样的层级关系....

{"data": [{"{#CONTAINERNAME}": "node-3"}, {"{#CONTAINERNAME}": "node-2"}, {"{#CONTAINERNAME}": "node-1"}, {"{#CONTAINERNAME}": "web"}, {"{#CONTAINERNAME}": "cadvisor"}, {"{#CONTAINERNAME}": "updatol"}, {"{#CONTAINERNAME}": "research"}, {"{#CONTAINERNAME}": "services"}, {"{#CONTAINERNAME}": "data"}, {"{#CONTAINERNAME}": "rabbitmq"}, {"{#CONTAINERNAME}": "redis"}, {"{#CONTAINERNAME}": "mysql"}, {"{#CONTAINERNAME}": "ssdb"}]}

另外那个函数的很简单了,就是调用docker 命令在获取数据的。

自动发现规则呢 也就是这样

只监控的这几个状态,以及还有一个触发器就是ping 来检测当前这个容器状态是否运行,如果不是就报警。

模板如下

 3.2 2018-06-04T04:12:36Z      Templates       

修改Zabbix_agentd 配置,docker.py脚本放在指定路径下,不要忘了给权限,导入模板,能获取数据就没问题。获取不了的,可以zabbix_get 来调试 找到问题出在哪去解决。

以上是"zabbix如何监控docker容器状态"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0