Nginx 日志分析技巧

Nginx 日志分析技巧

Nginx 日志是排查问题的重要工具,学会分析日志很重要。

1. 日志位置

默认日志路径:

# 访问日志
/var/log/nginx/access.log

# 错误日志
/var/log/nginx/error.log

2. 日志格式

默认日志格式:

log_format access '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent"';

3. 常用分析命令

1)查看访问量最多的IP:

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

2)查看访问最多的页面:

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

3)查看状态码分布:

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

4)查看404错误:

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

4. 排查常用

1)查看哪个IP访问频繁:

grep "127.0.0.1" access.log

2)查看某个时间段日志:

grep "08/Oct/2026:07" access.log

3)查看错误日志:

tail -f error.log

5. 日志切割

用 logrotate 自动切割:

# /etc/logrotate.d/nginx
/var/log/nginx/*.log {
    daily
    missingok
    rotate 30
    compress
    notifempty
    create 0640 nginx adm
    postrotate
        systemctl reload nginx
    endscript
}

6. 常用场景

  • 被攻击了:查访问量最多的IP
  • 页面报错:查404/500
  • 流量突增:查访问最多的页面
  • 爬虫多:查 User-Agent

总结

Nginx 日志分析要点:

  • 访问日志查访问情况
  • 错误日志排查问题
  • awk 统计数据
  • 日志自动切割
  • 定期分析日志

做运维,看日志是基本功。


emer 发布于  2026-10-8 07:18 

Nginx 日志分析技巧

Nginx 日志分析技巧

Nginx 日志是排查问题、分析流量的重要工具。学会看日志,网站问题排查效率翻倍。

1. 日志位置

# 默认访问日志
/var/log/nginx/access.log

# 默认错误日志
/var/log/nginx/error.log

可以在 nginx.conf 里自定义:

access_log /var/log/nginx/www.access.log;
error_log /var/log/nginx/www.error.log;

2. 日志格式

默认日志格式:

127.0.0.1 - - [04/Oct/2026:10:00:00 +0800] "GET / HTTP/1.1" 200 612 "https://www.baidu.com/" "Mozilla/5.0..."

各字段含义:

  • IP 地址
  • 请求时间
  • 请求方法和路径
  • 状态码
  • 响应大小
  • 来源页面
  • User-Agent

3. 常用分析命令

# 查看访问量前10的IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head 10

# 查看访问量前10的页面
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head 10

# 查看状态码分布
awk '{print $9}' access.log | sort | uniq -c | sort -nr

# 查看 404 请求
grep ' 404 ' access.log

# 查看 502 错误
grep ' 502 ' access.log

4. 排查问题

排查 502 错误:

grep ' 502 ' access.log | tail 20

排查慢请求:
开启慢日志:

slow_request_log /var/log/nginx/slow.log;
slow_request_time 5s;

排查爬虫:

grep 'Baiduspider' access.log
grep 'Googlebot' access.log

5. 流量统计

# 今天总访问量
grep '04/Oct/2026' access.log | wc -l

# 今天总流量
grep '04/Oct/2026' access.log | awk '{sum+=$10} END {print sum/1024/1024 " MB"}'

# 每小时访问量
awk '{print $4}' access.log | cut -d: -f2 | uniq -c

6. 日志切割

日志太大要切割,用 logrotate:

# /etc/logrotate.d/nginx
/var/log/nginx/*.log {
    daily
    missingok
    rotate 30
    compress
    notifempty
    create 0640 nginx adm
    postrotate
        systemctl reload nginx
    endscript
}

7. 常用工具

  • GoAccess:实时日志分析工具
  • ELK:Elasticsearch + Logstash + Kibana
  • Zabbix:监控告警

总结

Nginx 日志分析核心:

  • 位置:/var/log/nginx/
  • 命令:awk + sort + uniq
  • 排查:看状态码、看慢请求
  • 切割:用 logrotate

学会这些,日常日志分析基本够用了。


emer 发布于  2026-10-4 11:08 
'); })();