From c1ce6f7abd754b5e3bd73c1938b6d0d9b14def71 Mon Sep 17 00:00:00 2001 From: Saswata Mukherjee Date: Wed, 4 Feb 2026 08:06:40 +0000 Subject: [PATCH] am: Add alertmanager silence endpoint Signed-off-by: Saswata Mukherjee --- api/metrics/v1/http.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/api/metrics/v1/http.go b/api/metrics/v1/http.go index 04bbfa949..0336f4e88 100644 --- a/api/metrics/v1/http.go +++ b/api/metrics/v1/http.go @@ -36,6 +36,7 @@ const ( AlertmanagerAlertsRoute = "/am/api/v2/alerts" AlertmanagerSilencesRoute = "/am/api/v2/silences" + AlertmanagerSilenceRoute = "/am/api/v2/silence/{silenceID}" ) type alertmanagerMiddleware struct { @@ -525,6 +526,38 @@ func NewHandler(endpoints Endpoints, tlsOptions *tls.UpstreamOptions, opts ...Ha proxyAlertmanager, )) }) + + r.Group(func(r chi.Router) { + r.Use(func(handler http.Handler) http.Handler { + return server.InjectLabelsCtx( + prometheus.Labels{"group": "metricsv1", "handler": "silence"}, + handler, + ) + }) + r.Use(c.alertmanagerMiddleware.silenceReadMiddlewares...) + r.Use(server.StripTenantPrefixWithSubRoute("/api/metrics/v1", "/am")) + + r.Method(http.MethodGet, AlertmanagerSilenceRoute, otelhttp.WithRouteTag( + c.spanRoutePrefix+AlertmanagerSilenceRoute, + proxyAlertmanager, + )) + }) + + r.Group(func(r chi.Router) { + r.Use(func(handler http.Handler) http.Handler { + return server.InjectLabelsCtx( + prometheus.Labels{"group": "metricsv1", "handler": "silence"}, + handler, + ) + }) + r.Use(c.alertmanagerMiddleware.silenceWriteMiddlewares...) + r.Use(server.StripTenantPrefixWithSubRoute("/api/metrics/v1", "/am")) + + r.Method(http.MethodDelete, AlertmanagerSilenceRoute, otelhttp.WithRouteTag( + c.spanRoutePrefix+AlertmanagerSilenceRoute, + proxyAlertmanager, + )) + }) } return r