Nginx作为所有HTTP请求的入口,是非常重要的一层。本文主要介绍如何利用 Nginx日志实时监控每个业务的请求异常。
你可以扫描文章末尾的二维码关注我的关注我的公众号,内容大多会是后端技术、前端工程、DevOps,偶尔会有一些大数据相关,会推荐一些好玩的东西。希望你会喜欢~
Nginx 由于其出色的性能,在互联网中被广泛应用,它通常会作为 HTTP 接入层负责分流及静态文件处理。因此,每天会产生大量的日志,而这些日志是可以产生很多价值的,比如用来做用户行为分析、服务性能质量分析,以及本文要介绍的异常监控。
一条访问日志通常会记录用户请求来源、目标资源、设备信息、响应状态等,这里主要关注异常的响应状态码如500,另外一个是upstream_response_time,它反映了后端服务的响应速度。所以,这里主要是做两件事情:1. 监控错误;2. 监控慢的响应。最终的目标是要监测到哪个模块出了什么异常,问题出现在哪台机器上。
小流量场景的应对方案
我先假设目前只有一个 Nginx 节点且QPS 不高,不用太考虑性能问题,那么最简单的做法是写个脚本每分钟计算一下500状态码的数量,超过预设阀值则发送告警邮件,邮件内容要尽量详细,比如模块名、错误数量、告警级别等,并且把异常的日志输出到另外一份文件方便排查。慢响应的监控同理,根据 upstream_response_time 计算出慢的数量,以及平均值。
大流量场景的应对方案
以上的做法基本够一些小流量场景使用,但是当单节点无法满足需求及遇到大流量时,这种方案就会有些吃力了,比如性能上,比如指标的聚合计算。针对新的应对方案,我简单画了一张图:
长按二维码关注我一切,源于喜欢。
网友评论