Nginx 提供了状态统计模块,可以让你监控服务器的运行状态。以下是实现 Nginx 状态统计的几种方法:
这是 Nginx 自带的简单状态统计模块。
确认模块已编译:
nginx -V 2>&1 | grep -o with-http_stub_status_module
如果输出 with-http_stub_status_module
则表示已包含
配置 Nginx: 在 server 块中添加:
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1; # 只允许本地访问
allow 192.168.1.0/24; # 或者允许特定IP段
deny all; # 拒绝其他所有
}
重新加载配置:
nginx -s reload
访问统计页面:
访问 http://your-server/nginx_status
会显示类似:
Active connections: 291
server accepts handled requests
16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106
如果需要更详细的数据,可以使用第三方模块:
下载并编译:
wget https://github.com/yaoweibin/nginx_status_module/archive/master.zip
unzip master.zip
cd nginx-1.x.x
./configure --add-module=../nginx_status_module-master
make && make install
配置 Nginx:
http {
status_zone server_zone;
server {
location /status {
status;
}
}
}
Nginx Plus 提供了更丰富的状态统计功能:
server {
location /status {
status;
allow 127.0.0.1;
deny all;
}
}
安装 Nginx Exporter:
docker pull nginx/nginx-prometheus-exporter
运行 Exporter:
docker run -p 9113:9113 nginx/nginx-prometheus-exporter \
-nginx.scrape-uri http://nginx-host:port/nginx_status
配置 Prometheus 抓取指标
对于 stub_status 模块: - Active connections: 当前活跃连接数 - accepts: 已接受的客户端连接总数 - handled: 已处理的连接总数 - requests: 客户端请求总数 - Reading: 正在读取请求头的连接数 - Writing: 正在向客户端写入响应的连接数 - Waiting: 空闲客户端连接数
以上方法可以根据你的具体需求选择适合的方案来实现Nginx的状态统计。