Prometheus + Grafana 基础监控
监控报警
来源:16idc
Prometheus + Grafana 是现代服务器监控的事实标准。本文介绍基础架构搭建和常用指标配置。
架构概述
服务器指标 → 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 设置
首次登录
- 访问
http://your-server:3000
- 默认账号:
admin / admin
- 添加 Prometheus 数据源:
http://prometheus:9090
- 导入仪表盘 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 性能监控 |