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

Kustomize配置Prometheus告警:如何按告警名修改优先级?

可行,两种主流方案解决你的问题

方案1:利用PrometheusRule的Strategic Merge特性(推荐)

Prometheus Operator定义的PrometheusRule CRD中,spec.groups[].rules数组的合并策略是基于alert字段的——也就是说,Kustomize的strategic merge补丁会自动匹配相同alert值的规则项,只修改你指定的字段,不会覆盖base层的summary、description等通用配置。

操作步骤:

  1. Base层保留完整通用配置(比如base/prometheus-rules.yaml):
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: common-alerts
spec:
  groups:
  - name: resource-alerts
    rules:
    - alert: HighCPUUsage
      expr: 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[1m])) * 100) > 70
      labels:
        severity: warning
      annotations:
        summary: "High CPU usage on {{ $labels.instance }}"
        description: "CPU usage is above 70% for 5 minutes"
    - alert: HighMemoryUsage
      expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 80
      labels:
        severity: warning
      annotations:
        summary: "High Memory usage on {{ $labels.instance }}"
        description: "Memory usage is above 80% for 5 minutes"
  1. Overlay层创建针对性补丁文件(比如overlay/prod/high-cpu-patch.yaml),只写需要修改的字段:
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: common-alerts
spec:
  groups:
  - name: resource-alerts
    rules:
    - alert: HighCPUUsage
      expr: 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[1m])) * 100) > 90
      labels:
        priority: critical
  1. 在Overlay的kustomization.yaml中引用补丁:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base

patches:
- path: high-cpu-patch.yaml
  target:
    group: monitoring.coreos.com
    version: v1
    kind: PrometheusRule
    name: common-alerts

执行kustomize build overlay/prod后,你会看到HighCPUUsage规则的expr和priority被修改,而summary、description等通用配置完全保留。

方案2:拆分告警为独立PrometheusRule资源

如果不想依赖数组操作,可以将base层的每个告警拆成单独的PrometheusRule资源,每个文件只定义一条规则。这样overlay层可以直接通过资源名称精准修改,完全不用管数组索引。

操作步骤:

  1. Base层拆分资源:
    比如base/high-cpu-alert.yaml:
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: high-cpu-usage-alert
spec:
  groups:
  - name: resource-alerts
    rules:
    - alert: HighCPUUsage
      expr: 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[1m])) * 100) > 70
      labels:
        severity: warning
      annotations:
        summary: "High CPU usage on {{ $labels.instance }}"
        description: "CPU usage is above 70% for 5 minutes"

base/high-memory-alert.yaml同理。

  1. Overlay层针对单个资源修改:
    在overlay/prod/kustomization.yaml中添加补丁:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base

patches:
- target:
    group: monitoring.coreos.com
    version: v1
    kind: PrometheusRule
    name: high-cpu-usage-alert
  patch: |-
    - op: replace
      path: /spec/groups/0/rules/0/expr
      value: 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[1m])) * 100) > 90
    - op: replace
      path: /spec/groups/0/rules/0/labels/priority
      value: critical

这种方式更适合告警数量较多的场景,每个告警独立管理,修改时不会影响其他规则。


内容的提问来源于stack exchange,提问作者Homer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:47:54