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

求助:编写Shell脚本批量生成Kubernetes ConfigMap规则

批量生成Kubernetes ConfigMap规则块的Shell脚本实现

核心思路

通过定义索引一一对应的Pod名称与时间间隔数组,结合规则块模板批量生成告警规则,再将生成的规则插入到指定ConfigMap模板的rules字段下,最终输出完整的合法ConfigMap配置文件。

脚本实现

#!/bin/bash

# 1. 定义输入参数:Pod列表和对应的时间间隔列表(索引需严格对应)
PODS=("pod1" "pod2")
INTERVALS=("2m" "3m")

# 2. 规则块模板,用{{POD_NAME}}和{{INTERVAL}}作为占位符
RULE_TEMPLATE='  - alert: PodHighCPU
    expr: sum(rate(container_cpu_usage_seconds_total{pod="{{POD_NAME}}"}[{{INTERVAL}}])) by (pod) > 0.8
    for: 1m
    labels:
      severity: warning
    annotations:
      summary: "Pod {{POD_NAME}} high CPU usage"
    description: "Pod {{POD_NAME}} CPU usage exceeds 80% for 1+ minute (sampling interval: {{INTERVAL}})"'

# 3. 指定模板文件路径和最终输出文件路径
TEMPLATE_FILE="./prometheus-rules-template.yaml"
OUTPUT_FILE="./final-prometheus-rules.yaml"

# 4. 批量生成规则块
GENERATED_RULES=""
for i in "${!PODS[@]}"; do
    POD=${PODS[$i]}
    INTERVAL=${INTERVALS[$i]}
    # 替换占位符生成单条规则
    RULE=$(echo "$RULE_TEMPLATE" | sed "s/{{POD_NAME}}/$POD/g; s/{{INTERVAL}}/$INTERVAL/g")
    GENERATED_RULES+="$RULE"$'\n'
done

# 5. 将生成的规则插入到模板的指定位置
# 需在模板的rules字段下添加标记:# INSERT GENERATED RULES HERE
sed "/# INSERT GENERATED RULES HERE/r /dev/stdin" "$TEMPLATE_FILE" <<< "$GENERATED_RULES" > "$OUTPUT_FILE"

echo "最终ConfigMap文件已生成:$OUTPUT_FILE"

关键细节说明

  1. 数组对应校验:务必保证PODS和INTERVALS数组的索引一一匹配,避免Pod与时间间隔错配。
  2. 规则模板自定义:可根据实际监控需求修改RULE_TEMPLATE的告警逻辑、标签、注释内容,占位符名称可自行调整(需同步修改sed替换规则)。
  3. 模板插入标记:在ConfigMap模板的rules字段下添加注释# INSERT GENERATED RULES HERE作为插入锚点,脚本会自动将生成的规则插入到该位置。
  4. YAML格式兼容:规则块的缩进需与模板中rules字段的缩进保持一致(示例中为2个空格),确保最终输出的YAML配置合法可被Kubernetes识别。

ConfigMap模板示例

apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-rules
data:
  prometheus.rules.yml: |
    groups:
    - name: pod-monitoring
      rules:
        # INSERT GENERATED RULES HERE
        # 可保留原有固定规则
        - alert: NodeHighMemory
          expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 10
          for: 5m
          labels:
            severity: critical
          annotations:
            summary: "Node high memory usage"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:30:46