温馨提示×

Ubuntu LNMP环境下如何监控网站

小樊
41
2026-01-04 20:13:36
栏目: 云计算

Ubuntu LNMP 网站监控实操指南

一 监控目标与分层

  • 可用性:网站能否访问、返回码是否为 200/3xx、关键接口是否超时。
  • 性能:首字节时间 TTFB、响应时间、每秒请求数 RPS、Nginx 并发连接与排队、后端 PHP-FPM 进程与队列、数据库 MySQL 连接与慢查询。
  • 资源:CPU、内存、磁盘 I/O、网络、文件句柄、连接数。
  • 日志与异常:Nginx 访问/错误日志、PHP-FPM 错误日志、MySQL 错误与慢查询日志。
  • 告警与可视化:设置阈值告警(如 5xx 比例、响应时间、磁盘使用率),用面板展示趋势与瓶颈。

二 快速上手 系统与服务状态检查

  • 资源与连接
    • 实时资源:top/htop、vmstat、iostat、free、df、ss(替代 netstat,更快更全)。
    • 示例:iostat -x 1 查看磁盘 IO;ss -s 查看当前连接统计。
  • 服务状态
    • Nginx:sudo systemctl status nginx;配置语法:sudo nginx -t;优雅重载:sudo nginx -s reload。
    • MySQL:sudo systemctl status mysql;状态与进程:mysqladmin status;SHOW PROCESSLIST; 慢查询日志定位瓶颈。
    • PHP-FPM:sudo systemctl status php-fpm;观察进程池与慢日志(需启用 slowlog)。
  • 日志排查
    • Nginx 错误:tail -n50 /var/log/nginx/error.log
    • MySQL 错误:tail -n50 /var/log/mysql/error.log
    • PHP 错误:路径随版本与 SAPI 不同,常见如 /var/log/php/7.x/error.log 或 /var/log/php-fpm.log。

三 关键组件监控要点与配置

  • Nginx
    • 启用状态页:在 server 块加入
      • location /nginx_status {
        • stub_status on;
        • allow 127.0.0.1;
        • deny all;
        • }
      • 访问示例:curl http://127.0.0.1/nginx_status,关注 Active connections、Reading/Writing/Waiting、Requests。
    • 日志与性能:开启 access_log,结合慢请求分析(如 5xx、超时、上游超时)。
  • MySQL
    • 命令行巡检:mysqladmin status、SHOW GLOBAL STATUS LIKE ‘Threads_connected’;、SHOW PROCESSLIST;
    • 慢查询:开启 slow_query_log,用 pt-query-digest 分析并优化高成本 SQL。
  • PHP-FPM
    • 进程与队列:pm.status_path = /fpm_status(配置于 pool 段),Nginx 通过 location 暴露仅内网访问。
    • 慢请求:slowlog = /var/log/php-fpm/www-slow.log;request_slowlog_timeout = 5s。
  • 外部 APM(可选)
    • New Relic / Datadog / Blackfire.io:用于应用性能剖析、调用图与事务追踪,快速定位 PHP 层瓶颈。

四 告警与可视化方案

  • Prometheus + Grafana(开源、灵活)
    • 采集:Node Exporter(主机指标)、Nginx Exporter(stub_status)、MySQL Exporter、PHP-FPM Exporter(需开启 status)。
    • 可视化:Grafana 导入 Nginx/MySQL/PHP-FPM 官方或社区仪表盘,配置阈值告警(如 5xx 比例、平均响应时间、磁盘使用率)。
  • Zabbix 6.0 LTS(企业级、开箱即用)
    • 架构:Zabbix Server + Zabbix Agent(主动/被动),支持 SNMP、ICMP、端口、自定义脚本等。
    • Ubuntu 22.04 可基于 LNMP 部署 Zabbix 6.0 LTS,提供模板化监控与告警通知(邮件、企业微信、钉钉等)。

五 自动化自愈与巡检脚本

  • 守护脚本思路(示例)
    • 每分钟巡检 Nginx/MySQL/PHP-FPM;若进程异常或端口未监听,尝试重启并记录日志。
    • 示例片段(需按实际路径与进程名调整):
      • #!/usr/bin/env bash
        • ts=$(date ‘+%F %T’)
        • for svc in nginx mysql php-fpm; do
        • if ! systemctl is-active --quiet $svc; then
        • systemctl restart $svc && echo "$ts $svc restarted" >> /var/log/monitor.log
          
        • fi
        • done
    • 加入 crontab:* * * * * /usr/local/bin/monitor.sh
  • 风险提示
    • 自动重启可能掩盖根因,建议同时保留告警与日志,结合 APM/慢查询定位问题。
    • 生产环境建议先在测试环境验证脚本与阈值,避免误重启导致业务抖动。

0