在 Debian 上监控 Apache2 性能
一 快速启用 Apache 内置监控 mod_status
- 启用模块与扩展状态:执行命令sudo a2enmod status,并在 Apache 配置中确保存在ExtendedStatus On(例如在**/etc/apache2/mods-enabled/status.conf**的内设置)。
- 配置访问控制(示例仅本机访问):
<Location “/server-status”>
SetHandler server-status
Require host localhost
- 使配置生效:sudo systemctl restart apache2。
- 访问方式:
- 人类可读页面:http://your_server_ip/server-status
- 机器可读数据:http://your_server_ip/server-status?auto(便于被采集器抓取)
- 安全建议:状态页仅在内网或受控网络开放,必要时通过反向代理或防火墙限制来源 IP。
二 系统资源与网络监控命令
- 进程与负载:top/htop(安装:sudo apt-get install htop),观察CPU、内存及apache2进程占用。
- 综合资源:dstat(安装:sudo apt-get install dstat),常用:dstat -c -d -m -n 查看 CPU、磁盘、内存、网络。
- 内存与 CPU:vmstat 1(安装:sudo apt-get install sysstat)。
- 磁盘 I/O:iostat -x 1(安装:sudo apt-get install sysstat)。
- 网络与连接:ss -tulpen | grep :80,或旧版netstat -tulpen | grep :80。
- 历史与回溯:sar -u 1、sar -d 1(来自sysstat,用于查看历史 CPU/磁盘)。
- 容器/服务组视角:systemd-cgtop(按 cgroup 聚合资源)。
三 日志与 APM 可观测性
- 实时日志排查:
- 访问日志:tail -f /var/log/apache2/access.log
- 错误日志:tail -f /var/log/apache2/error.log
- 指标与可视化:
- Prometheus + Grafana:以mod_status?auto为数据源,绘制请求速率、并发连接、响应时间等面板。
- Zabbix:通过 HTTP 采集器或脚本监控 Apache,配置邮件/短信等告警。
- Apache SkyWalking:面向微服务的APM,提供分布式追踪、度量聚合与可视化(适合复杂架构)。
- Categraf / Apache HertzBeat:轻量采集器与可视化平台,支持Apache 指标采集与告警。
四 设置告警与演练
- 简单可用性探测脚本(Python,检查**/server-status?auto**,异常时发邮件):
- 关键配置:SMTP_SERVER/PORT、SMTP_USERNAME/PASSWORD、FROM_EMAIL、TO_EMAIL
- 轮询间隔:60 秒
- 用法示例:在服务器上定时执行,或配合 systemd/cron 守护运行。
- 平台化告警:在Zabbix中创建触发器(如5xx 比例、响应时间阈值、服务不可用),在Prometheus中基于指标设置Alertmanager规则,在HertzBeat/Categraf中配置阈值与通知渠道。
- 负载与压力测试(演练用):
- ab(ApacheBench):ab -n 1000 -c 100 http://your_server_ip/(基准测试)
- http_load:http_load -parallel 10 -seconds 10 urls.txt(多并发会话)
- httperf:httperf --hog --server=your_server_ip --uri=/ --num-conns=10000 --wsess=10,10,0.1(更高精度)
- 测试注意:尽量在与生产接近的环境执行,控制并发与时长,并在测试期间同步观察CPU、内存、I/O、网络与mod_status指标以定位瓶颈。