centos

nginx在centos上如何日志分析

小樊
38
2025-08-16 17:16:42
栏目: 智能运维

一、日志文件位置

Nginx在CentOS上的默认日志路径为/var/log/nginx/,主要包含:

二、基础分析命令

  1. 实时查看日志

    tail -f /var/log/nginx/access.log  # 实时查看访问日志
    tail -f /var/log/nginx/error.log   # 实时查看错误日志
    
  2. 关键词过滤

    grep "404" /var/log/nginx/access.log  # 查找404错误请求
    grep "Connection refused" /var/log/nginx/error.log  # 查找连接拒绝错误
    
  3. 统计分析

    • 请求频率:按分钟统计请求数
      awk '{print substr($4, 2, 11)}' /var/log/nginx/access.log | sort | uniq -c
      
    • 状态码分布
      awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
      
    • 流量消耗TOP10
      awk '{sum[$7]+=$10} END {for (url in sum) print sum[url], url}' /var/log/nginx/access.log | sort -nr | head -10
      

三、高级分析工具

  1. GoAccess(实时可视化)

    • 安装yum install -y goaccess
    • 生成报告
      goaccess /var/log/nginx/access.log --log-format=COMBINED -o /var/www/report.html
      
  2. ELK Stack(大规模日志管理)

    • 组件:Elasticsearch(存储)、Logstash(解析)、Kibana(可视化)。
    • 流程:通过Logstash采集Nginx日志,存入Elasticsearch,用Kibana生成图表分析。
  3. 日志轮转(避免文件过大)
    编辑/etc/logrotate.d/nginx,设置按天轮转并压缩旧日志:

    /var/log/nginx/*.log {
        daily
        rotate 7
        compress
        missingok
        create 0640 nginx nginx
    }
    

四、常见问题定位

  1. 慢请求分析
    若日志中包含$request_time字段,可按响应时间排序:

    awk '{print $10, $7}' /var/log/nginx/access.log | sort -nr | head -20
    
  2. 恶意爬虫识别
    统计高频IP或异常User-Agent:

    awk '{ip[$1]++; ua[$11]++} END {for (i in ip) if (ip[i] > 500) print i, ip[i]}' /var/log/nginx/access.log
    

五、注意事项

0
看了该问题的人还看了