模块 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;
上下文 httpserverlocation

默认情况下,状态信息以 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
上次重新加载配置的时间,以自纪元以来的毫秒数表示。
timestamp
自纪元以来的当前时间,以毫秒数表示。
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
发送给客户端的响应总数。
1xx2xx3xx4xx5xx
状态码为 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
从此服务器获得的响应总数。
1xx2xx3xx4xx5xx
状态码为 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”的时间(自纪元以来的毫秒数)。
selected
上次选择服务器处理请求的时间(自纪元以来的毫秒数)(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
一个布尔值,指示“缓存加载器”进程是否仍在将数据从磁盘加载到缓存中。
hitstaleupdatingrevalidated
responses
从缓存中读取的响应总数(命中,或由于 proxy_cache_use_stale 等导致的陈旧响应)。
bytes
从缓存中读取的字节总数。
missexpiredbypass
responses
未从缓存中获取的响应总数(未命中、过期,或由于 proxy_cache_bypass 等导致的旁路)。
bytes
从代理服务器读取的字节总数。
responses_written
写入缓存的响应总数。
bytes_written
写入缓存的字节总数。
stream
server_zones
对于每个 status_zone
processing
当前正在处理的客户端连接数。
connections
从客户端接受的连接总数。
sessions
total
已完成的客户端会话总数。
2xx4xx5xx
使用 状态码 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 阈值,导致服务器对客户端连接不可用(状态“unavail”)的次数。
health_checks
checks
进行的 健康检查 请求的总数。
fails
失败的健康检查次数。
unhealthy
服务器变得不健康(状态“unhealthy”)的次数。
last_passed
布尔值,指示上次健康检查请求是否成功并通过了 测试
downtime
服务器处于“unavail”、“checking”和“unhealthy”状态的总时间。
downstart
服务器变为“unavail”、“checking”或“unhealthy”的时间(自纪元以来的毫秒数)。
selected
上次选择服务器处理连接的时间(以自纪元以来的毫秒数表示)。
zombies
当前从组中移除但仍在处理活动客户端连接的服务器数量。
zone
保存组配置和运行时状态的共享内存 区域 的名称。

兼容性