这已经不是第一次遇到了,服务器的CPU或IO突然剧增,或者APP响应突然超慢,这个时候需要查看日志,看看接口有木有异常。
利用linux特有的grep、awk了可以快速统计,指定时间段的接口出现次数,可能对这个不是熟悉,只能一个一个查看统计,很不方便(后期专供攻inux)。
顺应而为,我去找python
linux可以利用grep快速统计TOP
sed -n '/30\/Mar\/2020:09:16/, /30\/Mar\/2020:09:16/p' other_vhosts_access.log | grep '你的接口' | wc -l
grep '你的接口' -o access.log | sort | uniq -c | sort -rn
着重分享python方法
- access.log单行数据结构
x.x.x.x - - [30/Mar/2020:06:25:03 +0800] “POST /test/api HTTP/1.1” 200 525 “-” “python-requests/2.18.4”
第一步,源数据文件处理,log文件数据获取和清洗(清洗原则,字符串转列表,字符截取等)
第二步,df数据统计写入excel留存
第三步,生成图文报表 str接口字符串
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
from pyecharts import Bar
# 源数据文件处理
def dataClean(name):
if name=='access.log':
return dataCleanAcess(name)
elif name=='other_vhosts_access.log':
return dataCleanVhosts(name)
# 源数据 access处理
def dataCleanAcess(name):
df = pd.read_table(name)
list = []
for i in df.values:
if "POST" in i