前言
在Web服务架构中,Apache和Nginx占据了绝大部分市场份额。对这两款核心Web服务器进行实时监控,是保障业务系统稳定运行的关键环节。Zabbix提供了完善的模板支持,通过开启Web服务器自带的状态页,结合Zabbix Agent的主动采集能力,我们可以轻松实现对Apache和Nginx的性能监控。
本文将分别详细介绍如何使用Zabbix监控Apache和Nginx,涵盖状态页开启、监控指标解读、模板配置及宏变量修改等全流程。
一、监控Apache Web服务器
1.1 实验环境说明
| 组件 | 配置 |
|---|---|
| Apache服务器 | AlmaLinux 9.1(IP: 192.168.38.23) |
| Zabbix Server | 192.168.38.30 |
| Zabbix Agent 2 | 已安装并正常运行 |
| Apache端口 | 80(默认) |
1.2 开启Apache Server Status状态页
Apache自带了Server Status模块,可以实时输出服务器运行状态信息。需要在Apache配置文件中启用该功能。
操作步骤:
-
编辑Apache主配置文件
httpd.conf(或conf.d/目录下的配置文件) -
在配置文件末尾添加以下代码段:
ExtendedStatus On
<location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 192.168.38.30
配置说明:
ExtendedStatus On:开启扩展状态信息,提供更详细的统计数据
<location /server-status>:定义状态页访问路径
SetHandler server-status:指定使用server-status处理器
Allow from:设置允许访问的IP地址,建议仅允许Zabbix Server和相关运维IP
重启Apache服务使配置生效:
systemctl restart httpd
# 或
systemctl reload httpd
1.3 验证状态页是否生效
在Zabbix Server端通过curl或浏览器访问状态页,测试能否正常获取数据:
curl http://192.168.38.23/server-status?auto
如果配置正确,将返回类似以下格式的状态信息:
Total Accesses: 12345
Total kBytes: 67890
Uptime: 86400
ReqPerSec: 0.142857
BytesPerSec: 0.785714
BytesPerReq: 5.5
BusyWorkers: 2
IdleWorkers: 48
1.4 Apache监控指标详解
访问 http://192.168.38.23/server-status?auto 后,输出各项指标的含义如下:
| 指标 | 说明 | 监控意义 |
|---|---|---|
| Total Accesses | 服务器累计处理的请求总数 | 反映服务器总负载量,如果长时间不变说明请求未到达 |
| Total kBytes | 服务器累计传输的字节总数 | 反映流量总量 |
| Uptime | Apache服务运行时间(秒) | 监控服务稳定性,重启会重置该值 |
| ReqPerSec | 每秒处理的请求数(QPS) | 核心性能指标,反映当前吞吐量 |
| BytesPerSec | 每秒传输的字节数 | 反映当前带宽使用情况 |
| BytesPerReq | 每个请求平均传输字节数 | 反映请求平均大小 |
| BusyWorkers | 正在处理请求的工作线程数 | 反映当前并发处理中的请求数 |
| IdleWorkers | 空闲工作线程数 | 关键告警指标,为0时表示线程池耗尽 |
⚠️ 告警阈值参考 :当
IdleWorkers持续为0时,说明所有工作线程都在忙碌,新的请求将进入排队等待,最终可能因超时而失败。建议设置触发器:当IdleWorkers < 10时发出预警。
1.5 Apache工作线程状态码解读
在状态页的详细视图中,每个工作线程会显示一个状态字符,含义如下:
| 状态码 | 含义 | 说明 |
|---|---|---|
_ |
等待连接 | 线程空闲,等待新请求 |
S |
准备连接 | 正在准备建立连接 |
R |
读取请求 | 正在读取客户端请求头 |
W |
发送响应 | 正在向客户端发送响应数据 |
K |
保持连接 | 长连接保持状态(Keep-Alive) |
D |
DNS查询 | 正在执行DNS解析 |
C |
关闭连接 | 正在关闭连接 |
L |
写日志 | 正在写入访问日志 |
G |
退出完成 | 线程正在优雅退出 |
I |
空闲释放 | 线程已释放,等待复用 |
. |
未使用 | 该槽位当前未使用 |
1.6 配置Apache监控模板宏变量
Zabbix官方提供了 Apache by Zabbix agent 模板,在链接到主机前,需要先配置模板中的宏变量。
操作步骤:
-
登录Zabbix Web管理界面
-
进入 数据采集(Data collection) → 模板(Templates)
-
搜索找到 Apache by Zabbix agent 模板
-
切换到 宏(Macros) 选项卡
-
修改以下宏变量:
如下图所示:

| 宏变量 | 默认值 | 修改为 | 说明 |
|---|---|---|---|
{$APACHE.STATUS.PATH} |
/server-status | /server-status | 状态页访问路径 |
{$APACHE.STATUS.PORT} |
80 | 80 | Apache服务端口 |
{$APACHE.STATUS.SCHEME} |
http | http | 协议类型(http/https) |
如果需要使用HTTPS访问状态页,需将 {$APACHE.STATUS.SCHEME} 修改为 https,同时调整端口为443。
1.7 链接Apache监控模板
-
进入 数据采集(Data collection) → 主机(Hosts)
-
选择需要监控的Apache主机(192.168.38.23)
-
切换到 模板(Templates) 选项卡
-
点击 链接新模板(Link new templates)
-
搜索并选择 Apache by Zabbix agent
-
点击 更新(Update) 保存配置

1.8 验证Apache监控数据
模板链接完成后,稍等片刻,进入 监控(Monitoring) → 最新数据(Latest data),筛选该主机,应能看到Apache相关的监控项数据在正常采集。
二、监控Nginx Web服务器
2.1 实验环境说明
| 组件 | 配置 |
|---|---|
| Nginx服务器 | AlmaLinux 9.1(IP: 192.168.38.28) |
| Zabbix Server | 192.168.38.30 |
| Zabbix Agent 2 | 已安装并正常运行 |
| Nginx端口 | 80(默认) |
2.2 开启Nginx Stub Status状态页
Nginx提供了ngx_http_stub_status_module模块,编译安装时默认已包含该模块。需要在配置文件中启用状态页功能。
操作步骤:
编辑Nginx配置文件 nginx.conf,在 server 段中添加以下配置:
location /nginx-status {
stub_status on;
access_log off;
allow 127.0.0.1;
allow 192.168.38.30;
deny all;
}
配置说明:
stub_status on:开启状态页功能
access_log off:关闭状态页访问日志,避免日志膨胀
allow/deny:设置访问控制,仅允许Zabbix Server访问
检查Nginx配置是否正确:
nginx -t
重新加载Nginx配置:
nginx -s reload
# 或
systemctl reload nginx
2.3 验证Nginx状态页
在Zabbix Server端访问状态页,测试能否正常获取数据:
curl http://192.168.38.28/nginx-status
如果配置正确,将返回类似以下格式的状态信息:
Active connections: 1
server accepts handled requests
1942 1942 2254
Reading: 0 Writing: 1 Waiting: 0
2.4 Nginx监控指标详解
Nginx状态页输出的各项指标含义如下:
| 指标 | 说明 | 监控意义 |
|---|---|---|
| Active connections | 当前活跃的连接数(包括Reading、Writing、Waiting) | 反映实时并发连接数 |
| accepts | Nginx总共接受的连接数 | 累计连接数,反映总访问量 |
| handled | Nginx成功完成握手的连接数 | 与accepts对比可判断连接丢失情况 |
| requests | Nginx总共处理的请求数 | 累计请求数,结合accepts可计算请求/连接比 |
| Reading | 正在读取客户端请求头的连接数 | 反映网络接收效率 |
| Writing | 正在向客户端发送响应的连接数 | 反映响应输出效率 |
| Waiting | 空闲长连接数(Keep-Alive等待) | 反映长连接复用情况 |
📊 关键指标解读:
accepts vs handled :正常情况下两者应接近相等。如果
accepts > handled,说明有连接握手失败,可能存在网络问题或客户端异常。QPS计算 :通过两次采集
requests值的差值除以时间间隔,可计算出每秒请求数。Active connections :如果该值持续接近Nginx配置的
worker_connections上限,说明需要扩容。
2.5 配置Nginx监控模板宏变量
Zabbix官方提供了 Nginx by Zabbix agent 模板,同样需要先配置宏变量。
操作步骤:
-
进入 数据采集(Data collection) → 模板(Templates)
-
搜索找到 Nginx by Zabbix agent 模板
-
切换到 宏(Macros) 选项卡
-
修改以下宏变量:

| 宏变量 | 默认值 | 修改为 | 说明 |
|---|---|---|---|
{$NGINX.STATUS.PATH} |
/nginx-status | /nginx-status | 状态页访问路径 |
{$NGINX.STATUS.PORT} |
80 | 80 | Nginx服务端口 |
{$NGINX.STATUS.SCHEME} |
http | http | 协议类型 |
2.6 链接Nginx监控模板
-
进入 数据采集(Data collection) → 主机(Hosts)
-
选择需要监控的Nginx主机(192.168.38.28)
-
切换到 模板(Templates) 选项卡
-
点击 链接新模板(Link new templates)
-
搜索并选择 Nginx by Zabbix agent
-
点击 更新(Update) 保存配置

2.7 验证Nginx监控数据
模板链接完成后,进入 监控(Monitoring) → 最新数据(Latest data),筛选该主机,应能看到Nginx相关的监控项数据在正常采集。
三、常见问题排障
3.1 Apache状态页无法访问
| 问题现象 | 排查步骤 |
|---|---|
| 404 Not Found | 检查mod_status模块是否加载:`httpd -M |
| 403 Forbidden | 检查状态页配置中的Allow指令是否包含Zabbix Server IP |
| 无数据返回 | 检查防火墙是否放行80端口,确认Apache服务运行状态 |
3.2 Nginx状态页无法访问
| 问题现象 | 排查步骤 |
|---|---|
| 404 Not Found | 检查ngx_http_stub_status_module是否编译:`nginx -V 2>&1 |
| 403 Forbidden | 检查状态页配置中的allow指令是否包含Zabbix Server IP |
| 无数据返回 | 检查防火墙配置,确认Nginx服务运行状态 |
3.3 Zabbix模板无数据
| 问题现象 | 排查方向 |
|---|---|
| 模板应用后无数据 | 检查Zabbix Agent 2是否正常运行,端口10050是否通 |
| 部分监控项显示不支持 | 检查宏变量配置是否正确,特别是路径和端口 |
| 数据采集延迟 | 检查Zabbix Server与Agent之间的网络延迟 |
四、监控告警建议
4.1 Apache关键告警指标
| 告警项 | 建议阈值 | 说明 |
|---|---|---|
| IdleWorkers 过低 | < 10 |
线程池即将耗尽 |
| BusyWorkers 持续高位 | > 80% 总线程数 |
请求并发过大 |
| ReqPerSec 异常波动 | 环比变化 > 200% | 可能存在流量突增或DDoS攻击 |
| 服务不可用 | 状态页返回非200 | 服务进程崩溃或端口被占用 |
4.2 Nginx关键告警指标
| 告警项 | 建议阈值 | 说明 |
|---|---|---|
| Active connections 过高 | > worker_connections的80% |
连接数即将达到上限 |
| accepts vs handled 差值 | 连续差值 > 100 | 存在连接握手失败 |
| 服务不可用 | 状态页返回非200 | Nginx进程异常或端口不通 |
结语
本文通过详细的步骤演示了如何使用Zabbix监控Apache和Nginx Web服务器。核心要点总结如下:
-
状态页开启:Apache和Nginx均内置了状态页功能,通过简单的配置即可开启
-
指标采集:通过Zabbix Agent定期抓取状态页数据,实现自动化监控
-
模板化配置:利用Zabbix官方模板,大幅降低了配置复杂度
-
宏变量管理:通过宏变量实现模板的灵活复用
在实际生产环境中,建议同时关注Web服务器与应用业务的关联监控,将Web服务器性能指标与应用响应时间、错误率等结合分析,构建完整可观测性体系。
📌 相关文章推荐:
《Zabbix监控Windows应用实践》
《Zabbix利用SNMP协议监控群晖NAS》
如果文章对您有帮助,欢迎点赞收藏!如有疑问,请在评论区留言交流。
原创文章,转载请注明出处。