mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
fix!: remove deprecated prometheus metrics (#21788)
## Description Removes the following deprecated Prometheus metrics: - `coderd_api_workspace_latest_build_total` → use `coderd_api_workspace_latest_build` instead - `coderd_oauth2_external_requests_rate_limit_total` → use `coderd_oauth2_external_requests_rate_limit` instead These metrics were deprecated in #12976 because gauge metrics should avoid the `_total` suffix per [Prometheus naming conventions](https://prometheus.io/docs/practices/naming/). ## Changes - Removed deprecated metric `coderd_api_workspace_latest_build_total` from `coderd/prometheusmetrics/prometheusmetrics.go` - Removed deprecated metric `coderd_oauth2_external_requests_rate_limit_total` from `coderd/promoauth/oauth2.go` - Updated tests to use the non-deprecated metric name Fixes #12999
This commit is contained in:
@@ -132,19 +132,6 @@ func Workspaces(ctx context.Context, logger slog.Logger, registerer prometheus.R
|
||||
duration = defaultRefreshRate
|
||||
}
|
||||
|
||||
// TODO: deprecated: remove in the future
|
||||
// See: https://github.com/coder/coder/issues/12999
|
||||
// Deprecation reason: gauge metrics should avoid suffix `_total``
|
||||
workspaceLatestBuildTotalsDeprecated := prometheus.NewGaugeVec(prometheus.GaugeOpts{
|
||||
Namespace: "coderd",
|
||||
Subsystem: "api",
|
||||
Name: "workspace_latest_build_total",
|
||||
Help: "DEPRECATED: use coderd_api_workspace_latest_build instead",
|
||||
}, []string{"status"})
|
||||
if err := registerer.Register(workspaceLatestBuildTotalsDeprecated); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
workspaceLatestBuildTotals := prometheus.NewGaugeVec(prometheus.GaugeOpts{
|
||||
Namespace: "coderd",
|
||||
Subsystem: "api",
|
||||
@@ -198,8 +185,6 @@ func Workspaces(ctx context.Context, logger slog.Logger, registerer prometheus.R
|
||||
for _, w := range ws {
|
||||
status := string(w.LatestBuildStatus)
|
||||
workspaceLatestBuildTotals.WithLabelValues(status).Add(1)
|
||||
// TODO: deprecated: remove in the future
|
||||
workspaceLatestBuildTotalsDeprecated.WithLabelValues(status).Add(1)
|
||||
|
||||
workspaceLatestBuildStatuses.WithLabelValues(
|
||||
status,
|
||||
|
||||
@@ -70,11 +70,9 @@ type metrics struct {
|
||||
|
||||
// if the oauth supports it, rate limit metrics.
|
||||
// rateLimit is the defined limit per interval
|
||||
rateLimit *prometheus.GaugeVec
|
||||
// TODO: remove deprecated metrics in the future release
|
||||
rateLimitDeprecated *prometheus.GaugeVec
|
||||
rateLimitRemaining *prometheus.GaugeVec
|
||||
rateLimitUsed *prometheus.GaugeVec
|
||||
rateLimit *prometheus.GaugeVec
|
||||
rateLimitRemaining *prometheus.GaugeVec
|
||||
rateLimitUsed *prometheus.GaugeVec
|
||||
// rateLimitReset is unix time of the next interval (when the rate limit resets).
|
||||
rateLimitReset *prometheus.GaugeVec
|
||||
// rateLimitResetIn is the time in seconds until the rate limit resets.
|
||||
@@ -109,18 +107,6 @@ func NewFactory(registry prometheus.Registerer) *Factory {
|
||||
// Some IDPs have different buckets for different rate limits.
|
||||
"resource",
|
||||
}),
|
||||
// TODO: deprecated: remove in the future
|
||||
// See: https://github.com/coder/coder/issues/12999
|
||||
// Deprecation reason: gauge metrics should avoid suffix `_total``
|
||||
rateLimitDeprecated: factory.NewGaugeVec(prometheus.GaugeOpts{
|
||||
Namespace: "coderd",
|
||||
Subsystem: "oauth2",
|
||||
Name: "external_requests_rate_limit_total",
|
||||
Help: "DEPRECATED: use coderd_oauth2_external_requests_rate_limit instead",
|
||||
}, []string{
|
||||
"name",
|
||||
"resource",
|
||||
}),
|
||||
rateLimitRemaining: factory.NewGaugeVec(prometheus.GaugeOpts{
|
||||
Namespace: "coderd",
|
||||
Subsystem: "oauth2",
|
||||
@@ -198,8 +184,6 @@ func (f *Factory) NewGithub(name string, under OAuth2Config) *Config {
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: remove this metric in v3
|
||||
f.metrics.rateLimitDeprecated.With(labels).Set(float64(limits.Limit))
|
||||
f.metrics.rateLimit.With(labels).Set(float64(limits.Limit))
|
||||
f.metrics.rateLimitRemaining.With(labels).Set(float64(limits.Remaining))
|
||||
f.metrics.rateLimitUsed.With(labels).Set(float64(limits.Used))
|
||||
|
||||
@@ -209,7 +209,7 @@ func TestGithubRateLimits(t *testing.T) {
|
||||
}
|
||||
pass := true
|
||||
if !c.ExpectNoMetrics {
|
||||
pass = pass && assert.Equal(t, promhelp.GaugeValue(t, reg, "coderd_oauth2_external_requests_rate_limit_total", labels), c.Limit, "limit")
|
||||
pass = pass && assert.Equal(t, promhelp.GaugeValue(t, reg, "coderd_oauth2_external_requests_rate_limit", labels), c.Limit, "limit")
|
||||
pass = pass && assert.Equal(t, promhelp.GaugeValue(t, reg, "coderd_oauth2_external_requests_rate_limit_remaining", labels), c.Remaining, "remaining")
|
||||
pass = pass && assert.Equal(t, promhelp.GaugeValue(t, reg, "coderd_oauth2_external_requests_rate_limit_used", labels), c.Used, "used")
|
||||
if !c.at.IsZero() {
|
||||
@@ -218,7 +218,7 @@ func TestGithubRateLimits(t *testing.T) {
|
||||
pass = pass && assert.InDelta(t, promhelp.GaugeValue(t, reg, "coderd_oauth2_external_requests_rate_limit_reset_in_seconds", labels), int(until.Seconds()), 2, "reset in")
|
||||
}
|
||||
} else {
|
||||
pass = pass && assert.Nil(t, promhelp.MetricValue(t, reg, "coderd_oauth2_external_requests_rate_limit_total", labels), "not exists")
|
||||
pass = pass && assert.Nil(t, promhelp.MetricValue(t, reg, "coderd_oauth2_external_requests_rate_limit", labels), "not exists")
|
||||
}
|
||||
|
||||
// Helpful debugging
|
||||
|
||||
Reference in New Issue
Block a user