You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Prometheus告警中结合单引号使用换行符?

Prometheus告警单引号场景下实现换行的解决方案

核心问题

你需要在Prometheus告警的description注解中实现换行,但因字段内包含{{ $value | printf "%.2f" }}这类带双引号的模板语法,无法直接用双引号包裹整个字段,且直接换行未生效。

最优解决方案

使用YAML的**字面量块标量(|)**定义description内容,它会原样保留文本中的换行符,同时无需转义内部的双引号,完美适配你的场景。

配置示例

- alert: MemoryHigh
  expr: (x_process_resident_memory_bytes / y_resident_memory_limit_bytes) * 100 > 90
  for: 2m
  labels:
    x: y
  annotations:
    summary: Memory high (instance {{ $labels.instance }})
    description: |
      {{ $labels.pod }} in {{ $labels.environment}} is using more than 90% of allocated RAM
      Memory = {{ $value | printf "%.2f" }}
      Environment = {{ $labels.environment}}

原理说明

  • 字面量块标符|会完整保留文本中的换行、缩进(注意块内内容的缩进层级要与description:保持一致)
  • 块内的模板语法(包括带双引号的printf参数)无需转义,Prometheus模板引擎可正常解析
  • 最终告警展示时,换行会被正确渲染

替代方案(单引号包裹写法)

如果坚持使用单引号包裹,可在单引号内显式写入\n实现换行,Prometheus配置解析器支持这种写法:

description: '{{ $labels.pod }} in {{ $labels.environment}} is using more than 90% of allocated RAM\nMemory = {{ $value | printf "%.2f" }}\nEnvironment = {{ $labels.environment}}'

此写法可读性较差,优先推荐块标量方式。

内容的提问来源于stack exchange,提问作者cosmos-1905-14

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 10:30:53