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

prometheus-community/prometheus Helm Chart配置Alertmanager后Slack告警未触发排查

问题排查与解决方案

1. 检查Prometheus是否配置Alertmanager地址

你当前的prometheus.yml未配置alerting块,Prometheus不知道要将告警发送到哪个Alertmanager实例,这是核心问题之一。

需要在serverFiles.prometheus.yml下添加Alertmanager地址配置:

serverFiles:
  prometheus.yml:
    # 保留原有scrape_configs
    scrape_configs:
      - job_name: 'prometheus'
        static_configs:
          - targets: ['localhost:9090']
      - job_name: 'opencost'
        static_configs:
          - targets: ['opencost.opencost-exporter:9003']
    # 新增alerting配置
    alerting:
      alertmanagers:
        - static_configs:
            - targets: ['my-prometheus-alertmanager:9093']

注:my-prometheus-alertmanager是Helm默认生成的Alertmanager Service名称(与你的release名称对应),可通过kubectl get svc确认实际名称。

2. 修正Alertmanager配置的存放路径

你将Alertmanager配置放在了serverFiles.alertmanager.yml下,但对于27.11.0版本的prometheus-community Helm Chart,这个字段是给Prometheus Server用的,Alertmanager不会加载这里的配置。

正确的配置位置是alertmanager.config,调整后的values.yaml结构如下:

# 保留原有Prometheus和告警规则配置
serverFiles:
  prometheus.yml:
    # 包含scrape_configs和新增的alerting块
  alerting_rules.yml:
    groups:
      - name: opencost-alerts
        rules:
          - alert: HighCost
            expr: node_total_hourly_cost > 1
            for: 1m
            labels:
              severity: critical
            annotations:
              description: "The cost is higher than expected for the last 1 minutes"
              summary: "Cost is over $1 for the last 1 minutes"

# Alertmanager配置单独放在此处
alertmanager:
  config:
    global:
      resolve_timeout: 5m
    route:
      receiver: 'slack-notifications'
      group_by: ['alertname']
      group_wait: 10s
      group_interval: 5m
      repeat_interval: 1h
    receivers:
      - name: 'slack-notifications'
        slack_configs:
          - api_url: 'https://hooks.slack.com/services/XXXXXXXX/YYYYYYYYY/ZZZZZZZZZZZZZZZZZZ'
            channel: '#alert-channel'
            send_resolved: true
            username: 'Prometheus'
            text: "{{ .CommonLabels.alertname }}: {{ .CommonAnnotations.description }}"

3. 验证Alertmanager配置是否生效

执行以下命令检查Alertmanager Pod内的实际配置文件:

kubectl exec -it <alertmanager-pod-name> -- cat /etc/alertmanager/config/alertmanager.yml

如果输出与你定义的配置一致,说明加载成功;否则重新部署Helm release:

helm upgrade my-prometheus prometheus-community/prometheus --values values.yaml --version 27.11.0

4. 开启Alertmanager调试日志排查细节

默认日志级别无法展示发送请求的详细信息,可在values.yaml中调整日志级别:

alertmanager:
  extraArgs:
    - --log.level=debug

重新部署后查看日志:

kubectl logs -f <alertmanager-pod-name>

日志中会显示Slack请求的具体状态,帮助定位是否存在网络、权限等问题。

5. 确认告警触发状态

在Prometheus UI的「Alerts」页面,确认告警状态为firing,且Active Since时间已超过for: 1m的配置。若告警仅短暂触发后恢复,不会发送给Alertmanager。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 06:37:16