date
related_level
slug
type
relate_date
summary
status
tags
category
last_updated
Jan 10, 2026 07:17 PM
是否已更新
orginal_page
是否推荐
参考资料
Defining recording rules | Prometheus

Defining recording rules | Prometheus
Prometheus project documentation for Defining recording rules
Prometheus 通过命令行标志和配置文件进行配置
- 命令行标志配置不可变的系统参数
- 配置文件定义与抓取作业及其实例相关的所有内容,以及要加载哪些规则文件
- 要指定要加载的配置文件,请使用
--config.file标志
- Prometheus 可以在运行时重新加载其配置
- 向 Prometheus 进程发送
SIGHUP信号或向/-/reload端点发送 HTTP POST 请求(当启用 `--web.enable-lifecycle标志时)来触发配置重新加载 - 如果新配置格式不正确,则更改将不会生效
Prometheus 三大通用服务发现:文件,HTTP,DNS
文件服务发现
- 系统会监视各个文件的变更,其父目录也会被隐式监视
- 如果父目录中包含大量其他无关文件,则可能导致问题,因为这些文件也会被一并监视
scrape_configs.file_sd_configs.<file_sd_config>
- 服务发现文件格式
yaml 格式
json 格式
- 在 relabeling(标签重写)阶段,目标可以使用以下元标签
__meta_filepath:该目标所来源的文件路径
HTTP 服务发现
- 从一个 HTTP 端点获取目标列表,该端点应返回零个或多个 <static_config> 的 JSON 数组
- 目标端点必须返回 HTTP 200 响应,HTTP 响应头中的 Content-Type 必须为 application/json,且响应体必须是有效的 JSON
scrape_configs.http_sd_configs.<http_sd_config>
JSON 响应 body 格式
响应样例
DNS 服务发现
- 系统会定期查询这些域名以发现目标列表
- 所使用的 DNS 服务器从
/etc/resolv.conf中读取 - 仅支持基本的 DNS A、AAAA、MX、NS 和 SRV 记录查询,不支持 RFC6763 中定义的高级 DNS-SD(DNS Service Discovery)机制
scrape_configs.http_sd_configs.<http_sd_config>
- 在 relabeling(标签重写)阶段,目标上可使用以下元标签
__meta_dns_name:生成该发现目标的 DNS 记录名称。__meta_dns_srv_record_target:SRV 记录中的目标字段。__meta_dns_srv_record_port:SRV 记录中的端口字段。__meta_dns_mx_record_target:MX 记录中的目标字段。__meta_dns_ns_record_target:NS 记录中的目标字段。
Prometheus 配置文件
配置 global 章节
配置 otlp 章节
scrape_configs.<scrape_config> 部分
特定服务发现配置包含
- 主流公有云(AWS/EC2、Azure、GCE 等)
- 其他云与主机服务商(DigitalOcean、Hetzner、Linode 等)
- 私有云/虚拟化平台(OpenStack、Triton)
- 容器与编排系统(Docker、K8s、Nomad、Marathon)
- 服务注册中心(Consul、Eureka、Kuma、Nerve、Serverset)
- 通用协议型发现(DNS、HTTP、File)
- 配置管理工具集成(PuppetDB、Uyuni)
<static_config> 允许指定目标列表及其通用标签集
<relabel_config> 在抓取目标之前动态地重写其标签集
- 每个抓取配置都可以配置多个 relabel 步骤,这些步骤会按照在配置文件中出现的顺序应用于每个目标的标签集
- 所有以
__开头的标签(包括临时和内部标签)在重标记结束后会被自动移除 - 如需在重标记步骤间传递临时值,可使用
__tmp前缀,该前缀被 Prometheus 保留,不会冲突
初始标签
job来自job_name
__address__为目标的<host>:<port>
- 若未显式设置
instance标签,重标记后会自动设为__address__的值
__scheme__、__metrics_path__、__param_<name>、__scrape_interval__、__scrape_timeout__等由scrape_config提供
- 服务发现机制可能注入以
__meta_开头的元标签
支持以下 relabel_action
lowercase
uppercase
replace将正则表达式与拼接后的 source_labels 值进行匹配- 如果匹配成功,则将 target_label 设置为 replacement,并将 replacement 中的匹配组引用(如
${1}、${2}等)替换为实际捕获的值 - 如果正则表达式不匹配,则不执行任何替换操作
keep
keepequal丢弃那些拼接后的 source_labels 与 target_label 的值不相等的目标
labelkeep将正则表达式应用于所有标签名称,任何不匹配的标签都将从标签集中移除
drop
dropequal丢弃那些拼接后的 source_labels 与 target_label 的值相等的目标
labeldrop将正则表达式应用于所有标签名称,任何匹配的标签都将从标签集中移除
hashmod将拼接后的 source_labels 进行哈希运算后对 modulus 取模,并将结果赋值给 target_label
labelmap将正则表达式应用于所有源标签名称(而不仅限于 source_labels 中指定的标签)。将匹配的标签的值复制到由 replacement 指定的新标签名中,并将 replacement 中的匹配组引用(如${1}、${2}等)替换为实际捕获的内容
- relabel_action 使用
labeldrop和labelkeep时必须小心,以确保在移除标签后指标仍然具有唯一标签
<metric_relabel_configs> 在样本被摄入(ingestion)前的最后一步应用的
- 其配置格式和操作类型与目标重标记(target relabeling)完全相同
- 指标重标记不会应用于自动生成的时间序列
- 常见使用场景
- 排除那些因成本过高而不宜摄入的时间序列
<http_config> 配置可以参考另一文章的 HTTP 客户端配置文件,基本上是一致的
- Prometheus 命令行工具
promtool
alerting.alert_relabel_configs 在告警发送给 Alertmanager 之前应用的
- 其配置格式和操作类型与目标重标记(target relabeling)完全相同,并且在外部标签(external labels)之后应用
- 详见
scrape_configs.<scrape_config>.<relabel_config>部分
- 常见使用场景
- 确保一对高可用(HA)的 Prometheus 服务器(具有不同的 external labels)发送完全相同的告警
alerting.alertmanagers.<alertmanager_config> 配置告警管理器
服务发现(基本和 scrape 部分一致)
- 主流公有云(AWS/EC2、Azure、GCE 等)
- 其他云与主机服务商(DigitalOcean、Hetzner、Linode 等)
- 私有云/虚拟化平台(OpenStack、Triton)
- 容器与编排系统(Docker、K8s、Nomad、Marathon)
- 服务注册中心(Consul、Eureka、Nerve、Serverset)
- 少一个 Kuma
- 通用协议型发现(DNS、HTTP、File)
- 配置管理工具集成(PuppetDB、Uyuni)
一些可用的身份验证配置 sigv4
remote_write.<remote_write> 写入到远程
write_relabel_configs在将样本发送到远程端点之前对其进行重新标记。 在外部标签(external labels)之后应用- 可用于限制发送哪些样本
一些可用的身份验证配置 sigv4, azuread, google_iam
remote_read.<remote_read> 从远程端点读取
storage.tsdb.<tsdb> 配置 TSDB 的运行时可重新加载配置设置
storage.exemplars.<exemplars> 配置用于存储所有时间序列示例(exemplars)的环形缓冲区的最大大小
- 实验性,必须通过
--enable-feature=exemplar-storage启用
tracing.<tracing_config> 通过 OTLP 协议将跟踪从 Prometheus 导出到跟踪后端
- 实验性功能,将来可能会发生变化
- Author:白鸟3
- URL:https://blog.kun2peng.top/operation/prometheus_configs
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
