Nginx监控运维

论坛 期权论坛 期权     
选择匿名的用户   2021-6-2 17:51   6638   0

Nginx 特性

作为 Web 服务器,Nginx 不免要与 Apache 进行比较。

相比 Apache 服务器,Nginx 因其采用的异步非阻塞工作模型,使其具备高并发、低资源消耗的特性,高度模块化设计使 Nginx 具备很好的扩展性;在处理静态文件、反向代理请求等方面,Nginx 表现出很大的优势。

Nginx 常见的使用方式

Nginx 可以作为反向代理服务器来转发用户请求;并能够在处理请求的过程中实现后端实例负载均衡,实现分发请求的功能;也可将 Nginx 配置为本地静态服务器,处理静态请求。

Nginx 监控

监控指标梳理

Nginx 处理请求的全过程应被监控起来,以便我们及时发现服务是否能够正常运转。

Nginx 处理请求的过程被详细地记录在 access.log 以及 error.log 文件中,我们给出以下(表 1)需要监控的关键指标:

表1:关键指标

监控实践

下面从延迟、错误、流量以及饱和度四个指标对 Nginx 监控实践进行说明。

延迟监控

延迟监控主要关注对 $request_time 的监控,并绘制 TP 指标图,来确认 TP99 指标值。

另外,我们还可以增加对 $upstream_response_time 指标的监控,来辅助定位延迟问题的原因。

图 1:TP 指标

图 1 展示了过去 15min 内 Nginx 处理用户请求的时间,可以看出用户 90% 的请求可以在 0.1s 内处理完成,99% 的请求可以在 0.3s 内完成。

根据 TP 指标值,并结合具体业务对延迟的容忍度,来设置延迟的报警阈值。

错误监控

Nginx 作为 Web 服务器,不但要对 Nginx 本身运行状态进行监控,还必须对 Nginx 的各类错误响应进行监控,HTTP 错误状态码以及 error.log 中记录的错误详细日志都应被监控起来以协助解决问题。

①基于 HTTP 语义的 Nginx 端口监控

单纯的 Nginx 端口监控无法反映服务真实运行状态,我们要关注的是 Nginx 本身存活以及是否可以正常提供服务。

基于我们的实践,我们推荐用语义监控代替端口监控,即从 Nginx 本机以 http://local_ip:port/ 的方式进行访问,校验返回的数据格式、内容及 HTTP 状态码是否符合预期。

②错误码监控

必须添加对诸如 500/502/504 等 5xx 服务类错误状态码的监控,它们告诉我们服务本身出现了问题。

图 2:状态码监控

5xx 类错误每分钟出现的频率应该在个位数,太多的 5xx 应及时排查问题并解决;4xx 类错误,在协助解决一些非预期的权限错误、资源丢失或性能等问题上可以给予帮助。

可以选择性得对 301/302 重定向类监控,应对特殊配置跳转的监控,如后端服务器返回 5xx 后,Nginx 配置重定向跳转并返回跳转后的请求结果。

③对错误日志监控

Nginx 内部实现了对请求处理错误的详细记录,并保存在 error.log 文件中。

错误类型有很多种,我们主要针对关键的、能体现服务端异常的错误进行采集并监控,以协助我们进行故障定位:

表 2:错误日志信息

流量监控

①Nginx 所接受请求总量的监控

关注流量波动周期,并捕获流量突增、突降的情况;通常稳态下流量低峰和高峰浮动 20% 需要关注下原因。

对于有明显波动周期的服务,我们也可以采用同环比增涨/降低的告警策略,来及时发现流量的变化。

B;r7*fVИC9j2BGjB;r7*f7gBGv{rjB;r7*((gj7>G"B8Gg/ :j$J0Rg*V?jg6((ńRg((ńRg*F+B8k>RgR"jUI0G:RgjUI0vB;j~Cv_n7kBG"g[((kG:C>92BGRgjB;r7*fr7*fC蘍ń*rV?6S((ńrR:Fcf77>C*?:K~9Rg^: *Rdń(Ё(B^k"A=MPV锃j""[ c"nOnc6^Rj*Rg((rGrN6B;R2nR5RZo3ZN:*"?&Onc&

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP