栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

使用php分析nginx日志统计接口情况

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用php分析nginx日志统计接口情况

一、背景

近来打算对后端接口进行优化,所以要先对现有接口的情况进行统计。因为相关业务接口是index.php?action=XXX的形式,所以公司运维的管理平台并不能满足需求,所以要自行处理nginx日志获取接口的情况了。

二、处理思路

1.nginx日志中不止包含相关接口的日志,所以先要根据关键字段将需要的日志过滤出来。
2.分析nginx.conf中的日志格式,方便提取相关的字段
3.使用正则表达式将日志数据提取出来
4.处理数据,形成统计数据
(统计数据主要包括:接口action、调用总次数、2s以上的次数、慢数量占比、最大耗时、平均耗时)

三、脚本代码

因为这个脚本基本上算是一次性的,所以在细节地方可能考虑不全

 $result[$action]['maxRequest']) {
    $result[$action]['maxRequest'] = $tmp['$request_time'];
    }    if ($tmp['$request_time'] > 2) {
    $result[$action]['slowCount']++;
    }
    $result[$action]['averageRequest'] = $result[$action]['allRequest'] / $result[$action]['count'];
} else {
    $result[$action] = array(    'count' => '1',    'slowCount' => '0',    'allRequest' => $tmp['$request_time'],    'maxRequest' => $tmp['$request_time'],    'averageRequest' => $tmp['$request_time'],
);
}
}
file_put_contents('result.log', json_encode($result));
四、正则表达式详解
$regex = '/[([^]]*)]/ism';

[  ] 是指以 "["开始及以"]"结束
() 是标记子表达式,并且可以提取出来使用
[^]] 是中括号表达式,可以匹配任何字符除了"]"* 是重复之前的中括号表达式零次或者多次$actionRegex = '/(?<=action=)[^&]*/';
(?<=action=) 是反向肯定预查,从"action="处开始匹配查找字符串
[^&] 是中括号表达式,可以匹配任何字符除了"&"
五、统计结果

从nginx日志中获取了几天数据进行分析,截取了部分数据,之后就可以结合代码进行优化了!


image

六、心得

正则表达式每次用的时候还是不太稳,还是要多实践实践!



作者:caohaoyu
链接:https://www.jianshu.com/p/34fc49951c90


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/227229.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号