centos lamp网站性能监控
小樊
34
2025-12-27 12:03:35
监控目标与分层
- 面向 CentOS 上的 LAMP(Linux、Apache、MySQL/MariaDB、PHP),建议按层次建立监控:系统基础(CPU、内存、磁盘、网络)、Web 服务(Apache 吞吐与连接)、数据库(连接、慢查询、复制)、应用与 PHP(执行耗时、内存、错误)、日志与可用性(服务状态、端口、日志异常、可用性探测)。这样能快速定位瓶颈并减少平均修复时间(MTTR)。
快速排障与命令行基线
- 系统资源与负载
- 实时与整体:
top/htop、vmstat 1、uptime
- 内存与交换:
free -h
- 磁盘与 I/O:
df -h、du -sh /var/www/html/*、iostat -x 1(关注 %util,持续高于 70% 需警惕)
- 网络与端口:
ss -tulpen | grep -E ':(80|443|3306)'、netstat -tuln | grep -E ':(80|443|3306)'
- 日志与可用性
- 服务状态:
systemctl status httpd、systemctl status mysqld
- 系统日志:
journalctl -xe、/var/log/messages、/var/log/secure
- 日志摘要:
logwatch --output text
- LAMP 组件快速检查
- Apache:
apachectl status;启用 mod_status 后访问 /server-status?auto 查看当前请求与进程状态
- MySQL:
mysqladmin status、SHOW STATUS LIKE 'Threads_connected';、SHOW PROCESSLIST;
- PHP-FPM:
systemctl status php-fpm;配合 OpCache 提升脚本执行效率
- 建议将上述命令固化为巡检脚本,定时记录与告警,便于回溯分析。
可视化与集中监控方案
- 平台选型与特点
- Zabbix:企业级分布式监控,支持 Agent/HTTP 采集、灵活告警、图形与模板生态完善
- Nagios:成熟稳定,插件丰富,适合传统 IT 与网络设备的可用性监控
- Cacti:基于 SNMP + RRDtool,擅长流量与接口历史趋势图
- Prometheus + Grafana:时序数据 + 强大可视化,适合云原生与动态环境
- Netdata:轻量实时,开箱即用的 Web 仪表盘
- Cockpit:CentOS 自带 Web 管理,系统资源与容器监控易上手
- 快速落地建议
- 单机或中小规模:优先 Zabbix(Agent 采集系统/端口/进程/日志)或 Netdata(即时可视化)
- 需要历史趋势与自定义大盘:采用 Prometheus + Grafana,配合 node_exporter 采集主机指标
- 有网络设备与流量趋势诉求:引入 Cacti 做 SNMP 流量图,与主机监控分层互补。
组件级监控要点与关键指标
- Apache
- 关键指标:请求速率(Req/s)、并发连接数、Worker/进程状态、响应码分布、带宽占用
- 实施要点:启用 mod_status 获取实时状态;按需调整 prefork/worker 参数(如 MaxRequestWorkers、MaxConnectionsPerChild);开启 mod_cache/mod_deflate/mod_expires 提升静态资源性能与命中率
- MySQL/MariaDB
- 关键指标:Threads_connected、Queries/s(QPS)、Slow queries、InnoDB 缓冲池命中率、复制延迟
- 实施要点:开启 slow_query_log 与合理 long_query_time;定期分析慢查询并优化索引/SQL;使用 Prometheus + MySQL Exporter 或 PMM 做深度分析与可视化
- PHP
- 关键指标:脚本执行时间、内存占用、FPM 进程数/队列、错误与异常
- 实施要点:启用 OpCache;使用 Xdebug/Tideways/Blackfire 做代码级剖析,定位慢函数与热点路径。
告警阈值与自动化巡检示例
- 建议阈值与动作
- CPU 负载:持续 > 5(按核数折算)触发告警,排查进程与 I/O
- 内存:可用内存 < 10% 或 Swap 使用率 > 5% 告警,检查缓存/泄漏
- 磁盘:%util > 70% 持续 5 分钟 告警,定位高 I/O 进程与日志增长
- Apache:5xx 比例 > 1% 或 响应时间 P95 > 2s 告警,检查后端与慢查询
- MySQL:Threads_connected > 0.8×max_connections 告警,优化连接池与慢查询
- 端口:80/443/3306 任一端口不可用立即告警,联动恢复与切换
- 自动化巡检脚本骨架(可配合 cron 与邮件/企业微信/钉钉 Webhook)
- 检查项:负载、内存、磁盘、Apache 进程与端口、MySQL 端口、关键日志错误
- 动作:阈值超限即推送告警;每日生成巡检摘要并归档
- 扩展:接入 Zabbix Agent 的 UserParameter 或 Prometheus Exporter,统一告警路由与可视化
- 注意
- 生产环境请先在测试环境验证阈值与告警策略,避免误报风暴
- 涉及变更(如调整 Apache/MySQL 参数)请做好备份与回滚预案,并在低峰期执行。