2. Prometheus 概述
Prometheus
Prometheus 是一个开源监控系统,最初由 SoundCloud 开发,并在 2012 年成为社区开源项目。它在 2016 年加入了云原生计算基金会,成为 Kubernetes 之后的第二个托管项目。
Prometheus 的特点:
- 多维数据模型:通过度量名称和键值对标识时间序列数据,实现多维度查询。
- 灵活的查询语言(PromQL):允许进行复杂的查询。
- 无需依赖分布式存储:单个服务节点即可工作。
- 基于 HTTP 的 Pull 模式:被监控系统只需要提供一个 HTTP 接口,Prometheus 定期通过该接口拿到监控数据并存储。
- 推送时间序列数据:通过 PushGateway 支持。主要用于支持短时作业的指标数据收集。
- 服务发现:动态发现监控目标,适合大规模和快速增长的环境。
- 多种图形和仪表盘支持:尽管 Prometheus 自身的 Web 控制台简单,但可与 Grafana 集成提供丰富的图表展示。
Prometheus 的组成和架构

Prometheus Server:
- 核心组件,负责抓取和存储时间序列数据。定期从配置的目标(通常是 HTTP 端点)抓取指标数据。
Pushgateway: - 用于支持短期作业的指标收集,为了防止作业在 Prometheus 主动抓取之前就已结束。短期作业可以将指标推送到 Pushgateway,Prometheus 再从 Pushgateway 拉取数据。
Exporters: - 用于暴露指标的工具,将不同系统或服务的数据转换为 Prometheus 可读取的格式。
Alertmanager: - 负责处理 Prometheus Server 发送的报警。
Prometheus web UI: - 可视化页面,也包含结合Grafana进行数据展示或告警发送
Prometheus 的数据模型
Prometheus 将所有数据存储为时间序列;具有相同度量名称以及标签属于同一个指标。
每个时间序列都由度量标准名称和一组键值对(也成为标签)唯一标识。
Prometheus 时间序列格式的基本结构:<metric name>{<label name>=<label value>,...} value
- metric name:描述度量数据的名称,例如 http_requests_total。
- label:键值对,用于进一步描述指标。例如,method="GET" 和 handler="/api"。
- value:度量数据的值。
Prometheus 的指标类型
Prometheus 的指标类型主要有以下四种:
- Counter(计数器):用于表示一个递增的计数值,通常用于计算请求的数量、任务完成的次数或错误发生的次数。计数器的值只能增加或在重启时重置为零。
- Gauge(仪表盘):用于表示一个可以任意上下变化的值,适合用于表示温度、内存使用量或并发请求数等。仪表盘的值可以增加或减少。
- Histogram(直方图):用于对观察值进行采样,并将其分布在配置的桶(buckets)中。直方图适合用于测量请求持续时间或响应大小等。
- Summary(摘要):类似于直方图,也用于对观察值进行采样,但它直接提供可配置的分位数(quantiles),适合用于需要精确分位数的场景。

浙公网安备 33010602011771号