1. 启用Apache自带监控模块(mod_status)
mod_status是Apache内置的性能监控模块,可提供服务器实时状态信息(如请求速率、连接数、带宽、工作进程状态等)。
/etc/apache2/apache2.conf),取消LoadModule status_module modules/mod_status.so的注释(若已注释)。<Location "/server-status">
SetHandler server-status
Require ip 127.0.0.1 # 仅允许本地访问;如需远程访问,可改为Require ip 192.168.1.0/24
</Location>
sudo systemctl restart apache2使更改生效。http://your_server_ip/server-status?auto(替换为服务器IP),即可查看实时性能数据。2. 利用日志分析实现监控告警
Apache的访问日志(/var/log/apache2/access.log)和错误日志(/var/log/apache2/error.log)是监控服务器运行状态的重要数据源,可通过工具分析日志并触发告警。
tail -f /var/log/apache2/error.log实时监控错误日志(如500内部服务器错误、404未找到资源),或tail -f /var/log/apache2/access.log查看访问日志。grep命令筛选异常日志,例如统计500错误的数量:grep ' 500 ' /var/log/apache2/access.log | wc -l;或统计404错误的URL:grep ' 404 ' /var/log/apache2/access.log | awk '{print $7}' | sort | uniq -c | sort -nr。#!/bin/bash
ERROR_THRESHOLD=5 # 500错误的阈值
LOG_FILE="/var/log/apache2/access.log"
EMAIL="admin@example.com"
ERROR_COUNT=$(grep ' 500 ' "$LOG_FILE" | wc -l)
if [ "$ERROR_COUNT" -gt "$ERROR_THRESHOLD" ]; then
echo "Apache服务器出现大量500错误(${ERROR_COUNT}次),请立即检查!" | mail -s "Apache 500错误告警" "$EMAIL"
fi
赋予脚本执行权限(chmod +x monitor_apache.sh),并通过cron设置每5分钟运行一次(*/5 * * * * /path/to/monitor_apache.sh)。3. 使用第三方监控工具
第三方工具可实现更全面的监控(如性能指标、可用性、多服务器集中管理)和告警(邮件、短信、钉钉等)。常见工具包括:
check_apache插件监控Apache状态(如进程是否运行、连接数是否超限),支持自定义告警规则(如进程宕机时发送短信)。apache_exporter导出),Grafana负责可视化(如展示请求速率趋势图),并结合Alertmanager实现告警(如带宽使用率超过80%时触发钉钉通知)。4. 日志轮转管理(避免日志过大)
日志文件会随时间增长占用大量磁盘空间,需通过logrotate工具定期轮转、压缩和删除旧日志。
/etc/logrotate.d/apache2),默认配置通常如下:/var/log/apache2/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
systemctl reload apache2 > /dev/null 2>&1 || true
endscript
}
配置说明:daily表示每天轮转;rotate 14表示保留14个旧日志;compress表示压缩旧日志;postrotate表示轮转后重新加载Apache(确保日志切换正常)。sudo logrotate -vf /etc/logrotate.d/apache2,验证配置是否生效。