Zabbix 监控 Docker容器

我们可以通过Python提供的模块docker来取各个docker容器的监控参数。参考文档:http://docker-py.readthedocs.io/en/stable/containers.html

pip install docker     #安装docker模块

通过脚本获取各个监控项的值

#!coding=utf-8#python2.7.12测试通过
#监控docker状态脚本,包括内存、cpu和网速

#UserParameter=docker_monitor[*],/usr/bin/python /usr/local/zabbix/scripts/docker_monitor.py $1 $2
import docker
import sys

def get_value(item):
    mem_rss_usage = docker_stat[‘memory_stats‘][‘stats‘][‘total_rss‘]
    mem_cache_usage = docker_stat[‘memory_stats‘][‘stats‘][‘total_cache‘]
    mem_limit = docker_stat[‘memory_stats‘][‘limit‘]
    cpu_total_usage = docker_stat[‘cpu_stats‘][‘cpu_usage‘][‘total_usage‘]
    cpu_usermode_usage = docker_stat[‘cpu_stats‘][‘cpu_usage‘][‘usage_in_usermode‘]
    cpu_kernelmode_usage = docker_stat[‘cpu_stats‘][‘cpu_usage‘][‘usage_in_kernelmode‘]
    cpu_system_usage = docker_stat[‘cpu_stats‘][‘system_cpu_usage‘]
    percpu_usage = docker_stat[‘cpu_stats‘][‘cpu_usage‘][‘percpu_usage‘]
    #      ‘cpu_percent‘: round(((float(cpu_total_usage)+float(cpu_usermode_usage)+float(cpu_kernelmode_usage))/float(cpu_system_usage)) * len(percpu_usage) * 1000.0, 2),    暂不确定
    items = {
        ‘mem_rss_usage‘: mem_rss_usage,
        ‘mem_cache_usage‘: mem_cache_usage,
        ‘mem_limit‘: mem_limit,
        ‘cpu_total_usage‘: cpu_total_usage,
        ‘cpu_system_usage‘: cpu_system_usage,
        ‘mem_percent‘: round((float(mem_rss_usage)/float(mem_limit)) * 100.0, 2),
        ‘status‘: int( docker.status == ‘running‘)
    }
    print items.get(item)

if __name__ == ‘__main__‘:

    conn = docker.from_env()
    docker = conn.containers.get(sys.argv[1])
    docker_stat = docker.stats(stream=False,decode=True)

    get_value(sys.argv[2])

docker自动发现脚本:

#!/bin/bash

docker_amount() {
            port=($(sudo docker ps -a|grep -v "CONTAINER ID"|awk ‘{print $NF}‘))
            printf ‘{\n‘
            printf ‘\t"data":[\n‘
               for key in ${!port[@]}
                   do
                       if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then
                          printf ‘\t {\n‘
                          printf "\t\t\t\"{#CONTAINERNAME}\":\"${port[${key}]}\"},\n"

                     else [[ "${key}" -eq "((${#port[@]}-1))" ]]
                          printf ‘\t {\n‘
                          printf "\t\t\t\"{#CONTAINERNAME}\":\"${port[${key}]}\"}\n"

                       fi
               done

                          printf ‘\t ]\n‘
                          printf ‘}\n‘
}

case $1 in
docker)
    docker_amount
;;
*)
    echo "Usage:`basename $0` {docker}"
;;
esac

  

UserParameter=auto_discovery[*],/bin/bash /usr/local/zabbix/scripts/auto_discovery.sh $1

 如果在服务端执行zabbix_get时报权限错误,在/etc/sudoers中添加:

zabbix  ALL=(root)  NOPASSWD: /usr/bin/docker

然后在监控页添加自动发现、监控项即可。

.

.

.

.
.

另可用简单的Load Modules的方式监控Docker(感谢万能的先行者....)

Git地址:https://github.com/monitoringartist/Zabbix-Docker-Monitoring

步骤如下:

1、在Git上下载相应版本的加载模块zabbix_module_docker.so和相应监控方式(主动和被动)监控模板Zabbix-Template-App-Docker.xml

2、将zabbix_module_docker.so放在${libdir}/modules下并修改配置文件:

LoadModulePath=/usr/local/zabbix/lib/modules

LoadModule=zabbix_module_docker.so

3、重启zabbix_agentd,并将Zabbix-Template-App-Docker.xml导入模板中,自动发现10分钟后取得数据

原文地址:https://www.cnblogs.com/nat-zhu/p/8360928.html

时间: 2024-10-01 10:35:36

Zabbix 监控 Docker容器的相关文章

zabbix自发现实时监控docker容器及容器中各个服务的状态线上业务展示

本文从开始到监控docker容器状态分为三部分1.查看自己的环境变量以及自己的服务路径(1)jdk环境: jdk1.8(2)zabbix版本:zabbix3.4.5(3)zabbix脚本存放路径:/data/zabbix/scripts/( 4 ) .conf文件存放路径:/data/zabbix/etc/zabbix_agentd.conf.d/ 2.配置脚本.key.模板首选,zabbix_agentd 配置 vim/data/zabbix/etc/zabbix_agentd.conf.d/

zabbix监控percona容器

zabbix利用自带模板监控percona容器的性能 在宿主机器上配置mysql客户端 设置容器可以连接外网(不连接导致zabbix搜集的数据发送不到server端) # vi /etc/sysctl.conf net.ipv4.ip_forward = 1 2.在设置mysql连接客户端配置 # vi/var/lib/zabbix/.my.cnf # Zabbix Agent [mysql] host     = localhost user     = root password = 密码

Docker 监控实战 教你如何监控 Docker 容器内部

如今,越来越多的公司开始使用 Docker 了,现在来给大家看几组数据: 2 / 3 的公司在尝试了 Docker 后最终使用了它 也就是说 Docker 的转化率达到了 67%,而转化市场也控制在 60 天内. 越大型的公司越早开始使用 Docker 研究发现主机数量越多的公司,越早开始使用 Docker.而主机数量多,在这个研究里就默认等同于是大型公司了. Docker 优势 那为什么 Docker 越来越火呢?一谈起 Docker 总是会跟着让人联想到轻量这个词,甚至会有一种通过 Dock

python脚本监控docker容器

脚本功能: 监控CPU使用率 监控内存使用状况 监控网络流量 #!/usr/bin/env  python # --*-- coding:UTF-8 --*-- import  sys import  tab import  re import  os import  time from docker  import Client import  commands keys_container_stats_list = ['blkio_stats', 'precpu_stats', 'netwo

监控docker容器内mysql主从同步状态

Docker exec 命令docker exec :在运行的容器中执行命令语法docker exec [OPTIONS] CONTAINER COMMAND [ARG...]OPTIONS说明:-d :分离模式: 在后台运行-i :即使没有附加也保持STDIN 打开-t :分配一个伪终端 脚本cat /server/scripts/mysql.sh #!/bin/bashdocker exec -t docke_mysql mysql -uroot -p123456 -e "show slav

zabbix自动发现实现批量监控docker状态

最近在搞zabbix监控docker以及docker内部应用状态信息,网上找的资料好少,只找到了一个大神的一篇文章,用的是python实现监控docker容器的基本状态,我在他给的脚本基础上进行修改,另外,增加了docker内部常用应用的状态监控,目前在测试环境上部署成功了,具体还需要在线上环境部署后才能检验出效果如何. 好了,根据惯例,废话讲完了,开始进入正题了. 首先,介绍下该监控套件有三个脚本,一个是自动发现主机上的docker容器脚本,另一个是用python写的获取每个docker容器的

Zabbix在Docker中的应用和监控

目录 Zabbix在Docker中的应用和监控 一.如何使Zabbix跑在Docker里 1.Docker基础环境配置 2.Docker-compose安装配置 3.启动zabbix server 4.基本配置 二.使用Zabbix监控Docker 1.部署方式 2.模块方式 3.使用Docker Agent方式 4.关联模版 转载文档 Zabbix在Docker中的应用和监控 一.如何使Zabbix跑在Docker里 Zabbix官方很早之前就提供里Zabbix的Docker镜像,而且提供里具

使用dockbix监控docker

以前使用cadvisor监控Docker容器状态,最近看到可以使用Zabbix Module的方式,通过部署一个zabbix agent的docker容器来监控宿主机器和宿主机器上docker的状态.原文可在https://github.com/monitoringartist/zabbix-docker-monitoring查看,我只是搬运工. 1.在需要监控的宿主机器上运行运行Agent容器. 直接在终端运行即可,不用写在dockerfile中. docker run --name=dock

初探 ELK - 每天5分钟玩转 Docker 容器技术(89)

在开源的日志管理方案中,最出名的莫过于 ELK 了.ELK 是三个软件的合称:Elasticsearch.Logstash.Kibana. Elasticsearch一个近乎实时查询的全文搜索引擎.Elasticsearch 的设计目标就是要能够处理和搜索巨量的日志数据. Logstash读取原始日志,并对其进行分析和过滤,然后将其转发给其他组件(比如 Elasticsearch)进行索引或存储.Logstash 支持丰富的 Input 和 Output 类型,能够处理各种应用的日志. Kiba