各位用户为了找寻关于python脚本监控docker容器的资料费劲了很多周折。这里教程网为您整理了关于python脚本监控docker容器的相关资料,仅供查阅,以下为您介绍关于python脚本监控docker容器的详细内容

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

脚本功能:

1、监控CPU使用率

2、监控内存使用状况

3、监控网络流量

具体代码:

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 #!/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_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 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_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容器的全部代码,希望对大家的学习有所帮助。