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

kube-prometheus-stack:如何持久化Grafana自定义告警及相关配置

配置kube-prometheus-stack实现Grafana持久化与Pod驱逐Teams告警通知

一、修改Helm Chart配置(核心步骤)

所有自定义配置必须通过Helm values定义,避免手动创建的资源因Pod重建、Helm升级丢失。

1. 开启Grafana数据持久化

在自定义values.yaml中配置Grafana持久化,用PVC存储Grafana的用户、通知渠道、仪表盘等数据:

grafana:
  persistence:
    enabled: true
    storageClassName: "default" # 替换为AKS中可用的存储类,比如managed-premium
    size: 10Gi
    # 若使用已创建的PVC,取消注释并指定名称
    # existingClaim: "grafana-pvc"

2. 预配置Grafana用户账号

直接在values.yaml中定义所需用户,避免手动创建后丢失:

grafana:
  users:
    - name: "ops-user"
      passwordSecret: "grafana-users" # 存储密码的Secret名称
      passwordKey: "ops-user-password" # Secret中对应的key
      role: "Editor" # 可选Admin/Editor/Viewer
  # 用Secret管理默认admin密码(可选)
  admin:
    passwordSecret: "grafana-admin-secret"
    passwordKey: "admin-password"

3. 预配置Microsoft Teams通知渠道

通过values.yaml定义Teams webhook通知渠道,引用存储webhook URL的Secret:

grafana:
  notifiers:
    notifierConfigs:
      - name: "Microsoft Teams 告警通知"
        type: "teams"
        uid: "teams-alert-notifier"
        isDefault: false
        settings:
          url: "${TEAMS_WEBHOOK_URL}" # 从环境变量读取URL
        secureSettings: {}
  # 挂载存储Teams URL的Secret到Grafana Pod,注入环境变量
  extraSecretMounts:
    - name: teams-webhook-secret
      secretName: "teams-webhook-secret"
      mountPath: "/etc/grafana/teams-webhook"
      readOnly: true
  extraEnv:
    - name: TEAMS_WEBHOOK_URL
      valueFrom:
        secretKeyRef:
          name: "teams-webhook-secret"
          key: "webhook-url"

4. 定义Pod驱逐告警规则

通过additionalPrometheusRules配置自定义告警规则,Helm会自动创建PrometheusRule资源:

additionalPrometheusRules:
  - name: pod-eviction-alerts
    groups:
      - name: pod_eviction.rules
        rules:
          - alert: PodEvicted
            expr: kube_pod_status_phase{phase="Failed", reason="Evicted"} == 1
            for: 1m
            labels:
              severity: critical
            annotations:
              summary: "Pod {{ $labels.pod }} 被驱逐"
              description: "命名空间 {{ $labels.namespace }} 中的Pod {{ $labels.pod }} 因资源不足或其他原因被驱逐,请及时排查。"

二、调整Kubernetes资源

1. 创建存储敏感信息的Secret

  • 存储Teams webhook URL:
kubectl create secret generic teams-webhook-secret -n monitoring --from-literal=webhook-url="https://your-teams-webhook-url"
  • 存储Grafana用户密码(示例):
kubectl create secret generic grafana-users -n monitoring --from-literal=ops-user-password="your-strong-password"
kubectl create secret generic grafana-admin-secret -n monitoring --from-literal=admin-password="your-admin-password"

2. 验证或创建PVC(可选)

若未通过Helm自动创建PVC,手动创建:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: grafana-pvc
  namespace: monitoring
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: "default"
  resources:
    requests:
      storage: 10Gi

创建后在Helm values中指定existingClaim: "grafana-pvc"。

3. ConfigMap调整(可选)

若需修改Grafana核心配置(如告警启用状态),通过values.yaml的grafana.ini配置:

grafana:
  ini:
    alerting:
      enabled: true
      execute_alerts: true

三、应用Helm配置升级

执行Helm升级命令,让配置生效:

helm upgrade kube-prometheus-stack prometheus-community/kube-prometheus-stack -f custom-values.yaml -n monitoring

所有配置将由Helm统一管理,Grafana数据通过PVC持久化,不会因Pod重建或Helm升级丢失,Pod驱逐告警规则和Teams通知渠道也会自动部署。

内容的提问来源于stack exchange,提问作者A Bit of Help

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:33:11