python脚本监控docker容器
本文实例为大家分享了python脚本监控docker容器的方法,供大家参考,具体内容如下
脚本功能:
1、监控CPU使用率
2、监控内存使用状况
3、监控网络流量
具体代码:
#!/usr/bin/envpython #--*--coding:UTF-8--*-- importsys importtab importre importos importtime fromdockerimportClient importcommands 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 defstart(container_name): globalcontainer_stats conn=Client(base_url='unix://run/docker.sock',version='1.19') generator=conn.stats(container_name) try: container_stats=eval(generator.next()) exceptNameError,error_msg: pass #printerror_msg container_stats=eval(generator.next()) finally: conn.close() defmonitor_docker(monitor_item,merit): ifmerit=='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) printreturnval elifmerit=='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 printreturnval elifmerit=='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 printreturnval elifmerit=='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) printreturnval elifmerit=='rx_bytes': command='''dockerexec-itapi1ifconfigeth1|grep"bytes"|awk'{print$2}'|awk-F':''{print$2}'''' result_one=commands.getoutput(command) time.sleep(1) command='''dockerexec-itapi1ifconfigeth1|grep"bytes"|awk'{print$2}'|awk-F':''{print$2}'''' result_second=commands.getoutput(command) returnval=round((int(result_second)-int(result_one))/1024,2) printreturnval elifmerit=='tx_bytes': command='''dockerexec-itapi1ifconfigeth1|grep"bytes"|awk'{print$6}'|awk-F':''{print$2}'''' result_one=commands.getoutput(command) time.sleep(1) command='''dockerexec-itapi1ifconfigeth1|grep"bytes"|awk'{print$6}'|awk-F':''{print$2}'''' result_second=commands.getoutput(command) returnval=round((int(result_second)-int(result_one))/1024,2) printreturnval if__name__=='__main__': command='''dockerps|awk'{print$NF}'|grep-v"NAMES"''' str=commands.getoutput(command) container_counts_list=str.split('\n') ifsys.argv[1]notincontainer_counts_list: printcontainer_counts_list print"你输入的容器名称错误,请重新执行脚本,并输入上述正确的容器名称." sys.exit(1) else: container_name=sys.argv[1] ifsys.argv[2]notinkeys_container_stats_list: printkeys_container_stats_list print'你输入的容器监控项不在监控范围,请重新执行脚本,并输入上述正确的监控项.' sys.exit(1) else: monitor_item=sys.argv[2] ifsys.argv[3]notinmerit_list: printmerit_list print"你输入的容器监控明细详细不在监控范围内,请重新执行脚本,并输入上述正确的明细监控指标." else: merit=sys.argv[3] monitor_docker(monitor_item,merit)
以上就是python脚本监控docker容器的全部代码,希望对大家的学习有所帮助。