温馨提示×

如何统计linux日志访问量

小樊
32
2026-09-29 14:09:45
栏目: 智能运维

在 Linux 中统计“日志访问量”通常指 Web 访问日志(如 Nginx / Apache) 的访问次数统计。下面按常见场景给你一套实用方法。


一、最基础:统计总访问量(行数)

1️⃣ 统计日志总行数(每次请求一行)

wc -l access.log

2️⃣ Nginx 默认日志(示例)

192.168.1.1 - - [10/Oct/2024:10:00:00 +0800] "GET /index.html HTTP/1.1" 200 1234

二、按 IP 统计访问量(最常用)

统计每个 IP 的访问次数

awk '{print $1}' access.log | sort | uniq -c | sort -nr

只看访问最多的前 10 个 IP

awk '{print $1}' access.log | sort | uniq -c | sort -nr | head

三、按 URL(接口/页面)统计

统计访问最多的页面

awk '{print $7}' access.log | sort | uniq -c | sort -nr | head

$7 是请求路径,如 /index.html


四、按状态码统计(排查异常)

各状态码数量

awk '{print $9}' access.log | sort | uniq -c | sort -nr

只看 404 / 500

grep -E ' 404 | 500 ' access.log | wc -l

五、按时间统计(小时 / 天)

按小时统计

awk '{print $4}' access.log | cut -d: -f1-2 | sort | uniq -c

按天统计

awk '{print $4}' access.log | cut -d: -f1 | sort | uniq -c

六、指定时间段统计

统计某一天的访问量

grep '10/Oct/2024' access.log | wc -l

统计某个小时的

grep '10/Oct/2024:10' access.log | wc -l

七、使用命令行工具(更高级)

1️⃣ goaccess(实时可视化)

goaccess access.log -o report.html --log-format=COMBINED

2️⃣ jq(如果是 JSON 日志)

jq '.request' access.log.json | sort | uniq -c

八、如果是 Docker / K8s 日志

docker logs nginx | grep 'GET' | wc -l

九、常见组合示例

统计异常 IP(>1000 次)

awk '{print $1}' access.log | sort | uniq -c | awk '$1>1000'

统计爬虫访问

grep -i 'bot' access.log | wc -l

如果你能告诉我:

  • 用的是 Nginx / Apache / 自定义日志
  • 日志格式示例
  • 想统计 PV / UV / IP / 接口 / 时间段

我可以直接给你精确命令。

0 踩