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

发送至Alertmanager的自定义告警未在Grafana中显示

问题分析与解决

核心原因

Grafana默认展示的告警数据来自Prometheus,而非直接从Alertmanager获取。你通过Go程序直接POST到Alertmanager的告警,不会进入Prometheus的指标库,因此现有对接Prometheus的Grafana告警面板无法查询到这条测试告警。

解决方法

方法1:让Grafana直接对接Alertmanager数据源

如果希望在Grafana中查看Alertmanager的所有告警(包括直接发送的自定义告警),可以添加Alertmanager作为Grafana的数据源:

  • 登录Grafana,进入「配置」→「数据源」→「添加数据源」
  • 选择「Alertmanager」类型,填入Alertmanager的访问地址(集群内可使用服务名,例如http://alertmanager-operated:9093)
  • 保存数据源后,使用适配Alertmanager的Dashboard(比如官方的Alertmanager监控面板)即可查看所有告警。

方法2:将自定义告警接入Prometheus(适配现有Grafana面板)

如果想继续使用现有对接Prometheus的Grafana告警面板,需要让自定义告警进入Prometheus的告警流程:

步骤1:部署并使用Pushgateway

kube-prometheus-stack可通过Helm开启Pushgateway:

helm upgrade -n monitoring kube-prometheus-stack prometheus-community/kube-prometheus-stack --set pushgateway.enabled=true

步骤2:修改Go程序推送指标到Pushgateway

调整代码,将告警状态作为指标推送到Pushgateway,示例如下:

package main

import (
	"fmt"
	"net/http"
	"strings"
)

func main() {
	// Pushgateway地址,集群内使用服务名
	url := "http://pushgateway.monitoring.svc.cluster.local:9091/metrics/job/test_alerts"
	// 推送指标:test_alert_firing 1表示告警触发,0表示恢复
	metrics := `test_alert_firing{alertname="testAlert",severity="critical"} 1`

	req, err := http.NewRequest("POST", url, strings.NewReader(metrics))
	if err != nil {
		fmt.Println(err)
		return
	}
	req.Header.Set("Content-Type", "text/plain")

	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer resp.Body.Close()

	fmt.Printf("Push status: %s\n", resp.Status)
}

步骤3:在Prometheus中添加告警规则

添加一条告警规则,当推送的指标为1时触发告警:

groups:
- name: custom_alerts
  rules:
  - alert: testAlert
    expr: test_alert_firing == 1
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "This is a test alert."

将该规则添加到Prometheus的告警规则配置中(kube-prometheus-stack可通过additionalPrometheusRulesMap参数配置),这样Prometheus会生成告警并发送到Alertmanager,同时Grafana可通过ALERTS指标查到这条告警。

额外检查点

  • 确认你的Go程序中EndsAt字段设置为未来时间,否则Alertmanager会很快将告警标记为resolved,影响查看。
  • 检查Grafana面板的查询语句,确认是否是基于Prometheus的ALERTS指标,若是则必须让告警进入Prometheus流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 09:26:36