python脚本监控docker容器

本文实例为大家分享了python脚本监控docker容器的方法,供大家参考,具体内容如下

脚本功能:

1、监控CPU使用率

2、监控内存使用状况

3、监控网络流量

立即学习“Python免费学习笔记(深入)”;

具体代码:

#!/usr/bin/env python# --*-- coding:UTF-8 --*--import sysimport tabimport reimport osimport timefrom docker import Clientimport commandskeys_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 = Nonedef start(container_name):  global container_stats  conn=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_msg    container_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 returnval  elif 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_result    print returnval  elif 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_result    print returnval  elif 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 returnval  elif 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 returnval  elif 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 returnvalif __name__ == '__main__':  command='''docker ps | awk '{print $NF}'| grep -v "NAMES"'''  str=commands.getoutput(command)  container_counts_list=str.split('')  if sys.argv[1] not in container_counts_list:    print container_counts_list    print "你输入的容器名称错误,请重新执行脚本,并输入上述正确的容器名称."    sys.exit(1)  else:    container_name = sys.argv[1]    if sys.argv[2] not in keys_container_stats_list:      print keys_container_stats_list      print '你输入的容器监控项不在监控范围,请重新执行脚本,并输入上述正确的监控项.'      sys.exit(1)    else:      monitor_item = sys.argv[2]      if sys.argv[3] not in merit_list:        print merit_list        print "你输入的容器监控明细详细不在监控范围内,请重新执行脚本,并输入上述正确的明细监控指标."      else:        merit = sys.argv[3]        monitor_docker(monitor_item,merit)

登录后复制

 

以上就是python脚本监控docker容器的全部代码,希望对大家的学习有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2536480.html

(0)
上一篇 2025年3月5日 23:32:32
下一篇 2025年2月24日 21:43:10

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论