如何配置Prometheus丢弃指定标签不存库但传递给Alertmanager
实现方案:Prometheus丢弃标签不存库但告警时传给Alertmanager
可以实现,核心思路是分离存储用指标和告警用指标:保留原始带全标签的指标用于告警判断,通过记录规则生成不带目标标签的指标存入数据库,具体步骤如下:
第一步:不要用
metric_relabel_configs丢弃my_instance_id标签
若提前在指标入库前丢弃该标签,告警规则将无法获取到它,所以必须让原始指标完整保留所有标签进入Prometheus。第二步:用记录规则生成精简版指标用于存储
创建记录规则,复制原始指标但移除my_instance_id标签,生成新指标供长期存储。示例配置:groups: - name: stripped_metrics rules: - record: up_stripped expr: up relabel_configs: - action: labeldrop regex: my_instance_id这里
up_stripped就是去掉了my_instance_id的指标,会被Prometheus存入TSDB,而原始up指标仍保留所有标签。第三步:基于原始指标编写告警规则
告警规则直接使用带全标签的原始指标,这样触发告警时my_instance_id会被包含在告警元数据中,传递给Alertmanager。示例告警规则:groups: - name: instance_alerts rules: - alert: InstanceDown expr: up == 0 for: 1m annotations: summary: "实例 {{ $labels.instance }} (ID: {{ $labels.my_instance_id }}) 已下线"Alertmanager就能在告警文本中引用
my_instance_id标签。(可选)优化存储占用
若担心原始指标占用过多存储,可通过Prometheus的存储配置,缩短原始指标的保留时间,同时让记录规则生成的精简指标保留更长时间:storage: tsdb: retention: 1h # 原始指标仅保留1小时,足够告警判断即可 rules: retention: 30d # 精简指标保留30天用于历史分析
内容的提问来源于stack exchange,提问作者AntonioK
相关产品推荐
相关产品推荐

