nginx 监控指标及收集

2022-06-27 12:33:50 浏览数 (1)

1. 概述

web 服务器 nginx 以其高性能与抗并发能力越来越多的被用户使用。 作为一款服务器产品,其运行状态是我们密切关注的,因此,对 nginx 的实时监控就成为必须要关注的了。 nginx 提供了 ngx_http_stub_status_module 模块,这个模块提供了基本的监控功能。 作为官方企业版的 nginx plus 通过 ngx_http_status_module 提供了更加完善的监控功能: http://demo.nginx.com/status.html。

2. 监控的主要指标

一般来说,我们需要对三个主要的指标进行监控: 1. 基本活跃指标 2. 错误指标 3. 性能指标

2.1. 基本活跃指标

下图显示了 nginx 收集的基本指标。

nginx 监控基本活跃指标

名称

描述

是否累加历史数据

Accepts(接受)

NGINX 接受的客户端连接数(包括 Handled Dropped Waiting)

Handled(已处理)

成功处理的客户端连接数(包含 Waiting 状态连接)

Active(活跃)

当前活跃的客户端连接数

Dropped(已丢弃)

已丢弃连接数(出错)

Requests(请求数)

客户端请求数

Waiting(等待)

正在等待的连接数

Reading(读)

正在执行读操作的连接数

Writing(写)

正在执行写操作的连接数

2.2. 每秒请求数 — QPS

按照固定时间间隔采样请求数据,计算出单位时间的请求量可以看到你的 web 服务器的请求情况。 通过持续的 QPS 监控,可以立刻发现是否被恶意攻击或对服务的可用性进行评估。 虽然当问题发生时,通过 QPS 不能定位到确切问题的位置,但是他却可以在第一时间提醒你环境可能出问题了。

2.3. 服务器错误率

通过监控固定时间间隔内的错误代码(4XX代码表示客户端错误,5XX代码表示服务器端错误),可以了解到客户端收到的结果是否是正确的。 错误率突然的飙升很可能是你的网站漏洞发出的信号。

如果你希望通过 access log 分析错误率,那么你需要配置 nginx 的日志模块,让 nginx 将响应码写入访问日志。

2.4. 请求处理时间

请求处理时间也可以被记录在 access log 中,通过分析 access log,统计请求的平均响应时间,通过持续观察,可以发现上游服务器的问题。

3. 指标的收集

介绍了这么多的监控指标,事实上,上面介绍的仅仅是基本的监控指标,针对实际的情况,还有很多指标十分具有监控的必要。 那么,怎么去收集这些指标进行监控呢?

3.1. ngx_http_stub_status_module

通过在编译时加入 nginx 的 ngx_http_stub_status_module 我们可以实时监控以下基本的指标: 1. Active connections — 活动连接数 2. accepts — 接收请求数 3. handled — 成功处理请求数 4. requests — 总请求数 5. reding — 正在进行读操作的请求数 6. writing — 正在进行写操作的请求数 7. waiting — 正在等待的请求数

具体的使用方法是在执行 ./configure 时,指定 —with-http_stub_status_module,然后通过配置:

代码语言:javascript复制
server {
    location /nginx_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        deny all;
    }
}

然后通过访问 http://localhost/nginx_status 就可以看到简单的统计页面。

3.2. nginx plus — ngx_http_status_module

商业版的 nginx plus 通过他的 ngx_http_status_module 提供了比 nginx 更多的监控指标,可以参看 http://demo.nginx.com/status.html。

3.3. nginx access log 分析

nginx 的 access log 中可以记录很多有价值的信息,通过分析 access log,可以收集到很多指标。 python 编写的 linux 工具 ngxtop 就实现了对 access log 的分析功能:

0 人点赞