温馨提示×

Debian LAMP如何监控系统性能

小樊
31
2026-01-01 10:20:07
栏目: 智能运维

Debian LAMP性能监控实操指南

一 监控目标与分层

  • 系统层:CPU、内存、磁盘 I/O、网络、文件描述符与负载,关注是否出现持续高占用或 I/O 等待。
  • 服务层:
    • Apache:并发连接、请求耗时、子进程/线程使用、缓存命中、关键错误码(如 5xx)。
    • MySQL/MariaDB:连接数、慢查询、查询缓存/缓冲池命中、复制延迟(主从)。
    • PHP:执行时间、内存峰值、OPcache 命中率与缓存失效。
  • 应用层:关键业务接口时延、峰值 QPS、错误率与超时率。
  • 日志层:集中采集与分析 Apache 访问/错误日志MySQL 错误/慢查询日志、系统日志,用于定位瓶颈与异常来源。

二 快速上手 命令行与内置工具

  • 实时资源观测
    • 综合资源:top/htop(CPU、内存、负载)、vmstat 1(系统整体与 CPU/IO)、iostat -x 1(磁盘 I/O 详细)、free -m(内存)、df -h(磁盘空间)、netstat -tulpen | grep :80|:443(端口与连接)。
    • 磁盘 I/O 细粒度:iotop(按进程统计读写)。
  • Apache 观测
    • 运行状态与并发:systemctl status apache2;连接与模块:apache2ctl statusapache2ctl -M
    • 实时日志跟踪:tail -f /var/log/apache2/access.log | awk ‘{print $1,$7,$9}’tail -f /var/log/apache2/error.log
  • MySQL/MariaDB 观测
    • 运行状态:systemctl status mysql;当前状态:mysqladmin statusmysqladmin --relative --sleep 5 extended-status(间隔采样)。
    • 慢查询:编辑 /etc/mysql/my.cnf,开启 slow_query_loglong_query_time,分析 /var/log/mysql/mysql-slow.log
  • PHP 观测
    • 配置与模块:php -vphp -m;OPcache 状态:在 PHP 中调用 opcache_get_status() 或安装 php-opcache 后用 phpinfo() 查看命中率与缓存使用情况。
  • 小结:上述命令覆盖“资源-服务-应用-日志”的基本面,适合作为日常巡检与问题初判的“第一响应”工具集。

三 可视化与告警 集中监控方案

  • Prometheus + Grafana
    • 组件与采集:部署 Prometheus 采集时序数据,安装 node_exporter 采集主机指标;Apache 可用 apache_exporterMySQL 可用 mysqld_exporterPHP-FPM 可用 php-fpm_exporter
    • 快速落地:使用 Docker Compose 一键启动 Prometheus、Grafana 与 Exporter;在 Grafana 中添加 Prometheus 数据源并导入官方或社区仪表盘(如 Node Exporter Full、Apache、MySQL Overview)。
  • 日志集中与可视化
    • 方案:ELK Stack(Elasticsearch + Logstash + Kibana) 或轻量的 EFK(Elasticsearch + Fluent Bit + Kibana),集中采集 Apache/MySQL/系统 日志,构建错误趋势、慢查询排行、访问热力图等。
  • 其他可选工具
    • 端口与服务状态:WatchYourPorts(端口监控,支持导出至 InfluxDB2 并在 Grafana 展示)。
    • 命令行可视化:sampler(基于 Shell 命令的实时可视化面板,适合临时观测与演示)。
  • 告警建议:在 Prometheus 中配置规则(如 CPU 持续 >80%、磁盘可用 <10%、Apache 5xx 增多、MySQL 连接数接近上限、慢查询突增),通过 Alertmanager 对接邮件/企业微信/钉钉/Slack 等渠道。

四 LAMP 各组件关键指标与采集方式

组件 关键指标 采集方式/命令 建议阈值或动作
系统 CPU 使用率、负载、内存使用、磁盘 I/O 等待、磁盘空间 top/vmstat/iostat/free/df 负载持续高于 CPU 核数、I/O 等待高企、可用空间 <10% 时扩容或优化
Apache 并发连接、请求耗时、子进程/线程使用、5xx 错误率、缓存命中 apache2ctl status、access/error 日志、apache_exporter 5xx 突增或连接耗尽时检查慢请求与后端性能
MySQL/MariaDB 连接数、慢查询数、查询/缓冲池命中、复制延迟 mysqladmin status/extended-status、slow query log、mysqld_exporter 连接数接近上限、慢查询增多时优化 SQL/索引与缓冲池
PHP 脚本执行时间、内存峰值、OPcache 命中率 php -i/opcache_get_status、php-fpm_exporter 执行时间长或内存峰值接近 memory_limit 时优化代码或调整配置
网络 带宽占用、TCP 重传率、连接状态 sar -n DEV/sockstat、netstat 带宽打满或重传率高时排查异常流量与连接泄漏
说明:阈值需结合业务规模与历史基线动态设定,告警应分级(警告/严重)并设置抑制与降噪策略,避免告警风暴。

五 落地步骤与优化闭环

  • 基线采集:用命令行工具与 Exporter 建立“当前状态”基线(CPU/内存/磁盘/连接/慢查询/命中率等),记录峰值与周期性规律。
  • 部署可视化:启动 Prometheus + Grafana,接入 Node/Apache/MySQL/PHP-FPM Exporter,导入仪表盘并验证数据刷新与维度展示。
  • 配置告警:在 Prometheus 编写规则(CPU、内存、磁盘、服务 5xx、连接数、慢查询、OPcache 命中率等),通过 Alertmanager 推送至团队渠道。
  • 日志治理:启用并集中 Apache/MySQL 日志,使用 ELK/EFK 建立错误趋势、慢查询排行、访问异常检测等面板,便于根因分析。
  • 闭环优化:依据监控与日志发现瓶颈,按“先易后难”优化(如开启 OPcache、调整 Apache KeepAlive/MaxRequestWorkers、优化 MySQL innodb_buffer_pool_size 与索引、启用 慢查询日志 并优化 SQL),并回归验证指标是否改善。

0