From 17c3d6ad3a66548e8b8ad2906dbbe09ff7f40907 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Banaszewski?= Date: Mon, 27 Jul 2026 12:47:07 +0000 Subject: [PATCH] fix: add prefix to standalone metrics --- aibridge/metrics/metrics.go | 2 ++ cli/server.go | 3 ++- enterprise/cli/aigatewaystart.go | 8 +++++--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/aibridge/metrics/metrics.go b/aibridge/metrics/metrics.go index 554d6b8a78854..99d6c3e0c29fc 100644 --- a/aibridge/metrics/metrics.go +++ b/aibridge/metrics/metrics.go @@ -8,6 +8,8 @@ import ( var baseLabels = []string{"provider", "model"} const ( + PrometheusMetricPrefix = "coder_ai_gateway_" + InterceptionCountStatusFailed = "failed" InterceptionCountStatusCompleted = "completed" ) diff --git a/cli/server.go b/cli/server.go index dfd2db1dca9d8..2db49354cd41b 100644 --- a/cli/server.go +++ b/cli/server.go @@ -57,6 +57,7 @@ import ( "cdr.dev/slog/v3" "cdr.dev/slog/v3/sloggers/sloghuman" "github.com/coder/coder/v2/aibridge" + aibridgemetrics "github.com/coder/coder/v2/aibridge/metrics" "github.com/coder/coder/v2/buildinfo" "github.com/coder/coder/v2/cli/clilog" "github.com/coder/coder/v2/cli/cliui" @@ -1180,7 +1181,7 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd. // TODO(deprecation): Remove "coder_aibridged_" in v2.37. // See AIGOV-447: // https://linear.app/codercom/issue/AIGOV-447/remove-legacy-ai-gateway-metric-aliases - aibridgeReg := prometheusmetrics.NewMetricAliasRegisterer(coderAPI.PrometheusRegistry, "coder_ai_gateway_", "coder_aibridged_") + aibridgeReg := prometheusmetrics.NewMetricAliasRegisterer(coderAPI.PrometheusRegistry, aibridgemetrics.PrometheusMetricPrefix, "coder_aibridged_") aibridgeMetrics := aibridge.NewMetrics(aibridgeReg) var unsubscribeProviderReload func() aibridgeDaemon, unsubscribeProviderReload, err = newAIBridgeDaemon(coderAPI, vals.AI.BridgeConfig, aibridgeReg, aibridgeMetrics) diff --git a/enterprise/cli/aigatewaystart.go b/enterprise/cli/aigatewaystart.go index 26b4ffcc774d3..b5d5e39053341 100644 --- a/enterprise/cli/aigatewaystart.go +++ b/enterprise/cli/aigatewaystart.go @@ -25,6 +25,7 @@ import ( "cdr.dev/slog/v3" "github.com/coder/coder/v2/aibridge" "github.com/coder/coder/v2/aibridge/keypool" + aibridgemetrics "github.com/coder/coder/v2/aibridge/metrics" agpl "github.com/coder/coder/v2/cli" "github.com/coder/coder/v2/cli/clilog" "github.com/coder/coder/v2/coderd/aibridged" @@ -143,8 +144,9 @@ func (r *RootCmd) aiGatewayStart() *serpent.Command { registry.MustRegister(collectors.NewGoCollector()) registry.MustRegister(collectors.NewProcessCollector(collectors.ProcessCollectorOpts{})) - metrics := aibridge.NewMetrics(registry) - providerMetrics := aibridged.NewMetrics(registry) + gatewayRegisterer := prometheus.WrapRegistererWithPrefix(aibridgemetrics.PrometheusMetricPrefix, registry) + metrics := aibridge.NewMetrics(gatewayRegisterer) + providerMetrics := aibridged.NewMetrics(gatewayRegisterer) tracerProvider, _, closeTracing := agpl.ConfigureTraceProviderWithService(signalCtx, logger, vals, "coder-ai-gateway") // The tracer is shared by the gateway's HTTP middleware, pool, and @@ -172,7 +174,7 @@ func (r *RootCmd) aiGatewayStart() *serpent.Command { if err != nil { return xerrors.Errorf("create request pool: %w", err) } - registry.MustRegister(keypool.NewStateCollector(pool.KeyPools)) + gatewayRegisterer.MustRegister(keypool.NewStateCollector(pool.KeyPools)) return runStandaloneGateway(signalCtx, standaloneGatewayParams{ bridgeConfig: vals.AI.BridgeConfig,