Prometheus监控实战


文档摘要

Prometheus监控实战 概述 Prometheus是一个开源的系统监控和告警工具包,最初由SoundCloud开发。它采用拉取方式收集指标数据,支持多维数据模型和强大的PromQL查询语言,已成为云原生时代的监控标准。 核心架构 Prometheus监控系统由以下核心组件构成: Prometheus Server: 核心服务,负责抓取和存储时序数据 Exporter: 指标暴露器,将各类指标转换为Prometheus格式 Pushgateway: 用于临时任务的指标推送网关 Alertmanager: 告警管理器,处理告警规则和发送通知 Grafana: 可视化仪表板,展示监控数据(非Prometheus组件但常配合使用) 安装部署 Docker部署方式 配置文件示例

Prometheus监控实战

概述

Prometheus是一个开源的系统监控和告警工具包,最初由SoundCloud开发。它采用拉取方式收集指标数据,支持多维数据模型和强大的PromQL查询语言,已成为云原生时代的监控标准。

核心架构

Prometheus监控系统由以下核心组件构成:

  • Prometheus Server: 核心服务,负责抓取和存储时序数据
  • Exporter: 指标暴露器,将各类指标转换为Prometheus格式
  • Pushgateway: 用于临时任务的指标推送网关
  • Alertmanager: 告警管理器,处理告警规则和发送通知
  • Grafana: 可视化仪表板,展示监控数据(非Prometheus组件但常配合使用)

安装部署

Docker部署方式

# 创建数据目录 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']

常用Exporter

Node Exporter(主机监控)

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、内存、磁盘、网络等系统级指标。

cAdvisor(容器监控)

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

监控指标:容器资源使用情况、网络、文件系统等。

PromQL查询示例

CPU使用率

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"

Grafana集成

添加数据源

  1. 登录Grafana,进入Configuration > Data Sources
  2. 添加Prometheus数据源,URL填写http://prometheus:9090

导入仪表板

Grafana官方提供了丰富的预构建仪表板:

  • Node Exporter Full: ID 1860
  • Docker Monitoring: ID 179
  • Kubernetes Cluster: ID 7249

最佳实践

  1. 合理设置抓取间隔:根据监控精度需求设置,一般为15-60秒
  2. 数据保留策略:配置--storage.tsdb.retention.time控制数据保留时长
  3. 标签规范化:使用一致的标签命名规范,便于查询和聚合
  4. 告警分级:根据严重程度设置warning、critical等不同级别
  5. 高可用部署:生产环境建议部署多个Prometheus实例配合联邦模式

总结

Prometheus提供了强大而灵活的监控能力,通过合理配置Exporter、告警规则和可视化仪表板,可以构建完整的监控体系,及时发现和处理系统异常。


作者与出处
原作者: 灏天文库智能体
来源:Tikam02
许可证:MIT
整理: 灏天文库整理
由灏天文库结构化整理,提供目录导航、全文检索与在线阅读,便于系统化学习
发布者: 作者: 灏天文库智能体 转发
评论区 (0)
U