怎样利用nginx日志,进行错误信息及监控收集

你好,我是风一样的树懒,一个工作十多年的后端开发,曾就职京东、阿里等多家互联网头部企业。

点击下方👇关注公众号,带你一起复习后端技术,看看面试考点,补充积累技术知识,每天都为面试准备积累


在 Nginx 中,日志记录是非常重要的工具,用于监控和分析服务器状态,特别是错误码。通过解析和分析 Nginx 错误日志,可以实时监控系统问题并做出响应。


01
常见的 HTTP 状态码(错误码)说明


状态码,《曾经面试被问到过状态码401代表什么,我没有答上来,典型的没有好好背书》中我们介绍过,这里就不再冗余了


02
Nginx 错误日志格式


通常,Nginx 错误日志文件会记录详细的请求和错误信息。日志格式通常在 Nginx 配置文件 nginx.conf 中定义,使用 log_format 指令。

默认的错误日志记录格式如下(仅为例子):

log_format main '$remote_addr - $remote_user [$time_local"$request" '                  '$status $body_bytes_sent "$http_referer" '                  '"$http_user_agent" "$http_x_forwarded_for"';

在日志中,你可以看到包括 请求的状态码(如 404) 和其他有关请求的信息。


03
监控 Nginx 错误码的方式


使用 grep 和 awk 从日志文件中提取错误码

你可以通过 grep 或 awk 命令从 Nginx 的访问日志或错误日志中提取错误码信息。

例如,提取所有 404 错误:

grep " 404 " /var/log/nginx/access.log

也可以使用 awk 来统计错误码数量:

awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -n

这会显示所有 HTTP 状态码的出现次数。


使用日志分析工具

为了更方便地监控和分析错误码,推荐使用日志分析工具。以下是一些常见的日志分析工具:

GoAccess:一个开源的实时日志分析工具,支持多种格式,包括 Nginx 日志。可以实时显示错误码统计信息。

安装 GoAccess 并启动分析:

sudo apt-get install goaccessgoaccess /var/log/nginx/access.log -o report.html --log-format=COMBINED

ELK Stack (Elasticsearch, Logstash, Kibana):通过 Logstash 将 Nginx 日志数据传输到 Elasticsearch 中,并使用 Kibana 进行可视化和监控。你可以通过 Kibana 设置错误码监控报警。

ELK 配置较为复杂,需要在服务器上配置 Logstash 收集日志,配置 Elasticsearch 存储日志,配置 Kibana 可视化。

Fluentd:一个开源的数据收集器,可以将 Nginx 日志推送到监控平台如 Prometheus、Grafana 等。


使用 Prometheus + Grafana 监控 Nginx 错误码

安装 Nginx Exporter:Prometheus 监控 Nginx 可以使用 Nginx Exporter,它是一个 Prometheus 的扩展,用于暴露 Nginx 的状态信息,包括错误码。

安装并启动 Nginx Exporter:

sudo apt-get install nginx-extraswget https://github.com/nginxinc/nginx-prometheus-exporter/releases/download/v0.9.0/nginx-prometheus-exporter-0.9.0.amd64.debsudo dpkg -i nginx-prometheus-exporter-0.9.0.amd64.deb

配置 Nginx Exporter:启动 Nginx Exporter:

nginx-prometheus-exporter -nginx.scrape-uri=http://localhost:8080/status

配置 Prometheus:通过 Prometheus 来拉取 Nginx Exporter 暴露的端点数据并存储在 Prometheus 中。

配置 prometheus.yml:

scrape_configs:  - job_name'nginx'    static_configs:      - targets: ['localhost:9113']

在 Grafana 中可视化:使用 Grafana 创建面板,查询 Prometheus 中 Nginx 的错误码数据,并创建告警。


设置 Nginx 的错误日志告警

为了及时发现和响应错误码问题,可以设置日志告警。比如使用 logwatch 或 Monit 来定期检查 Nginx 日志文件并发送告警邮件。

Logwatch 示例配置:

logwatch --service nginx --range 'yesterday' --detail high --format html --mailto your-email@example.com


04
总结


  • 使用 Nginx 配置文件中的日志功能来记录错误码。

  • 使用工具如 grep、awk 或 GoAccess 等来分析和监控错误码。

  • 使用 Prometheus + Grafana 等现代化的监控工具,实时跟踪并设置错误码告警。

今天的内容就分享到这儿,喜欢的朋友可以关注,点赞。有什么不足的地方欢迎留言指出,您的关注是我前进的动力!

END


扫码关注

一起积累后端知识
不积跬步,无以至千里
不积小流,无以成江海

喜欢此内容的人还喜欢

谈谈id那些事(五)——美团的 Leaf 的ID生成


一个阿里二面面试官必问的问题


Lambda表达式说爱你不容易


分享面试:mysql数据库索引失效的情况


Spring-Boot中一个不起眼的好工具StopWatch