Prometheus 开源、时序型监控告警系统完整讲解

laoluo
laoluo
laoluo
管理员
145
文章
0
粉丝
教程评论13阅读模式

一、一句话定义

Prometheus 是一套开源、时序型监控告警系统,由 Google Borg 监控体系衍生,2016 年加入 CNCF 并毕业,现在是云原生标准监控方案,专门用来采集服务器、容器、数据库、中间件、业务程序的指标(Metrics)。

Prometheus 开源、时序型监控告警系统完整讲解

 

二、核心特性

  1. 时序数据存储 所有监控数据带时间戳,格式:指标名{标签key=value} 数值 时间戳,适合 CPU、内存、QPS、延迟这类持续变化数值。
  2. Pull 拉取采集模型 Prometheus 主动定期去各服务拉指标,而非服务主动上报;配套支持 PushGateway 接收短生命周期任务(CI/Job)推送数据。
  3. 多维标签(Label) 通过标签区分实例、环境、集群、接口,例如 http_requests_total{env="prod",instance="10.0.0.1",path="/api/list"},灵活聚合筛选。
  4. 内置强大查询语言 PromQL 可做求和、平均值、速率、环比、聚合、阈值判断,用于绘图和告警规则。
  5. 独立告警组件 AlertManager 分离告警逻辑,支持告警分组、抑制、静默、路由,对接钉钉、企业微信、邮件、短信等。
  6. 无强依赖,单机可部署 自带本地时序数据库,不需要额外存储;大规模集群可搭配远程存储(Thanos、Mimir)。
  7. 丰富生态 Exporter 各类组件专用采集程序,开箱即用。

三、整体架构组件

1. Prometheus Server(核心服务)

  • 抓取目标指标(Scrape)
  • 本地存储时序数据
  • 提供 PromQL 查询接口
  • 加载告警规则,生成告警发送给 AlertManager

2. Exporter(指标采集器)

业务 / 组件本身不暴露 Prometheus 格式指标,靠 Exporter 转换输出:

  • node-exporter:服务器 CPU、内存、磁盘、网络
  • mysqld-exporter /redis-exporter:数据库监控
  • nginx-exporter:Nginx 流量、连接数
  • kube-state-metrics:K8s 集群资源指标
  • blackbox-exporter:端口、HTTP、DNS 拨测
  • 自定义:业务代码埋点暴露 /metrics 接口(Java/Python/Go 都有 SDK)

3. Push Gateway

针对批处理、一次性任务(定时脚本、CI 任务),程序主动把指标推送到网关,再由 Prometheus 拉取。

4. AlertManager

接收 Prometheus 产生的告警,做二次处理:

  • 去重、分组
  • 告警抑制(宕机后屏蔽关联子告警)
  • 告警静默(临时屏蔽)
  • 分发到各类通知渠道

5. Grafana(配套可视化)

Prometheus 只存数据、提供查询,无美观大屏;Grafana 对接 Prometheus 做监控大盘、曲线图、仪表盘。

四、数据采集流程

  1. 被监控端(程序 / Exporter)开放 /metrics HTTP 接口,输出纯文本格式指标;
  2. Prometheus 根据配置 scrape_configs 定时 HTTP 请求拉取数据;
  3. 数据存入本地时序库;
  4. Grafana 使用 PromQL 查询渲染图表;
  5. 满足告警阈值时,推送告警至 AlertManager 发送通知。

五、典型使用场景

  1. 服务器基础设施监控(Linux/Windows)
  2. Kubernetes 容器、Pod、节点监控(云原生首选)
  3. 中间件、数据库性能监控
  4. 业务埋点监控:接口 QPS、错误率、响应耗时、在线用户数
  5. 站点 / 端口可用性拨测监控

六、和传统监控(Zabbix)核心区别

维度 Prometheus Zabbix
数据类型 时序指标 Metrics 指标 + 日志 + 触发器
采集模式 Pull 主动拉取 Agent 被动上报
云原生适配 完美适配容器 / K8s 偏重传统物理机虚拟机
扩缩容 自动服务发现(K8s/DNS/consul) 需手动配置主机
存储 轻量本地时序库 关系型数据库 MySQL
可视化 依赖 Grafana 自带 Web 界面

七、最简工作示例

  1. 启动 node-exporter 暴露机器指标;
  2. Prometheus 配置 target 抓取 node-exporter;
  3. PromQL 查询 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) 获取 CPU 使用率;
  4. Grafana 用这条语句绘制 CPU 曲线;
  5. 配置规则:CPU > 85% 持续 5 分钟触发告警,通过 AlertManager 发企业微信提醒。

 
laoluo
  • 本文由 laoluo 发表于2026年6月27日 21:07:07
  • 转载请务必保留本文链接:https://www.mydata-api.com/tutorials/294.html
匿名

发表评论

匿名网友
确定

拖动滑块以完成验证