ngx_http_status_module 模块
| 配置示例 指令 status status_format status_zone 数据 兼容性 |
ngx_http_status_module 模块提供了对各种状态信息的访问。
此模块在 1.13.10 版本之前一直是我们的 商业订阅 的一部分。 在 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 status_format |
|---|---|
| 默认值: |
status_format json; |
| 上下文: |
http, server, location |
默认情况下,状态信息以 JSON 格式输出。
或者,数据可以作为 JSONP 输出。
callback 参数指定回调函数的名称。
参数值可以包含变量。
如果省略参数,或者计算出的值为空字符串,则使用“ngx_status_jsonp_callback”。
| 语法: |
status_zone |
|---|---|
| 默认值: | — |
| 上下文: |
server |
在指定的 zone 中启用虚拟
http
或
stream
(1.7.11) 服务器状态信息的收集。
多个服务器可以共享同一个区域。
数据
提供以下状态信息:
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- 在 server 指令中指定的服务器名称。
service- server 指令的 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_checksdowntime-
服务器处于“
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- 一个布尔值,指示“缓存加载器”进程是否仍在从磁盘加载数据到缓存中。
-
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- server 指令的 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 阈值。
health_checksdowntime-
服务器处于“
unavail”、 “checking”和“unhealthy”状态的总时间。 downstart-
服务器变为
“
unavail”、 “checking”或“unhealthy”的时间(自 Epoch 以来的毫秒数)。 selected- 上次选择服务器处理连接的时间(自 Epoch 以来的毫秒数)。
zombies- 已从组中删除但仍在处理活动客户端连接的服务器的当前数量。
zone- 保存组配置和运行时状态的共享内存 区域 的名称。
兼容性
- http 和 stream 上游中的 zone 字段是在 版本 8 中添加的。
- slabs 状态数据是在 版本 8 中添加的。
- checking 状态是在 版本 8 中添加的。
- http 和 stream 上游中的 name 和 service 字段是在 版本 8 中添加的。
- nginx_build 和 ppid 字段是在 版本 8 中添加的。
- sessions 状态数据和 stream server_zones 中的 discarded 字段是在 版本 7 中添加的。
- zombies 字段是从 nginx debug 版本中移到 版本 6 的。
- ssl 状态数据是在 版本 6 中添加的。
- server_zones 中的 discarded 字段是在 版本 6 中添加的。
- queue 状态数据是在 版本 6 中添加的。
- pid 字段是在 版本 6 中添加的。
- upstreams 中的服务器列表在 版本 6 中移到了 peers 中。
-
上游服务器的
keepalive字段在 版本 5 中被删除了。 - stream 状态数据是在 版本 5 中添加的。
- generation 字段是在 版本 5 中添加的。
- processes 中的 respawned 字段是在 版本 5 中添加的。
- upstreams 中的 header_time 和 response_time 字段是在 版本 5 中添加的。
- upstreams 中的 selected 字段是在 版本 4 中添加的。
- upstreams 中的 draining 状态是在 版本 4 中添加的。
- upstreams 中的 id 和 max_conns 字段是在 版本 3 中添加的。
-
caches 中的
revalidated字段是在 版本 3 中添加的。 - server_zones、caches 和 load_timestamp 状态数据是在 版本 2 中添加的。
