zabbix--docker 监控

作者: _str_ | 来源:发表于2019-11-30 18:51 被阅读0次

    docker是一个进程,所以即使拉取的centos镜像也不应该在安装docker服务,所以这里监控的是宿主机上的所有docker进程

    先在物理机上安装zabbix仓库

    rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
    

    yum安装agent

    yum -y install zabbix-agent
    

    修改配置文件让zabbix_server监控到

    vim /etc/zabbix/zabbix_agentd.conf
    #先备份原始的
    Server=172.17.0.2    ---zabbix_server 的ip地址
    ServerActive=172.17.0.2    ---客户端主动提交信息 和上面的保持一致
    Hostname=localhost         ---客户端的主机名,宿主机的主机名
    

    将zabbix用户加入到docker组里面 使得zabbix服务可以执行docker命令

    gpasswd -a zabbix docker
    

    启动agent服务

    systemctl start zabbix_agent
    

    在web服务端里添加物理机主机

    添加主机到配置中

    添加python脚本(python2版) 这里路径是/opt/zabbix/docker.py

    #!/usr/bin/python
    import sys
    import os
    import json
    def 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 result
    if __name__ == '__main__':
      try:
        name, action = sys.argv[1], sys.argv[2]
        status(name,action)
      except IndexError:
        discover()
    

    修改脚本权限 获得执行权限

    chmod 755 /opt/zabbix/docker.py
    
    [root@localhost zabbix]# ll docker.py
    -rwxr-xr-x 1 root root 846 11月 30 17:11 docker.py
    

    添加自定义键值 /etc/zabbix/zabbix_agentd.d

    ###docker
    UserParameter=docker.discovery, python /opt/zabbix/docker.py
    UserParameter=docker.[*], python /opt/zabbix/docker.py $1 $2
    

    重启zabbix_agent

    systemctl restart zabbix_agent
    

    使用服务端进行测试

    /etc/zabbix # zabbix_get -s 10.0.122.178 -p 10050 -k docker.[centos-zabbix-agent,ping]
    1
    表示这个容器是存活的
    /etc/zabbix # zabbix_get -s 10.0.122.178 -p 10050 -k docker.[centos-zabbix-agent,BlockIO]
    609MB / 45.8MB
    测试成功
    

    这样就可以去web端进行测试
    首先要导入docker模板


    image.png

    模板docker链接 链接:https://pan.baidu.com/s/1fBSYo_IzcRCv_bmFKmEMwA 提取码:yotd

    主机链接模板


    链接模板 查看主机列表 查看自动发现

    使用自定义键值对创建监控项


    创建监控项

    查看最新数据


    image.png

    监测到cpu的数据


    image.png

    最终展示图形


    image.png

    相关文章

      网友评论

        本文标题:zabbix--docker 监控

        本文链接:https://www.haomeiwen.com/subject/oyaowctx.html