插件窝 干货文章 LNMP环境下如何监控系统

LNMP环境下如何监控系统

监控 Exporter Prometheus Nginx 452    来源:    2025-05-06

LNMP环境系统监控方案

在LNMP(Linux + Nginx + MySQL + PHP)环境下,有效的系统监控对于确保服务稳定性和性能优化至关重要。以下是一个全面的监控方案:

一、系统基础监控

1. 系统资源监控

  • 工具选择

    • Prometheus + Grafana:主流的时间序列监控方案
    • Netdata:轻量级实时监控工具
    • Zabbix:企业级监控解决方案
  • 监控指标

    • CPU使用率、负载
    • 内存使用情况
    • 磁盘I/O和空间
    • 网络流量
    • 系统进程数

2. 安装配置示例(Prometheus + Grafana)

# 安装Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.30.3/prometheus-2.30.3.linux-amd64.tar.gz
tar xvfz prometheus-*.tar.gz
cd prometheus-*

# 配置prometheus.yml
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']

# 启动
./prometheus --config.file=prometheus.yml &

# 安装Node Exporter(用于系统指标)
wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz
tar xvfz node_exporter-*.tar.gz
cd node_exporter-*
./node_exporter &

# 安装Grafana
sudo apt-get install -y adduser libfontconfig1
wget https://dl.grafana.com/oss/release/grafana_8.2.0_amd64.deb
sudo dpkg -i grafana_8.2.0_amd64.deb
sudo systemctl start grafana-server

二、Nginx监控

1. 启用Nginx状态模块

server {
    listen 80;
    server_name status.example.com;

    location /nginx_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        deny all;
    }
}

2. 监控指标

  • 活跃连接数
  • 请求处理速率(requests per second)
  • 各状态连接数(reading/writing/waiting)
  • 响应时间分布

3. Prometheus监控Nginx

使用nginx-prometheus-exporter:

docker run -p 9113:9113 nginx/nginx-prometheus-exporter -nginx.scrape-uri http://<nginx-host>:80/nginx_status

三、MySQL监控

1. 基础监控

-- 创建监控专用用户
CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'password' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';

-- 常用监控SQL
SHOW GLOBAL STATUS;
SHOW ENGINE INNODB STATUS;

2. 使用mysqld_exporter

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.13.0/mysqld_exporter-0.13.0.linux-amd64.tar.gz
tar xvfz mysqld_exporter-*.tar.gz
cd mysqld_exporter-*

# 配置.my.cnf
[client]
user=exporter
password=password

# 启动
./mysqld_exporter --config.my-cnf=.my.cnf &

3. 关键指标

  • 查询性能(QPS/TPS)
  • 连接数和使用率
  • 缓冲池使用情况
  • 复制状态(主从)
  • 慢查询数量

四、PHP-FPM监控

1. 启用状态页

; php-fpm.conf
pm.status_path = /status
ping.path = /ping

2. Nginx配置

location ~ ^/(status|ping)$ {
    include fastcgi_params;
    fastcgi_pass unix:/var/run/php-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    allow 127.0.0.1;
    deny all;
}

3. 使用php-fpm_exporter

docker run -d -p 9253:9253 --name php-fpm-exporter hipages/php-fpm_exporter --phpfpm.scrape-uri "unix:///var/run/php-fpm.sock;/status"

4. 关键指标

  • 活跃进程数
  • 空闲进程数
  • 请求处理速率
  • 进程内存使用
  • 慢请求计数

五、日志监控与分析

1. ELK Stack

  • Filebeat:收集日志
  • Logstash:处理日志
  • Elasticsearch:存储日志
  • Kibana:可视化日志

2. 简单方案(使用GoAccess)

# 实时监控Nginx访问日志
goaccess /var/log/nginx/access.log -o /var/www/html/report.html --real-time-html --log-format=COMBINED

六、告警配置

1. Prometheus Alertmanager

# alertmanager.yml
route:
  group_by: ['alertname']
  receiver: 'email-notifications'

receivers:
- name: 'email-notifications'
  email_configs:
  - to: 'admin@example.com'
    from: 'alertmanager@example.com'
    smarthost: 'smtp.example.com:587'
    auth_username: 'user'
    auth_password: 'password'

2. 关键告警项

  • 服务不可用(Nginx/MySQL/PHP-FPM)
  • 资源耗尽(CPU/内存/磁盘)
  • 错误率突增
  • 慢查询过多

七、高级监控方案

1. 应用性能监控(APM)

  • Pinpoint:开源APM工具
  • SkyWalking:分布式系统监控
  • New Relic:商业APM方案

2. 全链路监控

  • Jaeger:分布式追踪系统
  • Zipkin:分布式追踪系统

八、监控面板示例

使用Grafana可以创建综合监控面板,包含: 1. 系统资源概览 2. Nginx请求率和响应时间 3. MySQL查询性能和连接池 4. PHP-FPM进程状态 5. 服务状态指示器

通过以上方案,您可以全面掌握LNMP环境的运行状态,及时发现并解决问题,确保系统稳定高效运行。