模块 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

状态信息将可从所在的 location 访问。对此 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) 服务器状态信息。多个服务器可以共享同一个 zone。

数据

提供以下状态信息

version
提供的数据集的版本。当前版本为 8。
nginx_version
Nginx 的版本。
nginx_build
Nginx 构建名称。
address
接受状态请求的服务器地址。
generation
配置重载的总次数。
load_timestamp
上次配置重载的时间,自 Epoch 以来的毫秒数。
timestamp
当前时间,自 Epoch 以来的毫秒数。
pid
处理状态请求的工作进程 ID。
ppid
启动工作进程的主进程 ID。
processes
respawned
异常终止和重新生成(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 allocator 的共享内存区域
pages
used
当前使用的内存页数。
free
当前空闲的内存页数。
slots
对于每个内存槽大小(8、16、32、64、128 等),提供以下数据
used
当前使用的内存槽数。
free
当前空闲的内存槽数。
reqs
尝试分配指定大小内存的总次数。
fails
尝试分配指定大小内存的失败次数。
upstreams
对于每个动态配置的,提供以下数据
peers
对于每个服务器,提供以下数据
id
服务器 ID。
server
服务器的地址
name
server 指令中指定的服务器名称。
service
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
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
共享内存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
service 参数值,来自 server 指令。
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
checks
健康检查请求总数。
fails
失败的健康检查次数。
unhealthy
服务器变为不健康(状态“unhealthy”)的次数。
last_passed
布尔值,指示上次健康检查请求是否成功并通过了测试
downtime
服务器处于“unavail”、“checking”和“unhealthy”状态的总时间。
downstart
服务器变为“unavail”、“checking”或“unhealthy”状态的时间(自 Epoch 以来的毫秒数)。
selected
上次选择该服务器处理连接的时间(自 Epoch 以来的毫秒数)。
zombies
已从组中移除但仍在处理活跃客户端连接的服务器当前数量。
zone
共享内存zone 的名称,该区域保存组的配置和运行时状态。

兼容性