一、使用Apache内置模块mod_status(基础监控)
mod_status是Apache自带的轻量级模块,无需额外安装软件,可实时查看服务器的请求处理数、CPU负载、工作线程状态、连接数等核心指标,适合快速排查性能瓶颈。
配置步骤:
/etc/httpd/conf/httpd.conf或/etc/apache2/apache2.conf),添加/修改以下内容:<IfModule mod_status.c>
ExtendedStatus On # 开启详细状态信息(可选,但能提供更全面的指标如请求处理时间)
<Location "/server-status">
SetHandler server-status
Require local # 仅允许本地访问(生产环境可替换为特定IP或网段,如Require ip 192.168.1.100)
</Location>
</IfModule>
# CentOS/RHEL系统
sudo systemctl restart httpd
# Debian/Ubuntu系统
sudo systemctl restart apache2
http://your_server_ip/server-status,即可看到实时性能数据(若设置了Require local,需从服务器本机访问)。二、第三方实时监控工具(自动化与可视化)
第三方工具可实现自动化数据采集、可视化 dashboard、告警通知,适合生产环境长期监控,以下是常用工具:
Netdata:开源实时监控工具,支持Linux系统,提供CPU、内存、磁盘、网络及Apache性能指标(如请求数/秒、响应时间)的可视化 dashboard,默认监听19999端口。
安装步骤:
sudo curl -s https://packagecloud.io/install/repositories/netdata/netdata/script.rpm.sh | sudo bash # 添加官方仓库(CentOS)
sudo yum install netdata -y # 安装Netdata
sudo systemctl start netdata # 启动服务
sudo systemctl enable netdata # 开机自启
访问http://your_server_ip:19999即可查看 dashboard。
Prometheus + Grafana:适合大规模分布式系统的监控方案。
apache_exporter(Apache专用导出器)采集Apache性能指标(如apache_accesses_total、apache_workers)。apache_exporter:wget https://github.com/Lusitaniae/apache_exporter/releases/download/v0.11.0/apache_exporter-0.11.0.linux-amd64.tar.gz
tar -xzf apache_exporter-*.tar.gz
cd apache_exporter-* && ./apache_exporter # 启动导出器(默认监听9117端口)
apache_exporter数据(编辑prometheus.yml):scrape_configs:
- job_name: 'apache'
static_configs:
- targets: ['localhost:9117']
Zabbix:企业级分布式监控工具,支持Apache性能指标(如并发连接数、请求处理时间)的监控与告警(如当并发连接数超过1000时发送邮件通知)。
核心步骤:
zabbix_agentd.conf指定Zabbix Server地址:Server=zabbix_server_ip
Hostname=your_apache_server
三、命令行工具(快速排查)
命令行工具无需安装额外软件,适合快速检查Apache状态或临时排查问题:
top -p $(pgrep -d',' httpd)可过滤出Apache进程的CPU、内存占用。vmstat 1 5表示每1秒刷新一次,共显示5次。netstat -ant | grep ":80"可查看80端口的连接数(ESTABLISHED表示活跃连接)。curl -o /dev/null -s -w "%{time_total}\n" http://localhost/可输出首页加载的总时间(单位:秒)。四、日志分析(历史性能回溯)
日志文件记录了Apache的访问与错误信息,通过分析日志可了解历史性能趋势、定位问题根源:
/var/log/httpd/access_log(CentOS)或/var/log/apache2/access.log(Debian)。可使用tail -f /var/log/httpd/access_log实时监控最新请求,或用awk、grep等工具分析(如统计每小时请求数:awk '{print $4}' access_log | cut -d: -f2 | uniq -c)。/var/log/httpd/error_log(CentOS)或/var/log/apache2/error.log(Debian)。通过tail -f /var/log/httpd/error_log可实时查看错误信息,帮助快速定位性能问题(如频繁的404错误可能导致不必要的磁盘I/O)。五、自定义脚本+定时任务(个性化监控)
通过编写Shell脚本,可监控Apache的特定指标(如进程是否存在、请求数是否超过阈值),并结合Cron定时任务实现定期检查与告警。
示例脚本(检查Apache进程):
#!/bin/bash
if ! pgrep -x httpd &>/dev/null; then
echo "$(date): Apache is not running. Starting..." >> /var/log/apache_monitor.log
systemctl start httpd
fi
添加Cron定时任务(每5分钟执行一次):
crontab -e
输入以下内容:
*/5 * * * * /path/to/apache_monitor.sh
说明:脚本会检查Apache进程是否存在,若不存在则启动服务,并将结果记录到/var/log/apache_monitor.log中。