模块 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 json;
status_format jsonp [callback];
默认值
status_format json;
上下文 httpserverlocation

默认情况下,状态信息以 JSON 格式输出。

或者,数据可以作为 JSONP 输出。callback 参数指定回调函数的名称。参数值可以包含变量。如果省略参数,或者计算出的值为空字符串,则使用“ngx_status_jsonp_callback”。

语法 status_zone zone;
默认值
上下文 server

启用在指定的 zone 中收集虚拟 httpstream (1.7.11) 服务器状态信息。多个服务器可以共享同一个区域。

数据

提供以下状态信息

version
提供的数据集的版本。当前版本为 8。
nginx_version
nginx 的版本。
nginx_build
nginx 构建的名称。
address
接受状态请求的服务器的地址。
generation
配置 重新加载 的总数。
load_timestamp
上次重新加载配置的时间,以自 Epoch 时代的毫秒数表示。
timestamp
自 Epoch 时代的当前时间,以毫秒数表示。
pid
处理状态请求的 worker 进程的 ID。
ppid
启动 worker 进程 的 master 进程的 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
received
从客户端接收到的客户端请求总数。
total
responses
发送给客户端的响应总数。
1xx, 2xx, 3xx, 4xx, 5xx
状态代码为 1xx、2xx、3xx、4xx 和 5xx 的响应数。
discarded
未发送响应即完成的请求总数。
received
从客户端接收到的字节总数。
sent
发送给客户端的字节总数。
slabs
对于每个使用 slab 分配器的共享内存区域
pages
used
当前已使用的内存页数。
free
当前空闲的内存页数。
slots
pages
对于每个内存槽大小(8、16、32、64、128 等),提供以下数据
当前已使用的内存页数。
used
当前已使用的内存槽数。
free
当前空闲的内存槽数。
reqs
尝试分配指定大小内存的总数。
fails
尝试分配指定大小内存的失败次数。
对于每个 服务器,提供以下数据
id
服务器的 ID。
server
服务器的 地址
name
server 指令中指定的服务器名称。
service
server 指令的 service 参数值。
backup
一个布尔值,指示服务器是否为 备份 服务器。
weight
服务器的 权重
state
当前状态,可能是“up”、“draining”、“down”、“unavail”、“checking”或“unhealthy”之一。
active
活动连接的当前数量。
max_conns
服务器的 max_conns 限制。
requests
转发到此服务器的客户端请求的总数。
从客户端接收到的客户端请求总数。
total
从该服务器获得的响应总数。
发送给客户端的响应总数。
1xx, 2xx, 3xx, 4xx, 5xx
从客户端接收到的字节总数。
发送到该服务器的字节总数。
未发送响应即完成的请求总数。
从该服务器接收的字节总数。
当前空闲的内存槽数。
与服务器通信失败的尝试总数。
unavail
由于失败尝试次数达到 max_fails 阈值,服务器变为对客户端请求不可用(状态“unavail”)的次数。
health_checks
checks
发出的 健康检查 请求的总数。
当前空闲的内存槽数。
失败的健康检查数量。
unhealthy
服务器变为不健康(状态“unhealthy”)的次数。
last_passed
布尔值,指示上次健康检查请求是否成功并通过 测试
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
保存组的配置和运行时状态的共享内存zone的名称。
queue
对于请求队列,提供以下数据
size
当前队列中的请求数。
max_size
同一时间队列中可容纳的最大请求数。
overflows
因队列溢出而拒绝的请求总数。
caches
对于每个缓存(由proxy_cache_path等配置)
size
缓存的当前大小。
max_size
配置中指定的缓存最大大小限制。
cold
布尔值,指示“缓存加载程序”进程是否仍在将数据从磁盘加载到缓存中。
hitstaleupdatingrevalidated
从客户端接收到的客户端请求总数。
从缓存中读取的响应总数(命中或由于proxy_cache_use_stale等原因而导致的陈旧响应)。
bytes
从缓存中读取的字节总数。
missexpiredbypass
从客户端接收到的客户端请求总数。
未从缓存中获取的响应总数(未命中、过期或由于proxy_cache_bypass等原因而绕过)。
bytes
从代理服务器读取的字节总数。
responses_written
写入缓存的响应总数。
bytes_written
写入缓存的字节总数。
stream
server_zones
对于每个 status_zone
processing
当前正在处理的客户端连接数。
connections
从客户端接受的连接总数。
sessions
total
已完成的客户端会话总数。
2xx4xx5xx
状态码 2xx、4xx 或 5xx 完成的会话数。
状态代码为 1xx、2xx、3xx、4xx 和 5xx 的响应数。
未创建会话而完成的连接总数。
未发送响应即完成的请求总数。
received
从客户端接收到的字节总数。
sent
尝试分配指定大小内存的总数。
对于每个 可动态配置的 ,提供以下数据
尝试分配指定大小内存的失败次数。
对于每个 服务器,提供以下数据
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 负载平衡方法时才提供此字段。
从客户端接收到的字节总数。
发送到该服务器的字节总数。
未发送响应即完成的请求总数。
从该服务器接收的字节总数。
当前空闲的内存槽数。
与服务器通信失败的尝试总数。
unavail
由于失败尝试次数达到 max_fails 阈值,服务器变得对客户端连接不可用(状态“unavail”)的次数。
health_checks
checks
发出的 健康检查 请求总数。
当前空闲的内存槽数。
失败的健康检查数量。
unhealthy
服务器变为不健康(状态“unhealthy”)的次数。
last_passed
指示上一次健康检查请求是否成功并通过 测试 的布尔值。
downtime
服务器处于“unavail”、“checking”和“unhealthy”状态的总时间。
downstart
服务器变为“unavail”、“checking”或“unhealthy”的时间(自 Epoch 以来以毫秒为单位)。
selected
服务器上次被选中处理连接的时间(自 Epoch 以来以毫秒为单位)。
zombies
从组中移除但仍在处理活动客户端连接的服务器的当前数量。
zone
保存组的配置和运行时状态的共享内存 zone 的名称。

兼容性