架构概述

服务器指标 → Node Exporter → Prometheus(存储 + 查询)→ Grafana(可视化)
                                 ↓
                           Alertmanager → 通知渠道

Docker Compose 部署

version: '3.8'
services:
  prometheus:
    image: prom/prometheus:latest
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus-data:/prometheus
    ports:
      - "127.0.0.1:9090:9090"
    restart: unless-stopped

  grafana:
    image: grafana/grafana:latest
    volumes:
      - grafana-data:/var/lib/grafana
    ports:
      - "127.0.0.1:3000:3000"
    restart: unless-stopped

  node-exporter:
    image: prom/node-exporter:latest
    ports:
      - "127.0.0.1:9100:9100"
    restart: unless-stopped

volumes:
  prometheus-data:
  grafana-data:

Prometheus 配置

# prometheus.yml
global:
  scrape_interval: 15s
  evaluation_interval: 15s

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

Grafana 设置

首次登录

  1. 访问 http://your-server:3000
  2. 默认账号:admin / admin
  3. 添加 Prometheus 数据源:http://prometheus:9090
  4. 导入仪表盘 ID 1860(Node Exporter Full)

常用查询

# CPU 使用率
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

# 内存使用率
100 * (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)

# 磁盘使用率
100 * (1 - node_filesystem_avail_bytes / node_filesystem_size_bytes)

# 网络流量
rate(node_network_receive_bytes_total[5m])
rate(node_network_transmit_bytes_total[5m])

告警配置

# alert-rules.yml
groups:
  - name: server
    rules:
      - alert: HighCPUUsage
        expr: 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "CPU usage > 80% on {{ $labels.instance }}"

      - alert: DiskFull
        expr: 100 * (1 - node_filesystem_avail_bytes / node_filesystem_size_bytes) > 85
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "Disk > 85% on {{ $labels.instance }}"

推荐的 Grafana 仪表盘

仪表盘 ID 名称 说明
1860 Node Exporter Full 全面的服务器指标
11074 Server Monitoring 简洁的服务器概览
11772 Docker Monitoring Docker 容器监控
13659 Nginx Performance Nginx 性能监控