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', 'network', 'read', 'memory_stats', 'cpu_stats'] merit_list=['usage','limit','mem_use_percent','total_cpu_usage','system_cpu_usage','cpu_usage_percent','rx_bytes','tx_bytes'] returnval = None def start(container_name):global container_statsconn=Client(base_url='unix://run/docker.sock',version='1.19')generator=conn.stats(container_name)try:container_stats=eval(generator.next())except NameError,error_msg:pass # print error_msgcontainer_stats=eval(generator.next())finally:conn.close() def monitor_docker(monitor_item,merit):if merit == 'mem_use_percent':start(container_name)mem_usage = container_stats['memory_stats']['usage']mem_limit = container_stats['memory_stats']['limit']returnval = round(float(mem_usage) / float(mem_limit),2)print returnvalelif merit == 'system_cpu_usage':start(container_name)first_result = container_stats['cpu_stats']['system_cpu_usage']start(container_name)second_result = container_stats['cpu_stats']['system_cpu_usage']returnval = second_result - first_resultprint returnvalelif merit == 'total_cpu_usage':start(container_name)first_result = container_stats['cpu_stats']['cpu_usage']['total_usage']start(container_name)second_result = container_stats['cpu_stats']['cpu_usage']['total_usage']returnval = second_result - first_resultprint returnvalelif merit == 'cpu_usage_percent':start(container_name)system_use=container_stats['cpu_stats']['system_cpu_usage']total_use=container_stats['cpu_stats']['cpu_usage']['total_usage']cpu_count=len(container_stats['cpu_stats']['cpu_usage']['percpu_usage'])returnval = round((float(total_use)/float(system_use))*cpu_count*100.0,2)print returnvalelif merit == 'rx_bytes':command='''docker exec -it api1 ifconfig eth1 | grep "bytes" | awk '{print $2}' | awk -F ':' '{print $2}' '''result_one = commands.getoutput(command)time.sleep(1)command='''docker exec -it api1 ifconfig eth1 | grep "bytes" | awk '{print $2}' | awk -F ':' '{print $2}' '''result_second = commands.getoutput(command)returnval = round((int(result_second) - int(result_one))/1024,2)print returnvalelif merit == 'tx_bytes':command='''docker exec -it api1 ifconfig eth1 | grep "bytes" | awk '{print $6}' | awk -F ':' '{print $2}' '''result_one = commands.getoutput(command)time.sleep(1)command='''docker exec -it api1 ifconfig eth1 | grep "bytes" | awk '{print $6}' | awk -F ':' '{print $2}' '''result_second = commands.getoutput(command)returnval = round((int(result_second) - int(result_one))/1024,2)print returnval if __name__ == '__main__':command='''docker ps | awk '{print $NF}'| grep -v "NAMES"'''str=commands.getoutput(command)container_counts_list=str.split('\n')if sys.argv[1] not in container_counts_list:print container_counts_listprint "你输入的容器名称错误,请重新执行脚本,并输入上述正确的容器名称."sys.exit(1)else:container_name = sys.argv[1]if sys.argv[2] not in keys_container_stats_list:print keys_container_stats_listprint '你输入的容器监控项不在监控范围,请重新执行脚本,并输入上述正确的监控项.'sys.exit(1)else:monitor_item = sys.argv[2]if sys.argv[3] not in merit_list:print merit_listprint "你输入的容器监控明细详细不在监控范围内,请重新执行脚本,并输入上述正确的明细监控指标."else:merit = sys.argv[3]monitor_docker(monitor_item,merit)
转载于:https://blog.51cto.com/yujianglei/1767908
python脚本监控docker容器相关推荐
- python代码进去docker容器内_python脚本监控docker容器
本文实例为大家分享了python脚本监控docker容器的方法,供大家参考,具体内容如下 脚本功能: 1.监控CPU使用率 2.监控内存使用状况 3.监控网络流量 具体代码: #!/usr/bin/e ...
- zabbix企业应用之监控docker容器资源情况
关于docker的监控,无论开源的CAdvisor.Data Dog还是我自己写的监控(http://dl528888.blog.51cto.com/2382721/1635951),不是通过dock ...
- Zabbix使用LLD自动发现规则发现监控docker容器(下)
本篇是使用Zabbix监控docker容器下篇.利用ZABBIX自动发现监控功能,在部署zabbix agent客户端的服务器上,编写自定义功能脚本,实现自动获取服务器上运行的docker服务并监控其 ...
- 写了个Python脚本监控nginx进程
写了个Python脚本监控nginx进程 « Xiaoxia[PG] 写了个Python脚本监控nginx进程 接上一文用iptables让SSH服务对陌生人说不.还是有点担心这个学期内,nginx可 ...
- python脚本监控网站状态 - 赵海华_运维之路 - 51CTO技术博客
python脚本监控网站状态 - 赵海华_运维之路 - 51CTO技术博客 python脚本监控网站状态 2013-01-09 09:21:02 标签:监控 python 原创作品,允许转载,转载时请 ...
- Prometheus使用cAdvisor监控Docker容器指标
完整译文请访问:使用cAdvisor监控Docker容器指标. 点击这里获取云原生干货https://www.coderdocument.com/resource_credential.html?co ...
- promethues+alertmanager+grafana监控docker容器和报警—基于手动配置和文件自动发现—详细文档
promethues+alertmanager+grafana监控docker容器和报警-基于手动配置和文件自动发现-详细文档 相关配套软件包网盘下载链接如下: 网盘地址: https://url28 ...
- Grafana监控Docker容器+K8s集群容器
文章目录 监控Docker容器 监控K8s集群容器 监控Docker容器 Dashboard ID:10657 原版Json文件:戳我下载 图为修改后Json文件:戳我下载~ 监控K8s集群容器 Da ...
- Shell脚本自动监控docker容器的状态
首先我们来写一个脚本root@server:~# cat docker_monitor.sh #!/bin/bash #监控容器的运行状态 #容器名称 传入参数 containerName=$1 #当 ...
最新文章
- 【JavaScript总结】JavaScript发展与学习内容
- Linux纯脚本故障转移集群
- php框架laravel:数据库建立:artisan
- 21.Odoo产品分析 (三) – 人力资源板块(2) – 工时表(1)
- 制作程序化装饰花纹图案_装饰图案
- 单位阶跃信号是周期信号吗_iPhone12的信号有改观吗?
- 计算机桌面显示本地磁盘c,开机自动打开本地磁盘C的解决办法
- Debian,从安装到喜欢
- JS正则表达式从入门到入土(7)—— 分组
- python开发k8s管理平台_将Python项目部署到Kubernetes
- 3DMM(人脸3D形变统计模型)
- PMP第三节:项目管理过程
- 百度收录自动化提交脚本 - python
- Access query 使用方法
- 2019.5.29 中移物联网前端实习生笔试
- Frequent Pattern Mining(频繁模式挖掘) - Aprior挖掘算法
- 不重视需求过程的项目队伍将自食其果
- 彭佳慧 - 走在红毯那一天
- 安卓手机和电脑之间传文件最方便的方法
- ll -h和du -sh的区别
热门文章
- python拆分合并文件_python实现文件的分割与合并
- python3读取本地_如何使用Python读取本地存储?
- c# 对象json互相转换_Go语言进阶之路(六):内置JSON库和开源库gjson
- python求平均工资_python如何求列表平均值?
- windows10 1903中vmware无法运行解决方法和15.5安装
- ajax同步、异步区别及应用
- VB后台获得按键,并执行自己的函数(非钩子及热键)
- 在vb中使用Iphlpapi.dll获取网络信息(下)
- SCPPO(十五):IIS配置文件节点加密
- 还没买到票?快试试这个Python开源工具,支持多任务抢票