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;
上下文: http, server, location

默认情况下,状态信息以 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
处理状态请求的工作进程的 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_checks
checks
已执行的 健康检查 请求总数。
fails
健康检查失败的次数。
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
保存组配置和运行时状态的共享内存 区域 的名称。
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_checks
checks
进行的 健康检查 请求的总数。
fails
失败的健康检查次数。
unhealthy
服务器变为不健康(状态“unhealthy”)的次数。
last_passed
布尔值,指示 最后一次健康检查请求是否成功并通过 测试
downtime
服务器处于“unavail”、 “checking”和“unhealthy”状态的总时间。
downstart
服务器变为 “unavail”、 “checking”或“unhealthy”的时间(自 Epoch 以来的毫秒数)。
selected
上次选择服务器处理连接的时间(自 Epoch 以来的毫秒数)。
zombies
已从组中删除但仍在处理活动客户端连接的服务器的当前数量。
zone
保存组配置和运行时状态的共享内存 区域 的名称。

兼容性