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