内容提要
Prometheus 是配置驱动的监控系统,核心配置包括全局设置、抓取配置、规则文件和告警。它通过 exporter 采集指标,数据格式含 HELP、TYPE 和指标值。支持记录规则聚合数据、告警规则触发 Alertmanager,并用 PromQL 查询。指标类型有 Counter、Gauge、Histogram、Summary,数据以时间序列存入 TSDB。
延伸解读
配置驱动的监控系统
Prometheus 的配置结构包括全局设置、抓取配置、规则文件和告警设置。全局设置定义抓取间隔、超时时间和规则评估频率等默认值。抓取配置通过 scrape_configs 定义 job,可覆盖全局设置并添加标签。规则文件通过 rule_files 加载记录规则和告警规则。告警设置关联 Alertmanager。理解这些配置是使用 Prometheus 的关键。
Exporter 数据格式解析
Exporter 暴露的指标数据包含 HELP 帮助信息、TYPE 指标类型和实际数据。数据格式为 metric_name{label_name="label_value"} value [timestamp]。指标类型有 Counter、Gauge、Histogram、Summary。这些数据以时间序列形式存入 TSDB。通过访问 exporter 的 /metrics 端点可以查看原始指标,例如 node_exporter 的磁盘 I/O 指标。
记录规则与告警规则
记录规则通过 PromQL 表达式聚合数据,生成新的时间序列。规则文件采用 groups、rule_group、rule 三层结构,其中 record 指定新指标名称,expr 为 PromQL 表达式。告警规则类似,但使用 alert 指定告警名称,并可设置 for 持续时间、labels 和 annotations。告警触发后发送到 Alertmanager,由其进行分组、抑制和静默等处理。
PromQL 查询语言基础
PromQL 表达式由四种类型组成:瞬时向量、区间向量、纯量和字符串。选择器支持瞬时选择、区间选择、时间偏移和 @ 修饰符。操作符包括算术运算和比较运算,以及 sum、max、topk 等聚合操作符。函数丰富,需查阅文档。Google SRE 的四个黄金信号(延迟、流量、错误、饱和度)是常用的监控指标参考。
Q&A
Prometheus 的配置文件主要包含哪些部分?
Prometheus 配置文件主要包括 global(全局设置,如抓取间隔、超时时间、规则计算频率等)、rule_files(规则文件列表)、scrape_configs(抓取配置,用于分组配置 exporter)、alerting(告警设置,关联 Alertmanager)、remote_write 和 remote_read(远程读写设置)。
Prometheus 是如何采集监控数据的?
Prometheus 通过 exporter 采集数据。首先在监控目标上设置 exporter(如 node_exporter),exporter 会暴露符合特定格式的指标数据(包含 HELP、TYPE 和指标值),然后在 Prometheus 的 scrape_configs 中配置 job 来抓取这些 exporter 的数据。
Prometheus 支持哪些指标类型?
Prometheus 支持四种指标类型:Counter(计数器)、Gauge(仪表盘)、Histogram(直方图)和 Summary(摘要)。
什么是记录规则(record rule)?如何使用?
记录规则用于聚合成新的时间序列。它通过 groups、rule_group、rule 三层结构定义,其中 rule 包含 record(新指标名称)和 expr(PromQL 表达式)。配置后需在 Prometheus 的 rule_files 中引用规则文件。
如何配置告警规则并关联 Alertmanager?
告警规则通过 alert rule 定义,包含 alert(告警名称)、expr(PromQL 表达式)、for(持续时间)、labels 和 annotations。在 Prometheus 配置文件的 alerting 部分指定 Alertmanager 的地址(如 targets: ["localhost:9093"])即可关联。
PromQL 有哪些基本概念和操作符?
PromQL 表达式由四种类型组成:Instant vector(瞬时向量)、Range vector(区间向量)、Scalar(纯量)和 String(字符串)。支持选择器(如瞬时选择、区间选择、时间偏移等)、二元操作符(算术和比较)以及聚合操作符(如 sum、max、topk 等)。