@@ -146,16 +146,16 @@ type metricsConfig struct {
146146 writeEndpoint * url.URL
147147 rulesEndpoint * url.URL
148148 alertmanagerEndpoint * url.URL
149+ statusEndpoint * url.URL
149150 upstreamWriteTimeout time.Duration
150151 upstreamCAFile string
151152 upstreamCertFile string
152153 upstreamKeyFile string
153154 tenantHeader string
154155 tenantLabel string
155156 // enable metrics if at least one {read|write}Endpoint} is provided.
156- enabled bool
157- enableCertWatcher bool
158- enableStatusEndpoints bool
157+ enabled bool
158+ enableCertWatcher bool
159159}
160160
161161type logsConfig struct {
@@ -646,6 +646,7 @@ func main() {
646646 WriteEndpoint : cfg .metrics .writeEndpoint ,
647647 RulesEndpoint : cfg .metrics .rulesEndpoint ,
648648 AlertmanagerEndpoint : cfg .metrics .alertmanagerEndpoint ,
649+ StatusEndpoint : cfg .metrics .statusEndpoint ,
649650 }
650651
651652 rateLimitMiddleware := ratelimit .WithLocalRateLimiter (rateLimits ... )
@@ -734,7 +735,6 @@ func main() {
734735 }
735736
736737 const matchParamName = "match[]"
737- level .Info (logger ).Log ("msg" , "status API" , "enabled" , cfg .metrics .enableStatusEndpoints )
738738 r .Mount ("/api/metrics/v1/{tenant}" , metricsv1 .NewHandler (
739739 eps ,
740740 metricsUpstreamClientOptions ,
@@ -751,7 +751,6 @@ func main() {
751751 metricsv1 .WithReadMiddleware (authorization .WithAuthorizers (authorizers , rbac .Read , "metrics" )),
752752 metricsv1 .WithReadMiddleware (metricsv1 .WithEnforceTenancyOnQuery (cfg .metrics .tenantLabel , matchParamName )),
753753 metricsv1 .WithReadMiddleware (metricsv1 .WithEnforceAuthorizationLabels ()),
754- metricsv1 .WithStatusEndpoints (cfg .metrics .enableStatusEndpoints ),
755754 metricsv1 .WithStatusMiddleware (authorization .WithAuthorizers (authorizers , rbac .Read , "metrics" )),
756755 metricsv1 .WithUIMiddleware (authorization .WithAuthorizers (authorizers , rbac .Read , "metrics" )),
757756 metricsv1 .WithAlertmanagerAlertsReadMiddleware (
@@ -1113,6 +1112,7 @@ func parseFlags() (config, error) {
11131112 rawMetricsWriteEndpoint string
11141113 rawMetricsRulesEndpoint string
11151114 rawMetricsAlertmanagerEndpoint string
1115+ rawMetricsStatusEndpoint string
11161116 rawLogsReadEndpoint string
11171117 rawLogsRulesEndpoint string
11181118 rawLogsTailEndpoint string
@@ -1191,14 +1191,14 @@ func parseFlags() (config, error) {
11911191 "Comma-separated list of stream selectors that should be extracted from queries and sent to OPA during authorization." )
11921192 flag .StringVar (& rawMetricsReadEndpoint , "metrics.read.endpoint" , "" ,
11931193 "The endpoint against which to send read requests for metrics. It used as a fallback to 'query.endpoint' and 'query-range.endpoint'." )
1194- flag .BoolVar (& cfg .metrics .enableStatusEndpoints , "metrics.read.enable-status-endpoints" , false ,
1195- "Enable the metric status endpoints" )
11961194 flag .StringVar (& rawMetricsWriteEndpoint , "metrics.write.endpoint" , "" ,
11971195 "The endpoint against which to make write requests for metrics." )
11981196 flag .StringVar (& rawMetricsRulesEndpoint , "metrics.rules.endpoint" , "" ,
11991197 "The endpoint against which to make get requests for listing recording/alerting rules and put requests for creating/updating recording/alerting rules." )
12001198 flag .StringVar (& rawMetricsAlertmanagerEndpoint , "metrics.alertmanager.endpoint" , "" ,
12011199 "The endpoint against which to make requests for alerts and silences" )
1200+ flag .StringVar (& rawMetricsStatusEndpoint , "metrics.status.endpoint" , "" ,
1201+ "The endpoint against which to make requests for status information about metrics (e.g. '/api/v1/status/tsdb')." )
12021202 flag .DurationVar (& cfg .metrics .upstreamWriteTimeout , "metrics.write-timeout" , metricsMiddlewareTimeout ,
12031203 "The HTTP write timeout for proxied requests to the metrics endpoint." )
12041204 flag .StringVar (& cfg .metrics .upstreamCAFile , "metrics.tls.ca-file" , "" ,
@@ -1345,6 +1345,17 @@ func parseFlags() (config, error) {
13451345 cfg .metrics .alertmanagerEndpoint = alertmanagerEndpoint
13461346 }
13471347
1348+ if rawMetricsStatusEndpoint != "" {
1349+ cfg .metrics .enabled = true
1350+
1351+ statusEndpoint , err := url .ParseRequestURI (rawMetricsStatusEndpoint )
1352+ if err != nil {
1353+ return cfg , fmt .Errorf ("--metrics.status.endpoint %q is invalid: %w" , rawMetricsStatusEndpoint , err )
1354+ }
1355+
1356+ cfg .metrics .statusEndpoint = statusEndpoint
1357+ }
1358+
13481359 if rawLogsReadEndpoint != "" {
13491360 cfg .logs .enabled = true
13501361
0 commit comments