统计访问 /api/login 的总次数

admin

Linux统计接口访问量的三种实用方法

在日常的运维和开发工作中,监控Web服务的流量是至关重要的一环,特别是当你的后端是微服务架构,或者前端调用后端API时,了解某个具体接口被调用了多少次,对于性能调优、容量规划以及排查故障都非常有帮助。

在Linux环境下,最直接、最高效的方式就是通过Web服务器日志来统计,本文将介绍三种基于Linux命令行统计接口访问量的实用方法,适用于Nginx、Apache等主流Web服务器。

统计访问 /api/login 的总次数

使用 grep 和 wc 统计(最基础)

这是最简单的方法,适用于日志格式清晰,且只需要统计总次数的场景。

定位日志文件 通常Nginx的日志位于 /var/log/nginx//var/log/httpd/ 目录下。

使用 grep 筛选特定接口 假设我们要统计登录接口 /api/login 的访问量,可以使用 grep 命令提取包含该URL的日志行。

使用 wc 统计行数 wc -l 命令用于统计文件中的行数,在日志统计中,每一行通常代表一次请求。

命令示例:


进阶:按时间范围统计 上面的命令统计的是所有时间(可能包含历史数据),为了获取最近一小时的访问量,我们可以结合 sedawk 过滤时间戳。

# 统计最近一小时(假设日志时间格式为 [2023/10/27 10:00:00])
grep "api/login" /var/log/nginx/access.log | sed -n '/2023\/10\/27 10:00:00/,/2023\/10\/27 11:00:00/p' | wc -l

使用 awk 进行精确字段分析(推荐)

grep 只能做简单的匹配,而 awk 是Linux强大的文本处理工具,它允许你按“字段”操作,Web服务器日志通常以空格分隔,其中包含请求方法、URL、状态码等信息。

场景: 假设我们需要统计某个接口的 成功访问量(状态码为200)。

命令示例:

awk '$7 == "/api/user/info" && $9 == 200 {count++} END {print count}' /var/log/nginx/access.log

命令解析:

  • $7:代表日志中的第7列,通常对应URL字段(取决于日志配置,nginx默认配置中 $request 在第7列)。
  • $9:代表日志中的第9列,通常对应HTTP状态码。
  • END {print count}:在处理完所有行后,输出最终的计数结果。

更复杂的场景:统计包含参数的接口 如果接口URL是 /api/search?q=apple,且日志记录的是完整URL,直接用 grep 最方便,但如果日志记录的是 /api/search,而你只想统计带参数的请求,可以使用正则匹配:

awk '$7 ~ /api\/search/ && $9 == 200 {count++} END {print count}' /var/log/nginx/access.log

实时监控接口流量(动态统计)

如果你不想等待日志轮转,而是

文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码