直接用 apache 访问日志可监控 api 调用频率,关键在于解析日志中路径与次数:确认 %r 字段存在并定位请求行字段,用 grep + wc 统计指定接口调用数,awk 提取时间戳分析时段波动,正则批量提取路径对比版本热度,结合状态码(如 $9=="200")评估调用有效性。

直接用 Apache 访问日志就能监控 API 接口调用频率,关键不是装新工具,而是把日志里“路径”和“次数”这两件事理清楚。
确认日志里有你要的路径信息
Apache 默认 combined 格式已包含请求行(%r),比如 "GET /api/v2/users?id=123 HTTP/1.1"。只要没被自定义 LogFormat 删掉 %r,这个字段就一定在。用 head -1 access.log 看一眼第一行,确认第 7 个字段(通常是 $7)确实是带引号的完整请求行。如果字段序号不同,后续 awk 要跟着调。
统计某个接口的总调用次数
最常用也最稳的方法是 grep + wc:
grep '"GET /api/v2/users' /var/log/apache2/access.log | wc -l
注意必须带双引号和空格,避免匹配到 /api/v2/users/profile 或 POST /api/v2/users。如果是 POST 或其他方法,改成 '\"POST /api/v2/users' 即可。路径含特殊字符(如 ?、&)时,加 -F 参数让 grep 当作固定字符串处理:
grep -F '"GET /api/v2/users?' /var/log/apache2/access.log | wc -l
分时段看调用波动
单纯总数不够,得知道是不是集中在某几分钟爆发。用 awk 提取时间戳(第 4 字段 $4)再过滤:
awk '$4 ~ /\[14\/Jun\/2026:14:30:/ && $7 ~ /"GET \/api\/v2\/users/' /var/log/apache2/access.log | wc -l
这行查的是今天下午 2:30–2:31 的调用量。日期格式要和你日志一致(比如 [14/Jun/2026 还是 [14/June/2026),先 head -1 确认再写。
对比多个版本或接口的热度
想看 /api/v1/ 和 /api/v2/ 谁更忙,不用一个个 grep,用正则批量提取再计数:
awk '$7 ~ /"GET \/(api\/v[0-9]+\/[^[:space:]]+)/ {print substr($7, index($7, "GET ") + 4, RSTART - index($7, "GET ") - 5)}' /var/log/apache2/access.log | sort | uniq -c | sort -nr
更简单点,直接匹配常见路径前缀:
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
awk '$7 ~ /"GET \/api\/v[0-9]+\// {path = substr($7, 1, index($7, " HTTP/")-1); gsub(/^"GET | "HTTP.*/, "", path); print path}' /var/log/apache2/access.log | sort | uniq -c | sort -nr
结果会列出各路径调用次数,一眼看出哪个版本扛着最多流量。
结合状态码判断是否有效调用
光数“访问了”没用,得看返回是否成功:
- 只统计成功响应:
awk '$7 ~ /"GET \/api\/v2\/users/ && $9 == "200" {c++} END {print c+0}' /var/log/apache2/access.log - 计算成功率:
awk '$7 ~ /"GET \/api\/v2\/users/ {total++; if($9=="200") ok++} END {printf "%.1f%%\n", total>0 ? ok/total*100 : 0}' /var/log/apache2/access.log大量 404 或 400 说明客户端地址错了、参数不对,或者有人在试探路径;200 比例高才说明接口真正在被正常使用。
不复杂但容易忽略。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










