docker搭建zabbix监控

1、创建目录
[[email protected] script]# mkdir /usr/local/zabbix/etc/script

2、编辑容器发现脚本
[[email protected] 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、添加容器监控测试
[[email protected] 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)

[[email protected] 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

原文地址:http://blog.51cto.com/11962757/2121538

时间: 2024-10-07 01:27:32

docker搭建zabbix监控的相关文章

通过docker搭建zabbix监控系统

zabbix系统由数据库.监控服务.管理控制台及agent构成,支持ipmi.snmp.ssh等协议,可实现从硬件层--OS--应用--数据库等的监测 故障处理:控制台页面报错zabbix server is not running: the information displayed may not be current,根据网友非docker部署环境的排查方法,查了半天都没找到原因,居然是部署zabbix-web-apache-mysql时少了端口10051参数.总结原因是对zabbix结构

docker搭建zabbix

本次使用docker搭建zabbix的组合是mysql+docker+zabix-server 1 先安装数据库mysql docker run --name zabbix-mysql-server --hostname zabbix-mysql-server -e MYSQL_ROOT_PASSWORD="123456" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123456" -e MYSQL_DAT

Linux系统搭建zabbix监控系统实例讲解

第一步,配置本地yum仓库,如下 1,挂载,挂载光驱到/mnt mount /dev/cdrom /mnt2,创建目录 mkdir -p /repo/cos7dvd3,然后使用命令创建yum仓库文件,注意指定正确的软件源位置yum-config-manager --add-repo file:///repo/cos7dvd/4,使用 yum repolist命令检测刚创建的yum软件仓库是否正常.5,使用yum clean all 清空缓存(非必要步骤,在yum更新时使用)6,使用vim编辑器给

linux 下搭建zabbix 监控

一.什么是zabbix 1.zabbix的简介 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. 能监视各种网络参数,保证服务器系统的安全运营;并提供柔软的通知机制以让系统管理员快速定位/解决存在的各种问题. zabbix 由2部分构成,zabbix server 与可选组件zabbix agent. zabbix server 可以通过SNMP,zabbix agent ,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可

LAMP 搭建zabbix监控Oracle 数据库 for Linux

准备环境介绍 文档简介想要实现的功能为在zabbix服务器端再增加orabbix插件以此访问oracle数据库进行监控操作. 环境介绍CentOS 7 zabbix 2.4.2 . yum介绍因公司电脑无法访问外网则进行了本地yum源的配置. 可自行根据php-common下载相应的rpm包或者去我的网盘瞅瞅有木有大家需要的地址如下链接http://pan.baidu.com/s/1skGbrat 密码n9p3 实施过程介绍1.首先是LAMP的搭建其中Linux环境搭建此处不多介绍MySQL数据

搭建zabbix监控系统

搭建自动化服务平台---zabbix监控平台 准备环境 准备一台Linux主机(CentOS 7举例) 已经安装好LAMP平台 关闭防火墙及SELinux 设置IP地址 设置好yum源 linux指令中的个别符号会与博客的文本编辑语言产生冲突,我会用空格隔开方便阅读 具体的以实际语法为准 实验开始 准备zabbix平台环境 服务器地址设置 更改主机名 [[email protected] ~] hostnamectl set-hostname zabbix-server //设置主机名 配置IP

搭建zabbix监控系统详解

博文大纲:一.前言 二.zabbix监控架构三.搭建Zabbix监控服务器 一.前言 : 要想实时的了解服务器的运行状况并且能在出现问题时及时解决,利用监控软件是一个很好的选择,而zabbix监控系统则在众多监控软件中脱颖而出. zabbix是一个基于web界面的企业级开源监控软件,Zabbix服务器需要LAMP环境或LNMP环境,提供分布式系统监控与网络监视功能.具备主机的性能监控,网络设备性能监控,数据库性能监控,多种告警方式,详细报表.图表的绘制等功能.监测对象可以是Linux或Windo

生产环境下:LAMP源码安装,搭建zabbix监控

1.系统环境检查,版本说明 1)版本说明 #httpd-2.4.25#mysql-5.7.17-linux-glibc2.5-x86_64 二进制压缩版#php5.6.30 #zabbix-3.0.8 2)关闭selinux.iptables,检查系统版本信息 sed -i 's/SELINUX=enabled/SELINUX=disabled/g' /etc/selinux/configgetenforce 0/etc/init.d/iptables stopcat /etc/redhat-r

手把手教你在CentOS 7.4下搭建Zabbix监控(转)

Linux系统版本:CentOS 7.4 1.安装前需要先关闭selinux和firewall. 1.1 [[email protected] ~]# vi /etc/selinux/config 将SELINUX=enforcing改为SELINUX=disabled 设置后需要重启才能生效 [[email protected] ~]# setenforce 0       #临时关闭 [[email protected] ~]# getenforce         #检测selinux是否