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 docker-status docker-status Templates docker_test docker.discovery 0 docker.discovery 60 0 0 0 0 0 0 {#CONTAINERNAME} @ CONTAINER NAME 8 A 30 Container {#CONTAINERNAME} Diskio usage: 0 0 docker.[{#CONTAINERNAME} ,BlockIO] 60 90 0 0 1 0 0 0 0 1 0 0 0 docker_test Container{#CONTAINERNAME} CPU usage: 0 0 docker.[{#CONTAINERNAME},CPUPerc] 60 90 365 0 0 % 0 0 0 0 1 0 0 0 docker_test Container {#CONTAINERNAME} mem usage: 0 0 docker.[{#CONTAINERNAME},MemPerc] 60 90 365 0 0 % 0 0 0 0 1 0 0 0 docker_test Container {#CONTAINERNAME} NETio usage: 0 0 docker.[{#CONTAINERNAME},NetIO] 60 90 0 0 1 0 0 0 0 1 0 0 0 docker_test Container{#CONTAINERNAME} is_run : 0 0 docker.[{#CONTAINERNAME} ,ping] 30 90 365 0 3 0 0 0 0 1 0 0 0 docker_test {docker-status:docker.[{#CONTAINERNAME} ,ping].last()}=0 0 docker_{#CONTAINERNAME}_down 0 0 5 0 0
修改Zabbix_agentd 配置,docker.py脚本放在指定路径下,不要忘了给权限,导入模板,能获取数据就没问题。获取不了的,可以zabbix_get 来调试 找到问题出在哪去解决。
以上是"zabbix如何监控docker容器状态"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
容器
状态
监控
内容
篇文章
规则
就是
数据
模板
脚本
问题
学习
帮助
配置
也就是
信息
函数
命令
层级
易懂
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器管理口ip地址
科技互联网腾讯
虚拟主机创建数据库
萤石摄像头网络安全吗
网络安全班会心得反思
小g服务器是什么情况
网络安全工作缺乏
云收网络技术有限公司电话
广东网络技术诚信服务
速达数据库怎样启动
网络安全手抄报有字的好看
速达软件数据库注册表删除
外包软件开发注意什么
怎么连接非本机数据库
挑选网络技术服务价目表
马松宇网络安全冠军
网络安全宣传风席卷全国
班会课网络安全设计理念
教学大纲数据库系统原理
数据库与教育
软件开发需要那些语言
asp查询数据库转换
时间 服务器
网络安全常识及策略
网络安全手抄报有字的好看
如何拿到软件的数据库
搞软件开发的算白领吗
传奇物品数据库是哪个文件夹
原神不同服务器之间能联机吗
和平精英网络安全加速