ngx_http_status_module 模块提供对各种状态信息的访问。
在 10 月 13 日之前,此模块作为我们商业订阅的一部分提供。它在 1.13.3 中被 ngx_http_api_module 模块取代。
http { upstream backend { zone http_backend 64k; server backend1.example.com weight=5; server backend2.example.com; } proxy_cache_path /data/nginx/cache_backend keys_zone=cache_backend:10m; server { server_name backend.example.com; location / { proxy_pass http://backend; proxy_cache cache_backend; health_check; } status_zone server_backend; } server { listen 127.0.0.1; location /upstream_conf { upstream_conf; } location /status { status; } location = /status.html { } } } stream { upstream backend { zone stream_backend 64k; server backend1.example.com:12345 weight=5; server backend2.example.com:12345; } server { listen 127.0.0.1:12345; proxy_pass backend; status_zone server_backend; health_check; } }
具有此配置的状态请求示例:
http://127.0.0.1/status http://127.0.0.1/status/nginx_version http://127.0.0.1/status/caches/cache_backend http://127.0.0.1/status/upstreams http://127.0.0.1/status/upstreams/backend http://127.0.0.1/status/upstreams/backend/peers/1 http://127.0.0.1/status/upstreams/backend/peers/1/weight http://127.0.0.1/status/stream http://127.0.0.1/status/stream/upstreams http://127.0.0.1/status/stream/upstreams/backend http://127.0.0.1/status/stream/upstreams/backend/peers/1 http://127.0.0.1/status/stream/upstreams/backend/peers/1/weight
这个发行版附带了简单的监控页面,在默认配置中可以通过 “/status.html” 访问。它需要如上所示配置 “/status” 和 “/status.html” 位置。
语 法:status; 默认值:— 上下文:location
可以从当前位置访问状态信息,应该限制对此位置的访问。
语 法:status_format json; status_format jsonp [callback]; 默认值:status_format json; 上下文:http, server, location
默认情况下,状态信息以 JSON 格式输出。
或者,数据可以输出为 JSONP。callback 参数指定回调函数的名称。参数值可以包含变量。如果省略参数,或者计算值是空字符串,则使用 “ngx_status_jsonp_callback”。
语 法:status_zone zone; 默认值:— 上下文:server
启用在指定区域中收集虚拟 http 或流 (1.7.11) 服务器状态信息。多个服务器可能共享同一个区域。
提供以下状态信息:
version 版本
version 提供的数据集的版本,当前版本是8。
nginx_version nginx 版本。
nginx_build nginx 构建的名称。
address 接受状态请求的服务器地址。
generation 配置重新加载的总数。
load_timestamp 上次重新加载配置的时间,以 Epoch 以来的毫秒数为单位。
timestamp 自 Epoch 以来的当前时间(以毫秒为单位)。
pid 处理状态请求的工作进程的 ID。
ppid 启动工作进程的主进程的 ID。
processes
respawned 异常终止和重新生成的子进程总数。
connections
accepted 接受的客户端连接总数。
dropped 丢弃的客户端连接总数。
active 当前活动客户端连接数。
idle 当前空闲客户端连接数。
ssl
handshakes 成功的 SSL 握手总数。
handshakes_failed SSL 握手失败的总数。
session_reuses SSL 握手期间会话重用的总数。
requests
total 客户端请求的总数。
current 当前客户端请求的数量。
server_zones 对于每个 status_zone:
processing 当前正在处理的客户端请求数。
requests 从客户端收到的客户端请求总数。
responses
total 发送给客户端的响应总数。
1xx、2xx、3xx、4xx、5xx 状态代码为 1xx、2xx、3xx、4xx 和 5xx 的响应数量。
discarded 未发送响应而完成的请求总数。
received 从客户端接收的总字节数。
sent 发送到客户端的总字节数。
slabs 对于每个使用slab分配器的共享内存区域:
pages
used 当前使用的内存页数。
free 当前可用内存页数。
slots 对于每个内存插槽大小(8、16、32、64、128 等),提供以下数据:
used 当前使用的内存插槽数。
free 当前可用内存插槽的数量。
reqs 尝试分配指定大小的内存的总次数。
fails 分配指定大小内存的失败尝试次数。
upstreams 对于每个可动态配置的组,提供以下数据:
peers 对于每个服务器,提供以下数据:
id 服务器的 ID。
server 服务器的地址。
name 服务器指令中指定的服务器名称。
service 服务器指令的服务参数值。
backup 指示服务器是否为备份服务器的布尔值。
weight 服务器的重量。
state 当前状态,可能是“up”、“draining”、“down”、“unavail”、“checking”或“unhealthy”之一。
active 当前活动连接数。
max_conns 服务器的 max_conns 限制。
requests 转发到此服务器的客户端请求总数。
responses
total 从该服务器获得的响应总数。
1xx、2xx、3xx、4xx、5xx 状态代码为 1xx、2xx、3xx、4xx 和 5xx 的响应数量。
sent 发送到此服务器的总字节数。
received 从该服务器接收的总字节数。
fails 尝试与服务器通信失败的总数。
unavail 由于不成功的尝试次数达到 max_fails 阈值,服务器对客户端请求不可用的次数(状态“unavail”)。
health_checks
check 发出的运行状况检查请求总数。
fails 健康检查失败的次数。
unhealthy 服务器变得不健康(状态“不健康”)的次数。
last_passed 布尔值,指示上次运行状况检查请求是否成功并通过测试。
downtime 服务器处于“不可用”、“正在检查”和“不健康”状态的总时间。
downstart 服务器变为“不可用”、“正在检查”或“不健康”的时间(自 Epoch 以来的毫秒数)。
selected 上次选择服务器来处理请求 (1.7.5) 的时间(自 Epoch 以来的毫秒数)。
header_time 从服务器 (1.7.10) 获取响应头的平均时间。在 1.11.6 版本之前,该字段仅在使用 least_time 负载平衡方法时可用。
response_time 从服务器 (1.7.10) 获得完整响应的平均时间。在 1.11.6 版本之前,该字段仅在使用 least_time 负载平衡方法时可用。
keepalive 当前空闲保活连接数。
zombies 当前从组中删除但仍在处理活动客户端请求的服务器数。
zone 保持组的配置和运行时状态的共享内存区域的名称。
queue 对于请求队列,提供了以下数据:
size 队列中的当前请求数。
max_size 可以同时进入队列的最大请求数。
overflows 由于队列溢出而被拒绝的请求总数。
caches 对于每个缓存(由 proxy_cache_path 等配置):
size 缓存的当前大小。
max_size 配置中指定的缓存最大大小的限制。
cold 一个布尔值,指示“缓存加载器”进程是否仍在将数据从磁盘加载到缓存中。
hit, stale, updating, revalidated
responses 从缓存中读取的响应总数(命中,或由于 proxy_cache_use_stale 等原因造成的陈旧响应)。
bytes 从缓存中读取的总字节数。
miss, expired, bypass
responses 未从缓存中获取的响应总数(由于 proxy_cache_bypass 等原因导致的未命中、过期或绕过)。
bytes 从代理服务器读取的总字节数。
responses_written 写入缓存的响应总数。
bytes_written 写入缓存的总字节数。
stream
server_zones 对于每个 status_zone:
processing 当前正在处理的客户端连接数。
connections 从客户端接受的连接总数。
sessions
total 已完成的客户端会话总数。
2xx、4xx、5xx 已完成且状态代码为 2xx、4xx 或 5xx 的会话数。
discarded 未创建会话而完成的连接总数。
received 从客户端接收的总字节数。
sent 发送到客户端的总字节数。
upstreams 对于每个可动态配置的组,提供以下数据:
peers 为每个服务器提供以下数据:
id 服务器的 ID。
server 服务器的地址。
name 服务器指令中指定的服务器名称。
service 服务器指令的服务参数值。
backup 指示服务器是否为备份的布尔值服务器。
weight 服务器的重量。
state 当前状态,可能是“up”、“down”、“unavail”、“checking”或“unhealthy”之一。
active 当前连接数。
max_conns 服务器的 max_conns 限制。
connections 转发到此服务器的客户端连接总数。
connect_time 连接到上游服务器的平均时间。在 1.11.6 版本之前,该字段仅在使用 least_time 负载平衡方法时可用。
first_byte_time 接收第一个数据字节的平均时间。在 1.11.6 版本之前,该字段仅在使用 least_time 负载平衡方法时可用。
response_time 接收最后一个数据字节的平均时间。在 1.11.6 版本之前,该字段仅在使用 least_time 负载平衡方法时可用。
sent 发送到此服务器的总字节数。
received 从该服务器接收的总字节数。
fails 尝试与服务器通信失败的总数。
unavail 由于不成功的尝试次数达到 max_fails 阈值,服务器对客户端连接不可用的次数(状态“unavail”)。
health_checks
checks 发出的运行状况检查请求总数。
fails 健康检查失败的次数。
unhealthy 服务器变得不健康(状态“不健康”)的次数。
last_passed 布尔值,指示上次运行状况检查请求是否成功并通过测试。
downtime 服务器处于“不可用”、“正在检查”和“不健康”状态的总时间。
downstart 服务器变为“不可用”、“正在检查”或“不健康”的时间(自 Epoch 以来的毫秒数)。
selected 上次选择服务器来处理连接的时间(自 Epoch 以来的毫秒数)。
zombies 当前从组中删除但仍在处理活动客户端连接的服务器数。
zone 保持组的配置和运行时状态的共享内存区域的名称。