Prometheus监控实战 概述 Prometheus是一个开源的系统监控和告警工具包,最初由SoundCloud开发。它采用拉取方式收集指标数据,支持多维数据模型和强大的PromQL查询语言,已成为云原生时代的监控标准。 核心架构 Prometheus监控系统由以下核心组件构成: Prometheus Server: 核心服务,负责抓取和存储时序数据 Exporter: 指标暴露器,将各类指标转换为Prometheus格式 Pushgateway: 用于临时任务的指标推送网关 Alertmanager: 告警管理器,处理告警规则和发送通知 Grafana: 可视化仪表板,展示监控数据(非Prometheus组件但常配合使用) 安装部署 Docker部署方式 配置文件示例
Prometheus是一个开源的系统监控和告警工具包,最初由SoundCloud开发。它采用拉取方式收集指标数据,支持多维数据模型和强大的PromQL查询语言,已成为云原生时代的监控标准。
Prometheus监控系统由以下核心组件构成:
# 创建数据目录 mkdir -p /opt/prometheus/data # 启动Prometheus docker run -d \ --name prometheus \ -p 9090:9090 \ -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \ -v /opt/prometheus/data:/prometheus \ prom/prometheus:latest \ --config.file=/etc/prometheus/prometheus.yml \ --storage.tsdb.path=/prometheus
global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node_exporter' static_configs: - targets: ['192.168.1.10:9100', '192.168.1.11:9100']
docker run -d \ --name node-exporter \ -p 9100:9100 \ -v /proc:/host/proc:ro \ -v /sys:/host/sys:ro \ -v /:/rootfs:ro \ prom/node-exporter:latest
监控指标:CPU、内存、磁盘、网络等系统级指标。
docker run -d \ --name cadvisor \ -p 8080:8080 \ -v /:/rootfs:ro \ -v /var/run:/var/run:ro \ -v /sys:/sys:ro \ -v /var/lib/docker/:/var/lib/docker:ro \ google/cadvisor:latest
监控指标:容器资源使用情况、网络、文件系统等。
100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100
(1 - (node_filesystem_avail_bytes{fstype!="tmpfs"} / node_filesystem_size_bytes)) * 100
创建告警规则文件alerts.yml:
groups: - name: example_alerts interval: 30s rules: - alert: HighCPUUsage expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80 for: 5m labels: severity: warning annotations: summary: "CPU使用率过高" description: "实例 {{ $labels.instance }} CPU使用率超过80%" - alert: DiskSpaceLow expr: (1 - (node_filesystem_avail_bytes / node_filesystem_size_bytes)) * 100 > 85 for: 10m labels: severity: critical annotations: summary: "磁盘空间不足"
在prometheus.yml中加载告警规则:
rule_files: - "alerts.yml"
http://prometheus:9090Grafana官方提供了丰富的预构建仪表板:
--storage.tsdb.retention.time控制数据保留时长Prometheus提供了强大而灵活的监控能力,通过合理配置Exporter、告警规则和可视化仪表板,可以构建完整的监控体系,及时发现和处理系统异常。