在做微服务性能测试时,由于时间过去紧急,来不及使用容器的监测工具来量化容器的CPU、内存,来反馈容器的资源使用情况,便优先使用docker 默认工具docker stats来将需要监控的容器资源使用情况输入到log文件总,考虑使用python脚本来获取里面的峰值,实现xx.py xxx.log 分析.
docker stats
image.pngpython脚本如下
#!/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))
网友评论