一、使用Apache自带mod_status模块(基础实时监控)
mod_status是Apache内置的性能监控模块,无需额外安装,可提供实时的服务器状态、请求处理、工作线程等信息,适合快速查看当前性能状况。
/etc/apache2/apache2.conf或/etc/httpd/conf/httpd.conf),找到并取消LoadModule status_module modules/mod_status.so的注释(若未找到则添加),确保模块加载。Require规则,如允许特定IP访问):<IfModule mod_status.c>
ExtendedStatus On # 开启详细状态信息(可选,需消耗少量资源)
<Location "/server-status">
SetHandler server-status
Require local # 仅允许本地访问(生产环境建议限制为可信IP)
</Location>
</IfModule>
sudo systemctl restart apache2(或httpd,取决于系统)使配置生效。http://服务器IP/server-status,即可查看实时性能指标(如服务器运行时间、请求数、字节传输量、工作线程状态等)。二、第三方监控工具(专业全面监控)
若需要长期存储、可视化或告警功能,可使用以下第三方工具,覆盖从基础到高级的监控需求:
Categraf是专为收集系统和服务指标设计的轻量级工具,支持Apache2监控,可将数据发送至Prometheus、InfluxDB等存储系统。
sudo yum install -y categraf(CentOS)或对应系统的包管理命令。conf/input.apache/apache.toml文件,设置Apache状态页面的URI和主机信息:[[instances]]
scrape_uri = "http://localhost/server-status/?auto" # Apache状态页面地址
host_override = "" # 主机名覆盖(可选)
insecure = false # 是否跳过SSL验证(HTTPS时需设为true)
./categraf --test --inputs apache测试配置,无误后重启服务:sudo systemctl restart categraf。Prometheus负责采集指标,Grafana负责数据可视化,适合构建专业的监控 dashboard。
prometheus.yml,添加Apache抓取任务(指向Categraf或直接指向Apache的/server-status);1860的官方模板),通过Prometheus作为数据源,展示请求速率、响应时间、错误率等指标。Zabbix支持分布式监控,可监控Apache的性能指标(如CPU、内存、请求数)及服务可用性,支持告警和自动化运维。
zabbix_agentd.conf添加UserParameter);Template App Apache)。Nagios通过插件监控Apache状态,支持邮件、短信等告警方式,适合注重告警的场景。
check_apache);三、实时命令行工具(快速排查问题)
若需要快速查看系统或Apache的实时性能,可使用以下命令行工具:
ApacheTop显示Apache的实时请求统计(如请求数/秒、响应时间、客户端IP分布),需安装并启用mod_status。
sudo apt install apachetop(Debian/Ubuntu)或sudo yum install apachetop(CentOS);apachetop -f /var/log/apache2/access.log(指定访问日志路径),实时查看请求详情。Netdata是实时系统监控工具,提供Apache性能指标的可视化 dashboard,无需复杂配置。
sudo bash <(curl -Ss https://my-netdata.io/kickstart.sh),按照提示完成安装;http://服务器IP:19999,进入Netdata dashboard,查看Apache的“Requests”“Bandwidth”等指标。四、自定义脚本+定时任务(自动化运维)
通过编写Shell脚本,可监控Apache进程状态、端口监听、资源使用等情况,结合Cron定时任务实现自动化检查。
#!/bin/bash
if ! pgrep -x apache2 > /dev/null; then
echo "$(date): Apache is not running. Restarting..." >> /var/log/apache_monitor.log
sudo systemctl start apache2
fi
crontab -e,添加以下内容(每5分钟执行一次):*/5 * * * * /path/to/apache_monitor.sh
将脚本保存为/path/to/apache_monitor.sh,并赋予执行权限:chmod +x /path/to/apache_monitor.sh。