设为首页 收藏本站
查看: 1156|回复: 0

[经验分享] docker搭建zabbix监控

[复制链接]

尚未签到

发表于 2019-1-19 08:50:42 | 显示全部楼层 |阅读模式
  1、创建目录
[root@localhost script]# mkdir /usr/local/zabbix/etc/script
  2、编辑容器发现脚本
[root@localhost script]# vim docker_discovery.py
#!/usr/bin/env python
import os
import simplejson as json
t=os.popen("""sudo docker ps |grep -v 'CONTAINER ID'|awk {'print $NF'} """)
container_name = []
for container in  t.readlines():
r = os.path.basename(container.strip())
container_name += [{'{#CONTAINERNAME}':r}]
print json.dumps({'data':container_name},sort_keys=True,indent=4,separators=(',',':'))
  3、安装环境并测试自动发现
pip  install docker
pip  install  simplejson
chmod 757  docker_discovery.py
chown zabbix:zabbix /usr/local/zabbix/etc/script -R

赋予zabbix权限,编辑/etc/sudoers,添加如下内容
zabbix  ALL=(root)    NOPASSWD:/usr/bin/docker,/usr/bin/python,/usr/local/zabbix/etc/script/docker_discovery.py
配置文件添加配置并重启:
vim /usr/local/zabbix/etc/zabbix_agentd.conf
UserParameter=docker_discovery,sudo /usr/bin/python /usr/local/zabbix/etc/script/docker_discovery.py
测试:
zabbix_get -s 192.168.199.133 -k docker_discovery
  4、添加容器监控测试
[root@localhost script]# vim docker_monitor.py
#!/usr/bin/env python
import docker
import sys
import subprocess
import os

def check_container_stats(container_name,collect_item):
#docker_client = docker_client.containers.get(container_name)
container_collect=docker_client.containers.get(container_name).stats(stream=True)
old_result=eval(container_collect.next())
new_result=eval(container_collect.next())
container_collect.close()
if collect_item == 'cpu_total_usage':
result=new_result['cpu_stats']['cpu_usage']['total_usage'] - old_result['cpu_stats']['cpu_usage']['total_usage']
elif collect_item == 'cpu_system_usage':
result=new_result['cpu_stats']['system_cpu_usage'] - old_result['cpu_stats']['system_cpu_usage']
elif collect_item == 'cpu_percent':
cpu_total_usage=new_result['cpu_stats']['cpu_usage']['total_usage'] - old_result['cpu_stats']['cpu_usage']['total_usage']
cpu_system_uasge=new_result['cpu_stats']['system_cpu_usage'] - old_result['cpu_stats']['system_cpu_usage']
cpu_num=len(old_result['cpu_stats']['cpu_usage']['percpu_usage'])
result=round((float(cpu_total_usage)/float(cpu_system_uasge))*cpu_num*100.0,2)
elif collect_item == 'mem_usage':
result=new_result['memory_stats']['usage']
elif collect_item == 'mem_limit':
result=new_result['memory_stats']['limit']
elif collect_item == 'network_rx_bytes':
result=new_result['networks']['eth0']['rx_bytes']
elif collect_item == 'network_tx_bytes':
result=new_result['networks']['eth0']['tx_bytes']
elif collect_item == 'mem_percent':
mem_usage=new_result['memory_stats']['usage']
mem_limit=new_result['memory_stats']['limit']
result=round(float(mem_usage)/float(mem_limit)*100.0,2)
return result
if __name__ == "__main__":
docker_client = docker.DockerClient(base_url='unix://var/run/docker.sock', version='1.27')
container_name=sys.argv[1]
collect_item=sys.argv[2]
print check_container_stats(container_name,collect_item)
[root@localhost script]# chmod 757  docker_monitor.py
编辑配置文件并重启:vim /usr/local/zabbix/etc/zabbix_agentd.conf
UserParameter=docker_status
  • ,sudo /usr/bin/python /usr/local/zabbix/etc/script/docker_monitor.py $1 $2
    测试:zabbix_get -s 192.168.199.133 -k docker_status[mysql-sonar,cpu_total_usage]
      5、web端制作模板
    5.1、配置 -》模板 -》创建模板  (cpu_percent mem_percent mem_usage mem_limit)
    Template name: Template Docker Auto Discovery

    5.2、点击创建
    5.3、找到创建的模板进去:点击自动发现
    自动发现规则:
    Name:collect docker container use resource
    Type:Zabbix agent
    Key:docker_discovery
    过滤器:
    {#CONTAINERNAME}
    5.4、创建监控项原型

    Name:container:{#CONTAINERNAME}:cpu_percent
    Type:Zabbix agent
    Key:docker_status[{#CONTAINERNAME},cpu_percent]
    Type:Numeric (float)
    Units:%
    Name:container:{#CONTAINERNAME}:mem_percent
    Type:Zabbix agent
    Key:docker_status[{#CONTAINERNAME},mem_percent]
    Type:Numeric (float)
    Units:%
    Name:container:{#CONTAINERNAME}:mem_usage
    Type:Zabbix agent
    Key:docker_status[{#CONTAINERNAME},mem_usage]
    Type:数字(无正负)
    Units:空
    Name:container:{#CONTAINERNAME}:mem_limit
    Type:Zabbix agent
    Key:docker_status[{#CONTAINERNAME},mem_limit]
    Type:数字(无正负)
    Units:空
    5.5、添加触发器
    5.5、添加图形原型
    Name:container:{#CONTAINERNAME}:cpu和内存使用率
    监控项:
      6、安装zabbix客户端

    这里采用编译安装:
    添加用户
    #groupadd zabbix
    #useradd -g zabbix -m zabbix
    #./configure --prefix=/usr/local/zabbix --enable-agent
    #make install
    #vi /usr/local/zabbix/etc/zabbix_agentd.conf
    Server= ip.ip.ip.ip         #服务端ip地址
    ServerActive= ip.ip.ip.ip    #服务端ip地址
    Hostname=client1             #必须与创建主机时的hostname一致
    #cp zabbix-3.0.4/misc/init.d/tru64/zabbix_agentd /etc/init.d/
    #chmod +x /etc/init.d/zabbix_ agentd
    #ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
    #ln -s /usr/local/zabbix/bin/* /usr/local/bin/
    #vi /etc/rc.d/init.d/zabbix_ agentd
    #在第二行添加如下内容
    #chkconfig: 2345 10 90
    #description: zabbix agent
    保存后退出文件
    #chkconfig --add zabbix_agentd
    #chkconfig zabbix_agentd on
    #service restart zabbix_ agentd



  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-665015-1-1.html 上篇帖子: Zabbix3.4安装部署 操作过程手册 下篇帖子: zabbix企业级监控之监控MYSQL流量
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表