ngx_http_status_module 模块

ngx_http_status_module 模块提供对各种状态信息的访问。

在 10 月 13 日之前,此模块作为我们商业订阅的一部分提供。它在 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 指令

语 法:status;
默认值:—
上下文:location

可以从当前位置访问状态信息,应该限制对此位置的访问。

status_format 指令

语 法:status_format json;
    status_format jsonp [callback];
默认值:status_format json;
上下文:http, server, location

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

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

status_zone 指令

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

启用在指定区域中收集虚拟 http 或流 (1.7.11) 服务器状态信息。多个服务器可能共享同一个区域。

数据

提供以下状态信息:

  • version  版本

  • 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  服务器指令中指定的服务器名称。

      • 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

        • check  发出的运行状况检查请求总数。

        • fails  健康检查失败的次数。

        • unhealthy  服务器变得不健康(状态“不健康”)的次数。

        • last_passed  布尔值,指示上次运行状况检查请求是否成功并通过测试。

      • downtime  服务器处于“不可用”、“正在检查”和“不健康”状态的总时间。

      • downstart  服务器变为“不可用”、“正在检查”或“不健康”的时间(自 Epoch 以来的毫秒数)。

      • selected  上次选择服务器来处理请求 (1.7.5) 的时间(自 Epoch 以来的毫秒数)。

      • header_time  从服务器 (1.7.10) 获取响应头的平均时间。在 1.11.6 版本之前,该字段仅在使用 least_time 负载平衡方法时可用。

      • response_time  从服务器 (1.7.10) 获得完整响应的平均时间。在 1.11.6 版本之前,该字段仅在使用 least_time 负载平衡方法时可用。

    • 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  服务器指令中指定的服务器名称。

        • 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  服务器变得不健康(状态“不健康”)的次数。

          • last_passed  布尔值,指示上次运行状况检查请求是否成功并通过测试。

      • downtime  服务器处于“不可用”、“正在检查”和“不健康”状态的总时间。

      • downstart  服务器变为“不可用”、“正在检查”或“不健康”的时间(自 Epoch 以来的毫秒数)。

      • selected  上次选择服务器来处理连接的时间(自 Epoch 以来的毫秒数)。

    • zombies  当前从组中删除但仍在处理活动客户端连接的服务器数。

    • zone  保持组的配置和运行时状态的共享内存区域的名称。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号