首页 > 编程 > Python > 正文

python脚本监控docker容器

2019-11-25 16:49:25
字体:
来源:转载
供稿:网友

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

脚本功能:

1、监控CPU使用率

2、监控内存使用状况

3、监控网络流量

具体代码:

#!/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('/n')  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容器的全部代码,希望对大家的学习有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表