Zabbix 监控 Docker容器
我们可以通过Python提供的模块docker来取各个docker容器的监控参数。参考文档:http://docker-py.readthedocs.io/en/stable/containers.html
pip install docker #安装docker模块
通过脚本获取各个监控项的值:
#!coding=utf-
#python2..12测试通过 #监控docker状态脚本,包括内存、cpu和网速 #UserParameter=docker_monitor[*],/usr/bin/python /usr/local/zabbix/scripts/docker_monitor.py $ $
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, ), 暂不确定
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, ),
'net_in': docker_stat['networks']['eth0']['rx_bytes'],
'net_out': docker_stat['networks']['eth0']['tx_bytes'],
'status': int( docker.status == 'running') }
print items.get(item) if __name__ == '__main__': conn = docker.from_env()
docker = conn.containers.get(sys.argv[])
docker_stat = docker.stats(stream=False,decode=True)
try:
get_value(sys.argv[])
except KeyError:
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分钟后取得数据
4、如果监控项报错:Cannot open memory.stat file,将zabbix agent中的用户改成root即可
Zabbix 监控 Docker容器的更多相关文章
- zabbix监控docker容器状态
前言:前段时间在部署zabbix,有个需求就是需要监控容器的状态 也就是cpu 内存 io的占用,于是就自己写了一个脚本,以及模板,在这里分享一下 嘿嘿 : ) 废话我也就不多说,直接开始 首选,za ...
- zabbix监控docker容器
1.环境说明 由于最近zabbix进行过一次迁移,所以zabbix-server系列采用docker方式安装,参考zabbix官网:https://github.com/zabbix/zabbix-d ...
- Zabbix-(五)监控Docker容器与自定义jvm监控项
Zabbix-(五)监控Docker容器与自定义jvm监控项 一.前言 前文中讲述了Zabbix对服务器硬件方面的监控功能,本文将讲述利用Zabbix监控Docker容器中的Java Web服务,并通 ...
- Prometheus入门到放弃(4)之cadvisor监控docker容器
Prometheus监控docker容器运行状态,我们用到cadvisor服务,cadvisor我们这里也采用docker方式直接运行. 1.下载镜像 [root@prometheus-server ...
- 6. 使用cadvisor监控docker容器
Prometheus监控docker容器运行状态,我们用到cadvisor服务,cadvisor我们这里也采用docker方式直接运行.这里我们可以服务端和客户端都使用cadvisor 客户端 1.下 ...
- docker-compose 快速部署Prometheus,监控docker 容器, 宿主机,ceph -- cluster集群
话不多说上菜: 现在环境是这样: ceph 4台: 192.168.100.21 ceph-node1 192.168.100.22 ceph-node2 192.168.100.23 ceph ...
- zabbix监控docker
[toc] 1.下载模版 然后把模版放到/usr/local/lib/zabbix/agent下 github地址内含监控模版 2.修改 zabbix-agentd 配置文件 vim /usr/loc ...
- zabbix容器化安装及监控docker应用
一.zabbix agent2 介绍 从Zabbix 4.4之后,官方推出了Zabbix Agent 2,意味着zabbix 不在只是物理机监控的代名词,现在你可以使用Go为Zabbix编写插件,来监 ...
- Zabbix在Docker中的应用和监控
目录 Zabbix在Docker中的应用和监控 一.如何使Zabbix跑在Docker里 1.Docker基础环境配置 2.Docker-compose安装配置 3.启动zabbix server 4 ...
随机推荐
- esxi 改变虚拟机磁盘格式为精简存储
最近在部署虚拟机,导入几个之前保存的ovf模板,发现存储已经被耗费的差不多了.检查了下磁盘存储格式 存储类型是 后置备延迟置零 占用空间 简单了解下 三种存储类型 1.厚置备延迟置零: 默认的创建格式 ...
- IE兼容swiper
swiper3能完美运用在移动端,但是运用在PC端,特别是IE浏览器上不能兼容,没有效果,要使IE兼容Swiper的话必须使用swiper2,也就是idangerous.swiper.js, 下载地址 ...
- vim学习、各类插件配置与安装
vim学习.各类插件配置与安装 vim 插件 配置 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶书籍<vim实用技巧>.注:进阶书籍可以在 ...
- 02 浅析Spring的AOP(面向切面编程)
1.关于AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善.O ...
- Tesseract OCR win 32位编译
https://github.com/tesseract-ocr/tesseract/wiki/Compiling 找到该标题:Develop Tesseract 按照上面的步骤执行即可,最后使用 v ...
- hdu 2046递推
递推公式 F[N]=F[N-1]+F[N-2]; AC代码: #include<cstdio> const int maxn=55; long long ans[maxn]; void ...
- SpaceNet数据集
SpaceNet数据集 SpaceNet是DigitalGlobe商业卫星公司提供的遥感图像集合,包含一些标记信息可用作机器学习研究. SpaceNet Challenge主页: https://sp ...
- flask中jinjia2模板引擎详解3
接上文 模板继承 Jinji2中的模板继承是jinjia2比较强大的功能之一. 模板继承可以定义一个父级公共的模板,把同一类的模板框架定义出来共享. 这样做一方面可以提取共享代码,减少代码冗余和重复的 ...
- 搜索引擎的缓存(cache)机制
什么是缓存? 在搜索领域中,所谓缓存,就是在高速内存硬件设备上为搜索引擎开辟一块存储区,来存储常见的用户查询及其结果,并采用一定的管理策略来维护缓存区内的数据.当搜索引擎再次接收到用户的查询请求时,首 ...
- Eviews 9.0新版本新功能——预测(Auto-ARIMA预测、VAR预测)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 9.预测功能 新增需要方法的预测功能:Auto ...