统计日志访问次数,常见做法取决于日志格式和统计维度(IP、URL、状态码、时间段等)。下面按最常见场景给你一套实用方法,从简单到进阶。
192.168.1.10 - - [10/Oct/2024:10:00:01 +0800] "GET /index.html HTTP/1.1" 200
192.168.1.11 - - [10/Oct/2024:10:00:02 +0800] "GET /index.html HTTP/1.1" 200
192.168.1.10 - - [10/Oct/2024:10:00:03 +0800] "GET /api HTTP/1.1" 200
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10
解释:
$1:取第一列(IP)uniq -c:统计次数sort -nr:按访问次数倒序awk '{print $7}' access.log | sort | uniq -c | sort -nr | head -10
$7通常是 URL(视日志格式可能不同)
awk '{print $4}' access.log | cut -d: -f1-2 | uniq -c
awk '{print $4}' access.log | cut -d: -f1-3 | uniq -c
awk '{print $9}' access.log | sort | uniq -c
常见状态码:
awk '{print $1}' access.log | sort -u | wc -l
grep "192.168.1.10" access.log | wc -l
goaccess(强烈推荐,可视化)yum install goaccess -y
# 或
apt install goaccess -y
goaccess access.log -c
goaccess access.log -o report.html --log-format=COMBINED
✅ 可统计:
| 日志类型 | 建议 |
|---|---|
| Apache | 与 Nginx 类似 |
| 应用日志 | grep + awk |
| 大日志 | awk / goaccess |
| 超大规模 | ELK / ClickHouse |
你可以直接发我:
我可以直接给你一条可用的命令 ✅