Zabbix7.4.8(二):通过http监控Nginx相关指标

一、概述

使用 Zabbix 监控 Nginx 是确保 Web 服务稳定性的关键。其核心原理是通过 Nginx 的 stub_status 模块获取服务器的实时状态信息,然后由 Zabbix Agent 采集并上报给 Zabbix Server。

Nginx 自带一个名为 ngx_http_stub_status_module 的模块,启用后可通过一个特定 URL(如 /nginx_status)返回简洁的状态数据。

下面直接通过http获取服务器的实时状态信息。

二、操作过程

2.1在 Nginx 服务器上启用 stub_status 模块

1.进入nginx容器:

docker exec -it nginx /bin/bash

2.确认模块已编译:

执行 nginx -V 2>&1 | grep -o with-http_stub_status_module

如果有输出,说明模块已包含。如果没有,需要重新编译 Nginx 并添加 --with-http_stub_status_module 参数。

3.编辑 Nginx 配置文件(通常在 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/ 目录下)。

在 server 块中添加以下 location 配置:

location /nginx_status {

stub_status on;

access_log off;

allow 192.168.1.0/24;

allow 172.22.0.0/16;

allow 172.17.0.0/16;

deny all;

}

允许192.168.1.0/24、172.22.0.0/16整个子网访问

allow 172.17.0.0/16; # ✅ 允许 Docker 网桥网段

4.重启nginx

#docker restart nginx

5.测试状态页面:

在 Nginx 服务器上执行:

curl http://192.168.1.204:7001/nginx_status

监控指标解释

指标 含义

Active connections 当前活动的 TCP 连接总数

accepts Nginx 接受的连接总数

handled Nginx 处理的连接总数

requests Nginx 处理的请求数总数

Reading Nginx 正在读取客户端请求头的连接数

Writing Nginx 正在向客户端发送响应的连接数

Waiting 空闲的 keep-alive 连接数

​​​​​​​2.2在 Zabbix Web 中 调整参数

1.数据采集------模版

2.监测------主机------创建主机

模版群组:Templates/Applications

主机群组:Applications

2.3监控效果

三、问题

​​​​​​​3.1问题1

执行apk add curl报如下错误:

ERROR: Unable to lock database: Permission denied

ERROR: Failed to open apk database: Permission denied

解决方案:

从宿主机以 root 身份进入容器

docker exec -it --user root zabbix-server-pgsql /bin/sh

apk add curl

​​​​​​​3.2问题2

在另外一台服务器中执行curl http://192.168.1.204:7001/nginx_status,报

curl http://192.168.1.204:7001/nginx_status

<html>

<head><title>403 Forbidden</title></head>

<body>

<center><h1>403 Forbidden</h1></center>

<hr><center>nginx/1.27.5</center>

</body>

</html>

原因:

Docker 容器网络模型导致源 IP 被 NAT。

从这台 172.22.0.6 的机器上执行:

curl http://192.168.1.204:7001/nginx_status

这个请求的路径是:

容器 A: 172.22.0.6

→ 经过 Docker 网络 NAT

→ 到达 Nginx 容器

在 Nginx 容器看来,这个请求的源 IP 并不是 172.22.0.6,而是 Docker 网桥的 IP(如 172.17.0.1 )。

解决方案:

在default.conf增加allow 172.17.0.0/16;

相关推荐
吳所畏惧11 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
DFT计算杂谈11 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
维天说12 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
Zhang~Ling13 小时前
从 fopen 到 struct file:从零开始拆解 Linux 文件 I/O
linux·运维·服务器
爱写代码的阿森13 小时前
鸿蒙三方库 | harmony-utils之PreferencesUtil首选项数据监听详解
服务器·华为·harmonyos·鸿蒙·huawei
爱写代码的森13 小时前
蒙三方库 | harmony-utils之FileUtil文件重命名与属性查询详解
linux·运维·服务器·华为·harmonyos·鸿蒙·huawei
郝亚军14 小时前
使用Vue 3和Nginx打包和部署Vue.js项目的一般步骤
前端·vue.js·nginx
吠品14 小时前
Zabbix Web界面误报Server未运行的排查与解决
java·服务器·数据库
重生的黑客14 小时前
Linux 进程优先级、切换与调度:从孤儿进程到 O(1) 调度模型
linux·运维·服务器·进程优先级·nice