ngx_http_status_module
1.13.10 版本起,该模块被 1.13.3 中的 ngx_http_api_module 模块所取代。
ngx_http_status_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
身份访问。它需要配置 location /status
和 /status.html
,如上所示。
指令
status
- | 说明 |
---|---|
语法 | status; |
默认 | —— |
上下文 | location |
可以从包含有指令的 location 访问状态信息。应限制访问此 location。
status_format
- | 说明 |
---|---|
语法 | status_format json ; status_format jsonp [callback] ; |
默认 | status_format json |
上下文 | http、server、location |
默认情况下,状态信息以 JSON 格式输出。
或以输出为 JSONP 格式输出,callback
参数指定回调函数的名称。参数值可以包含变量。如果省略参数,或计算的值为空字符串,则使用 "ngx_status_jsonp_callback"
。
status_zone
- | 说明 |
---|---|
语法 | status_zone; |
默认 | —— |
上下文 | server |
允许在指定的 zone
中收集虚拟 http 或流(1.7.11)服务器状态信息。多个服务器可能共享同一个区域(zone)。
数据
提供以下状态信息:
version
提供的数据集的版本。目前的版本是 8。
nginx_version
nginx 的版本。
nginx_build
nginx 的构建名称。
address
接受状态请求的服务器的地址。
generation
配置重新加载的总数。
load_timestamp
上次重新加载配置的时间,自 Epoch 后的毫秒数。
timestamp
Epoch 后的当前时间(以毫秒为单位)。
pid
处理状态请求的 worker 进程的 ID。
ppid
启动 worker 进程的主进程的 ID。
processes
respawned
异常终止和重生的子进程的总数。
connections
accepted
已接受的客户端连接总数。
dropped
已删除的客户端连接总数。
active
当前活动客户端连接数。
idle
当前空闲客户端连接数。
ssl
handshakes
SSL 握手成功的总数。
handshakes_failed
SSL 握手失败的总数。
session_reuses
SSL 握手期间会话重用的总次数。
requests
total
客户端请求总次数。
current
当前的客户端请求数。
server_zones
对于每个 status_zone:
ngx_http_status_module.html
当前正在处理的客户端请求数。
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
对于每个 server,提供以下数据:
id
服务器的 ID。
server
一个服务器地址。
name
server 指令中指定的服务器的名称。
service
server 指令的服务参数值。
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
downtime
服务器处于
unavail
、checking
和unhealthy
状态的总时间。downstart
服务器变为
unavail
、checking
或unhealthy
时的时间(自 Epoch 以来的毫秒数)。selected
上次选择的服务器处理一个请求的时间(自 Epoch 以来的毫秒数)(1.7.5)。
header_time
从服务器获取响应头的平均时间(1.7.10)。在 1.11.6 版之前,该字段仅在使用 least_time 负载均衡方法时可用。
response_time
从服务器获得完整响应的平均时间(1.7.10)。在 1.11.6 版之前,该字段仅在使用 least_time 负载均衡方法时可用。
keepalive
当前空闲的 keepalive 连接数。
zombies
当前从组中删除但仍处理活动客户端请求的服务器数。
zone
保持组配置和运行时状态的共享内存区域的名称。
queue
对于请求队列,提供以下数据:
size
队列中当前的请求数。
max_size
可以同时在队列中的最大请求数。
overflows
由于队列溢出而拒绝的请求总数。
caches
对于每个缓存(由 proxy_cache_path 等配置):
size
当前缓存的大小。
max_size
配置中指定的缓存最大大小限制。
cold
一个布尔值,标识缓存加载器(cache loade)进程是否仍在将数据从磁盘加载到缓存中。
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
server 指令中指定的服务器的名称。
service
backup
一个布尔值,标识服务器是否为一个备份服务器。
weight
服务器的权重。
state
当前状态,可以是
up
、down
、unavail
、checking
或unhealthy
之一。active
当前的连接数。
max_conns
服务器的 max_conns 限制。
connections
转发到此服务器的客户端连接总数。
connect_time
连接上游(upstream)服务器的平均时间。在 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
downtime
服务器处于
unavail
、checking
和unhealthy
状态的总时间。downstart
服务器变为
unavail
、checking
或unhealthy
时的时间(自 Epoch 以来的毫秒数)。selected
上次选中的服务器处理连接的时间(自 Epoch 以来的毫秒数)。
zombies
当前已从组中删除但仍处理活动客户端连接的服务器数。
zone
保持组配置和运行时状态的共享内存区域的名称。
兼容性
- 版本 8 中添加了 http 和 stream upstreams 的 zone 字段。
- 版本 8 中添加了 slab 状态数据。
- 版本 8 中添加了检查状态。
- 版本 8 中添加了 http 和 stream upstream 的 name 和 service 字段。
- 版本 8 中添加了 nginx_build 和 ppid 字段。
- 版本 7 中添加了 session 状态数据和流 server_zones 中的 discarded 字段。
- zombies 字段是从版本 6 的 nginx 调试版本移过来的。
- 版本 6 中添加了 ssl 状态数据。
- server_zones 中的 discarded 字段已在版本 6 中添加。
- queue 状态数据已在版本 6 中添加。
- pid 字段已在版本 6 中添加。
- upstreams 中的服务器列表已移至版本 6 中的对应项。
- 在版本 5 中删除了 upstream 服务器的
keepalive
字段。 - stream 状态数据已在版本 5 中添加。
- 版本 5 中添加了 generation 字段。
- processes中的 respawned 字段已在版本 5 中添加。
- 版本 5 中添加了 upstreams 中的 header_time 和 response_time 字段。
- 版本 4 中添加了 upstreams 中的 selected 字段。
- 版本 4 中添加了upstreams 的 draining 状态。
- upstreams 中的 id 和 max_conns 字段已在版本 3 中添加。
- 版本 3 中添加了 caches 中的
revalidated
字段。 - 版本 2 中添加了 server_zones、caches 和 load_timestamp 状态数据。