脚本功能:

  1. 监控CPU使用率

  2. 监控内存使用状况

  3. 监控网络流量

#!/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容器相关推荐

  1. python代码进去docker容器内_python脚本监控docker容器

    本文实例为大家分享了python脚本监控docker容器的方法,供大家参考,具体内容如下 脚本功能: 1.监控CPU使用率 2.监控内存使用状况 3.监控网络流量 具体代码: #!/usr/bin/e ...

  2. zabbix企业应用之监控docker容器资源情况

    关于docker的监控,无论开源的CAdvisor.Data Dog还是我自己写的监控(http://dl528888.blog.51cto.com/2382721/1635951),不是通过dock ...

  3. Zabbix使用LLD自动发现规则发现监控docker容器(下)

    本篇是使用Zabbix监控docker容器下篇.利用ZABBIX自动发现监控功能,在部署zabbix agent客户端的服务器上,编写自定义功能脚本,实现自动获取服务器上运行的docker服务并监控其 ...

  4. 写了个Python脚本监控nginx进程

    写了个Python脚本监控nginx进程 « Xiaoxia[PG] 写了个Python脚本监控nginx进程 接上一文用iptables让SSH服务对陌生人说不.还是有点担心这个学期内,nginx可 ...

  5. python脚本监控网站状态 - 赵海华_运维之路 - 51CTO技术博客

    python脚本监控网站状态 - 赵海华_运维之路 - 51CTO技术博客 python脚本监控网站状态 2013-01-09 09:21:02 标签:监控 python 原创作品,允许转载,转载时请 ...

  6. Prometheus使用cAdvisor监控Docker容器指标

    完整译文请访问:使用cAdvisor监控Docker容器指标. 点击这里获取云原生干货https://www.coderdocument.com/resource_credential.html?co ...

  7. promethues+alertmanager+grafana监控docker容器和报警—基于手动配置和文件自动发现—详细文档

    promethues+alertmanager+grafana监控docker容器和报警-基于手动配置和文件自动发现-详细文档 相关配套软件包网盘下载链接如下: 网盘地址: https://url28 ...

  8. Grafana监控Docker容器+K8s集群容器

    文章目录 监控Docker容器 监控K8s集群容器 监控Docker容器 Dashboard ID:10657 原版Json文件:戳我下载 图为修改后Json文件:戳我下载~ 监控K8s集群容器 Da ...

  9. Shell脚本自动监控docker容器的状态

    首先我们来写一个脚本root@server:~# cat docker_monitor.sh #!/bin/bash #监控容器的运行状态 #容器名称 传入参数 containerName=$1 #当 ...

最新文章

  1. 【JavaScript总结】JavaScript发展与学习内容
  2. Linux纯脚本故障转移集群
  3. php框架laravel:数据库建立:artisan
  4. 21.Odoo产品分析 (三) – 人力资源板块(2) – 工时表(1)
  5. 制作程序化装饰花纹图案_装饰图案
  6. 单位阶跃信号是周期信号吗_iPhone12的信号有改观吗?
  7. 计算机桌面显示本地磁盘c,开机自动打开本地磁盘C的解决办法
  8. Debian,从安装到喜欢
  9. JS正则表达式从入门到入土(7)—— 分组
  10. python开发k8s管理平台_将Python项目部署到Kubernetes
  11. 3DMM(人脸3D形变统计模型)
  12. PMP第三节:项目管理过程
  13. 百度收录自动化提交脚本 - python
  14. Access query 使用方法
  15. 2019.5.29 中移物联网前端实习生笔试
  16. Frequent Pattern Mining(频繁模式挖掘) - Aprior挖掘算法
  17. 不重视需求过程的项目队伍将自食其果
  18. 彭佳慧 - 走在红毯那一天
  19. 安卓手机和电脑之间传文件最方便的方法
  20. ll -h和du -sh的区别

热门文章

  1. python拆分合并文件_python实现文件的分割与合并
  2. python3读取本地_如何使用Python读取本地存储?
  3. c# 对象json互相转换_Go语言进阶之路(六):内置JSON库和开源库gjson
  4. python求平均工资_python如何求列表平均值?
  5. windows10 1903中vmware无法运行解决方法和15.5安装
  6. ajax同步、异步区别及应用
  7. VB后台获得按键,并执行自己的函数(非钩子及热键)
  8. 在vb中使用Iphlpapi.dll获取网络信息(下)
  9. SCPPO(十五):IIS配置文件节点加密
  10. 还没买到票?快试试这个Python开源工具,支持多任务抢票