插件窝 干货文章 LNMP如何监控系统状态

LNMP如何监控系统状态

监控 状态 status Nginx 593    来源:    2025-05-05

LNMP系统监控方案

LNMP(Linux+Nginx+MySQL+PHP)环境的系统监控可以通过多种工具和方法实现。以下是全面的监控方案:

一、基础系统监控

  1. top/htop

    • 实时监控CPU、内存使用情况
    • htop提供更友好的界面和交互操作
  2. vmstat

    • vmstat 1 每秒显示一次系统状态
    • 监控进程、内存、I/O等
  3. iostat

    • iostat -x 1 监控磁盘I/O情况
    • 特别关注%util和await指标
  4. dstat

    • 综合监控工具,显示CPU、磁盘、网络、内存等数据

二、网络监控

  1. iftop

    • 实时监控网络流量
    • 按流量排序显示各连接
  2. nload

    • 监控网络带宽使用情况
    • 分设备显示入站/出站流量
  3. netstat/ss

    • netstat -tulnp 查看端口监听情况
    • ss -s 查看socket统计

三、LNMP组件监控

Nginx监控

  1. 状态模块

    location /nginx_status {
       stub_status on;
       access_log off;
       allow 127.0.0.1;
       deny all;
    }
    
    • 访问http://server/nginx_status获取基础状态
  2. 日志分析

    • 使用goaccess实时分析访问日志
    • awk '{print $1}' access.log | sort | uniq -c | sort -nr 统计IP访问

MySQL监控

  1. mysqladmin

    • mysqladmin -u root -p extended-status 查看扩展状态
    • mysqladmin -u root -p processlist 查看当前连接
  2. 慢查询日志

    SET GLOBAL slow_query_log = 'ON';
    SET GLOBAL long_query_time = 1;
    
    • 使用mysqldumpslow分析慢查询

PHP监控

  1. php-fpm状态页

    pm.status_path = /status
    
    • 访问http://server/status?json获取JSON格式状态
  2. opcache状态

    • 使用opcache_get_status()函数查看缓存状态

四、专业监控工具

  1. Prometheus + Grafana

    • 收集各类指标数据
    • 可视化展示
  2. Zabbix

    • 全面的企业级监控方案
    • 支持告警功能
  3. ELK Stack

    • 收集和分析日志
    • Elasticsearch + Logstash + Kibana

五、自动化监控脚本示例

#!/bin/bash

# 监控CPU使用率
cpu_usage=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')

# 监控内存使用
mem_usage=$(free -m | awk 'NR==2{printf "%.2f%%", $3*100/$2 }')

# 监控磁盘空间
disk_usage=$(df -h | awk '$NF=="/"{printf "%s", $5}')

# 监控MySQL状态
mysql_status=$(systemctl is-active mysql)

# 监控Nginx状态
nginx_status=$(systemctl is-active nginx)

# 输出结果
echo "CPU使用率: $cpu_usage%"
echo "内存使用率: $mem_usage"
echo "根分区使用率: $disk_usage"
echo "MySQL状态: $mysql_status"
echo "Nginx状态: $nginx_status"

六、告警设置

  1. 使用crontab定期执行监控脚本
  2. 当指标超过阈值时发送邮件/短信告警
  3. 推荐工具:
    • sendmailmutt发送邮件
    • 企业微信/钉钉机器人发送告警
    • telegram-send发送到Telegram

通过以上方案组合使用,可以全面监控LNMP系统的运行状态,及时发现并处理潜在问题。