首页主机资讯Ubuntu LNMP如何监控服务器性能

Ubuntu LNMP如何监控服务器性能

时间2025-11-28 23:22:03发布访客分类主机资讯浏览1392
导读:Ubuntu LNMP 性能监控实操指南 一 快速巡检命令 组件状态与端口 查看服务状态:sudo systemctl status nginx、sudo systemctl status mysql、sudo systemctl st...

Ubuntu LNMP 性能监控实操指南

一 快速巡检命令

  • 组件状态与端口
    • 查看服务状态:sudo systemctl status nginxsudo systemctl status mysqlsudo systemctl status php-fpm
    • 实时资源:top/htop(安装:sudo apt-get install htop
    • 内存与 I/O:free -hvmstat 1iostat -x 1(安装:sudo apt-get install sysstat
    • 端口与连接:ss -tulpen | egrep ‘:(80|443|3306|9000)’
  • Nginx
    • 启用状态页:在 server 块中加入
      location /nginx_status {
          
          stub_status on;
          
          allow 127.0.0.1;
          
          deny all;
      
      }
      
      
      访问 http://服务器IP/nginx_status 查看 Active connections、Reading、Writing、Waiting 等指标。
  • MySQL/MariaDB
    • 运行状态:mysqladmin -u root -p status
    • 慢查询分析:mysqldumpslow /var/log/mysql/slow.log
  • PHP-FPM
    • 进程与慢日志:检查 /var/log/php-fpm/error.logwww.conf 中的 slowlogrequest_slowlog_timeout 配置
  • 日志定位
    • Nginx/var/log/nginx/error.log
    • MySQL/var/log/mysql/error.log
    • PHP-FPM/var/log/php-fpm/error.log

二 可视化与长期监控

  • Prometheus + Grafana
    • 节点与数据库导出器:部署 node_exporter(9100)mysqld_exporter(9104),Nginx 可用 nginx-prometheus-exporter(9113)stub_status 配合 nginx-vts-exporter
    • Prometheus 配置示例:
      scrape_configs:
        - job_name: 'node'
          static_configs: [{
       targets: ['localhost:9100'] }
      ]
        - job_name: 'nginx'
          static_configs: [{
       targets: ['服务器IP:9113'] }
      ]
        - job_name: 'mysql'
          static_configs: [{
       targets: ['服务器IP:9104'] }
          ]
      
    • Grafana:安装后添加 Prometheus 数据源,导入 Node Exporter FullMySQL Overview 等面板,实现历史趋势与告警可视化。
  • Zabbix
    • 安装 zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf,创建数据库与用户,配置 /etc/zabbix/zabbix_server.conf 的数据库连接并启动服务,适合企业级监控与告警。

三 关键指标与告警阈值建议

维度 关键指标 建议阈值或动作
CPU load average、CPU 使用率 持续高于 CPU 核心数> 80% 持续 5 分钟,优先排查慢查询/阻塞进程
内存 可用内存、swap 使用 可用 < 10%swap 持续 > 0,优化应用内存或扩容
磁盘 IOPS、await、util await 高、util 接近 100%,检查磁盘健康与 SQL/日志写入
网络 带宽占用、丢包/重传 带宽接近网卡上限或 重传率高,优化内容分发/压缩与链路质量
Nginx Active/Waiting、5xx 比例 5xx > 1%Waiting 持续偏高,检查后端健康与超时配置
MySQL Threads_connected、Slow_queries、QPS/TPS Threads_connected 接近上限或 慢查询突增,优化索引/SQL 与连接池
PHP-FPM 进程占用、慢请求 慢请求增多进程打满,调整 pm.max_children/request_terminate_timeout 与慢日志

四 日志与慢查询优化

  • Nginx
    • 打开 access_log,按需记录 $request_time、$upstream_response_time,定位耗时阶段;结合 error.logstatus 页面排查 499/502/504
  • MySQL
    • 开启慢查询日志(如未开启):在 my.cnf 中设置 slow_query_log=1slow_query_log_file=/var/log/mysql/slow.loglong_query_time=1,用 mysqldumpslowpt-query-digest 分析并优化索引/SQL。
  • PHP-FPM
    • 开启 slowlogrequest_slowlog_timeout=1,定位耗时函数与调用栈;结合 error.log 观察 Fatal/Parse errormax_execution_time 超限。

五 一键巡检脚本示例

#!/usr/bin/env bash
echo "=== 系统资源 ==="
free -h &
    &
     echo
vmstat 1 5 &
    &
     echo
iostat -x 1 5 &
    &
     echo

echo "=== 服务状态 ==="
systemctl is-active --quiet nginx &
    &
     echo "Nginx: active" || echo "Nginx: inactive"
systemctl is-active --quiet mysql  &
    &
     echo "MySQL:  active" || echo "MySQL:  inactive"
systemctl is-active --quiet php-fpm &
    &
     echo "PHP-FPM: active" || echo "PHP-FPM: inactive"

echo "=== 端口监听 ==="
ss -tulpen | egrep ':(80|443|3306|9000)' &
    &
     echo

echo "=== Nginx 状态页 ==="
curl -s http://127.0.0.1/nginx_status 2>
    /dev/null || echo "Nginx status disabled or not reachable"

echo "=== MySQL 状态 ==="
mysqladmin -u root -p status 2>
    /dev/null || echo "MySQL status failed (check credentials/permissions)"
  • 将脚本加入 crontab 每日巡检,并结合 Prometheus/GrafanaZabbix 做长期趋势与阈值告警。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu LNMP如何监控服务器性能
本文地址: https://pptw.com/jishu/759567.html
LNMP环境下如何配置邮件服务 LNMP中PHP如何进行错误日志记录

游客 回复需填写必要信息