Linux 系列从多节点的catalina 日志中统计设备调用频次

张开发
2026/4/17 9:37:39 15 分钟阅读

分享文章

Linux 系列从多节点的catalina 日志中统计设备调用频次
Linux 系列从多节点的catalina 日志中统计设备调用频次在日常后端服务运维、日志排查工作中我们经常需要从海量日志里提取关键数据比如统计某接口的设备调用频次。相比于写复杂脚本或借助可视化工具一条精心组合的 Linux 命令就能快速实现需求。本文就以统计/api/sync接口的设备调用次数为例拆解一条实用的日志分析命令让你零基础也能看懂、会用。一、业务场景与需求我们的业务场景是日志文件catalina.out.2026-01-01AGW服务的压缩日志目标接口/api/sync日志格式包含deviceCode:设备编号,xxx字段需求统计该接口下每个设备的调用总次数并按次数升序排列最终使用的完整命令grep/api/sync$(find./-typef-namecatalina.out.2026-01-01|grepagw)|grep-oPdeviceCode:\K[^,]|sort|uniq-c|sort-n这条命令看似复杂实则是多个基础命令的组合下面逐段拆解原理。二、命令逐段拆解图文对照1. 第一步定位目标日志文件find./-typef-namecatalina.out.2026-01-01|grepagwfind ./ -type f在当前目录及子目录查找所有文件-name catalina.out.2026-01-01精准匹配指定日期的压缩日志|grep agw过滤出AGW服务对应的日志文件避免匹配到无关文件执行效果快速锁定我们需要分析的日志路径为后续读取做准备。2. 第二步筛选目标接口日志grep/api/sync【上一步找到的日志文件】读取定位到的压缩日志内容过滤出仅包含/api/sync接口的日志行排除其他无关接口日志执行效果缩小数据范围只保留我们关心的接口请求记录。3. 第三步精准提取设备编号deviceCodegrep-oPdeviceCode:\K[^,]这是整条命令的核心用到了 grep 的高级正则能力-o只输出匹配到的内容而非整行-P启用Perl兼容正则表达式deviceCode:\K[^,]匹配deviceCode:后的内容直到逗号为止直接提取设备编号执行效果剔除无关字段只保留纯设备编码无多余字符。4. 第四步统计设备调用次数sort|uniq-csort对提取出的设备编号排序让相同设备编号连续排列uniq -c统计连续重复的设备编号输出「次数设备编号」执行效果完成去重与计数得到每个设备的调用总量。5. 第五步按调用次数排序sort-n-n按数字大小升序排列调用次数少的在前多的在后执行效果直观展示设备调用频次分布快速定位高频/低频设备。三、完整执行流程与结果示例把所有命令组合后终端输出效果如下2 device001 5 device003 12 device007 30 device009第一列设备调用次数第二列对应设备编号我们可以快速看出device009调用30次最多device001仅调用2次数据一目了然。四、命令扩展与灵活适配这条命令可以根据实际场景快速修改适配更多日志分析需求更换接口把/api/sync替换为/api/user即可统计用户接口更换日期修改日志文件名中的2026-01-01即可分析其他日期日志降序排列将末尾sort -n改为sort -nr调用多的设备优先展示适配非压缩日志直接去掉压缩相关逻辑指定日志路径即可五、总结这条 Linux 组合命令把find、grep、sort、uniq四个基础工具完美结合无需编写脚本、无需安装额外工具就能快速从海量日志中统计设备调用次数非常适合运维人员、后端开发日常排查问题。掌握这类命令组合思路面对日志分析、数据统计类需求时能大幅提升工作效率告别手动翻日志的低效方式。

更多文章