目 录CONTENT

文章目录

zabbix 监控 docker容器状态

Seven
2021-09-15 / 0 评论 / 0 点赞 / 510 阅读 / 4243 字 / 正在检测是否收录...

PS:
以下操作都在zabbix_agent上操作

  1. 创建python脚本
    自动发现规则来发现容器,然后指定容器获取状态信息
    创建目录放置脚本
1 mkdir ‐p /data/zabbix/zabbix4.2/scripts
2 vim scripts/docker.py
3 #!/usr/bin/python
4 import sys
5 import os
6 import json
7
8 def discover():
9 d = {}
10 d['data'] = []
11 with os.popen("docker ps ‐a ‐‐format {{.Names}}") as pipe:
12 for line in pipe:
13 info = {}
14 info['{#CONTAINERNAME}'] = line.replace("\n","")
15 d['data'].append(info)
16
17 print json.dumps(d)
18
19 def status(name,action):
20 if action == "ping":
21 cmd = 'docker inspect ‐‐format="{{.State.Running}}" %s' %name
22 result = os.popen(cmd).read().replace("\n","")
23 if result == "true":
24 print 1
25 else:
26 print 0
27 else:
28 cmd = 'docker stats %s ‐‐no‐stream ‐‐format "{{.%s}}"' % (name,action)
29 result = os.popen(cmd).read().replace("\n","")
30 if "%" in result:
31 print float(result.replace("%",""))
32 else:
33 print result
34
35
36 if __name__ == '__main__':
37 try:
38 name, action = sys.argv[1], sys.argv[2]
39 status(name,action)
40 except IndexError:
41 discover()
  1. 创建KEY配置文件
    key配置文件放置zabbix_agentd.conf.d目录下
1 vim /data/zabbix/zabbix4.2/etc/zabbix_agentd.conf.d/docker.conf
2 UserParameter=docker.discovery,/data/zabbix/zabbix4.2/scripts/docker.py
3 UserParameter=docker.[*],/data/zabbix/zabbix4.2/scripts/docker.py $1 $2
  1. 修改配置文件
    开启KEY配置文件
1 vim /data/zabbix/zabbix4.2/etc/zabbix_agentd.conf
2 Include=/data/zabbix/zabbix4.2/etc/zabbix_agentd.conf.d/*.conf
  1. 进行本地测试
    zabbix服务端测试
    #查看容器为hpv的CPU使用率
1 /data/zabbix/zabbix/zabbix4.2/bin/zabbix_get ‐s 192.168.10.1 ‐k docker.[h
pv,CPUPerc]

#查看发现的容器

1 [root@centos6 zabbix4.2]# bin/zabbix_get ‐s 192.168.10.1 ‐k docker.discov
ery
2 {"data": [{"{#CONTAINERNAME}": "nexus"}, {"{#CONTAINERNAME}":
"recording"}, {"{#CONTAINERNAME}": "gitlab"}, {"{#CONTAINERNAME}": "hpv"}]}

#问题1

1 WARNING: Error loading config file: /root/.docker/config.json: stat /roo
t/.docker/config.json: permission denied

这是因为zabbix用户没有权限,而且根本也找不到/root/.docker/config.json
这个目录,所以修改zabbix_agent配置文件,允许agent以 root用户运行

1 vim /data/zabbix/zabbix4.2/etc/zabbix_agentd.conf
2 AllowRoot=1 # 0表示不允许,1表示允许,默认值为0

#问题2

1 get …… dial unix /var/run/docker.sock

因为docker权限问题

1 chmod ‐v a+rw /var/run/docker.sock
  1. 上传模板
    上传docker监控模板,让有容器的服务器关联模板
    服务器关联模板,会出现zabbixGlobal regular expression " CONTAINER
    NAME" does not exist,无法支持
    解决办法为清空模板自动发现的过滤器
  2. 后期根据自己的需要修改监控项和触发器
0

评论区