
前言在Web服务架构中Apache和Nginx占据了绝大部分市场份额。对这两款核心Web服务器进行实时监控是保障业务系统稳定运行的关键环节。Zabbix提供了完善的模板支持通过开启Web服务器自带的状态页结合Zabbix Agent的主动采集能力我们可以轻松实现对Apache和Nginx的性能监控。本文将分别详细介绍如何使用Zabbix监控Apache和Nginx涵盖状态页开启、监控指标解读、模板配置及宏变量修改等全流程。一、监控Apache Web服务器1.1 实验环境说明组件配置Apache服务器AlmaLinux 9.1IP: 192.168.38.23Zabbix Server192.168.38.30Zabbix 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 /location配置说明ExtendedStatus On开启扩展状态信息提供更详细的统计数据location /server-status定义状态页访问路径SetHandler server-status指定使用server-status处理器Allow from设置允许访问的IP地址建议仅允许Zabbix Server和相关运维IP重启Apache服务使配置生效systemctl restart httpd # 或 systemctl reload httpd1.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: 481.4 Apache监控指标详解访问http://192.168.38.23/server-status?auto后输出各项指标的含义如下指标说明监控意义Total Accesses服务器累计处理的请求总数反映服务器总负载量如果长时间不变说明请求未到达Total kBytes服务器累计传输的字节总数反映流量总量UptimeApache服务运行时间秒监控服务稳定性重启会重置该值ReqPerSec每秒处理的请求数QPS核心性能指标反映当前吞吐量BytesPerSec每秒传输的字节数反映当前带宽使用情况BytesPerReq每个请求平均传输字节数反映请求平均大小BusyWorkers正在处理请求的工作线程数反映当前并发处理中的请求数IdleWorkers空闲工作线程数关键告警指标为0时表示线程池耗尽⚠️ 告警阈值参考当IdleWorkers持续为0时说明所有工作线程都在忙碌新的请求将进入排队等待最终可能因超时而失败。建议设置触发器当IdleWorkers 10时发出预警。1.5 Apache工作线程状态码解读在状态页的详细视图中每个工作线程会显示一个状态字符含义如下状态码含义说明_等待连接线程空闲等待新请求S准备连接正在准备建立连接R读取请求正在读取客户端请求头W发送响应正在向客户端发送响应数据K保持连接长连接保持状态Keep-AliveDDNS查询正在执行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}8080Apache服务端口{$APACHE.STATUS.SCHEME}httphttp协议类型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.1IP: 192.168.38.28Zabbix Server192.168.38.30Zabbix 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 nginx2.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: 02.4 Nginx监控指标详解Nginx状态页输出的各项指标含义如下指标说明监控意义Active connections当前活跃的连接数包括Reading、Writing、Waiting反映实时并发连接数acceptsNginx总共接受的连接数累计连接数反映总访问量handledNginx成功完成握手的连接数与accepts对比可判断连接丢失情况requestsNginx总共处理的请求数累计请求数结合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}8080Nginx服务端口{$NGINX.STATUS.SCHEME}httphttp协议类型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 | grep status403 Forbidden检查状态页配置中的Allow指令是否包含Zabbix Server IP无数据返回检查防火墙是否放行80端口确认Apache服务运行状态3.2 Nginx状态页无法访问问题现象排查步骤404 Not Found检查ngx_http_stub_status_module是否编译nginx -V 21 | grep stub403 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存在连接握手失败服务不可用状态页返回非200Nginx进程异常或端口不通结语本文通过详细的步骤演示了如何使用Zabbix监控Apache和Nginx Web服务器。核心要点总结如下状态页开启Apache和Nginx均内置了状态页功能通过简单的配置即可开启指标采集通过Zabbix Agent定期抓取状态页数据实现自动化监控模板化配置利用Zabbix官方模板大幅降低了配置复杂度宏变量管理通过宏变量实现模板的灵活复用在实际生产环境中建议同时关注Web服务器与应用业务的关联监控将Web服务器性能指标与应用响应时间、错误率等结合分析构建完整可观测性体系。相关文章推荐《Zabbix监控Windows应用实践》《Zabbix利用SNMP协议监控群晖NAS》如果文章对您有帮助欢迎点赞收藏如有疑问请在评论区留言交流。原创文章转载请注明出处。