Python脚本获取docker stats数据峰值

2019-11-13  本文已影响0人  卫彬TM

在做微服务性能测试时,由于时间过去紧急,来不及使用容器的监测工具来量化容器的CPU、内存,来反馈容器的资源使用情况,便优先使用docker 默认工具docker stats来将需要监控的容器资源使用情况输入到log文件总,考虑使用python脚本来获取里面的峰值,实现xx.py xxx.log 分析.

docker stats

image.png

python脚本如下

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import codecs,sys
if len(sys.argv) > 1:
    # 提示以下面的方法运行脚本
   # sys.exit("python getmax.py xxx.log")
   # print(sys.argv)
     logfile = sys.argv[1]
else:
    print("ERROR!!")

f = codecs.open(logfile, mode='r', encoding='utf-8')  # 打开txt文件,以‘utf-8'编码读取
line = f.readline()  # 以行的形式进行读取文件
listcpu = []
listmem = []
listmemu = []
listmeml = []
listneti = []
listneto = []
listblocki = []
listblocko = []
while line:
    a = line.split()
    cpu = a[4:5] # 这是选取需要读取的位数
    CPUs =int(str(cpu[0].split('.')[0]))
    if CPUs == 0:  #0 排除
       pass
    else:
       listcpu.append(CPUs)
    mem = a[8:9]  #mem%
    memu = a[5:6]  #Mem usage
    meml = a[7:8]  #Mem limit
    neti = a[9:10]  #Net I
    neto = a[11:12]
    blocki = a[12:13]
    blocko = a[14:15]
    #listcpu.append(CPUs)  # 将其添加在列表之中
    listmem.append(mem[0])
    listmemu.append(memu[0])
    listmeml.append(meml[0])
    listneti.append(neti[0])
    listneto.append(neto[0])
    listblocki.append(blocki[0])
    listblocko.append(blocko[0])
    line = f.readline()
f.close()
if len(listcpu) == 0:
   print('CPU_max:','0')
else:
   print('CPU_max:', max(listcpu))
print('mem_max:', max(listmemu), 'mem_limit:', max(listmeml),'mem_max_%:', max(listmem))
print('Net_I:', max(listneti), 'Net_O:', max(listneto))
print('Block_I:', max(listblocki), 'Block_O:', max(listblocko))
上一篇下一篇

猜你喜欢

热点阅读