pkg/registry: rename pod logs metrics

The pod_logs subsystem was inadvertently made redundant in the following
kube-apiserver metrics:
- kube_apiserver_pod_logs_pods_logs_backend_tls_failure_total
- kube_apiserver_pod_logs_pods_logs_insecure_backend_total

To safely rename them, it is required to deprecate them in 1.27 whilst
introducing the new metrics replacing them.

Signed-off-by: Damien Grisonnet <dgrisonn@redhat.com>
This commit is contained in:
Damien Grisonnet
2022-12-14 23:40:21 +01:00
parent c7d47e4c94
commit 1efa1a65ee
3 changed files with 51 additions and 9 deletions

View File

@@ -94,13 +94,14 @@ func (r *LogREST) Get(ctx context.Context, name string, opts runtime.Object) (ru
return nil, err
}
return &genericrest.LocationStreamer{
Location: location,
Transport: transport,
ContentType: "text/plain",
Flush: logOpts.Follow,
ResponseChecker: genericrest.NewGenericHttpResponseChecker(api.Resource("pods/log"), name),
RedirectChecker: genericrest.PreventRedirects,
TLSVerificationErrorCounter: podLogsTLSFailure,
Location: location,
Transport: transport,
ContentType: "text/plain",
Flush: logOpts.Follow,
ResponseChecker: genericrest.NewGenericHttpResponseChecker(api.Resource("pods/log"), name),
RedirectChecker: genericrest.PreventRedirects,
TLSVerificationErrorCounter: podLogsTLSFailure,
DeprecatedTLSVerificationErrorCounter: deprecatedPodLogsTLSFailure,
}, nil
}
@@ -116,6 +117,13 @@ func countSkipTLSMetric(insecureSkipTLSVerifyBackend bool) {
return
}
counter.Inc()
deprecatedCounter, err := deprecatedPodLogsUsage.GetMetricWithLabelValues(usageType)
if err != nil {
utilruntime.HandleError(err)
return
}
deprecatedCounter.Inc()
}
// NewGetOptions creates a new options object

View File

@@ -37,23 +37,48 @@ var (
&metrics.CounterOpts{
Namespace: namespace,
Subsystem: subsystem,
Name: "pods_logs_insecure_backend_total",
Name: "insecure_backend_total",
Help: "Total number of requests for pods/logs sliced by usage type: enforce_tls, skip_tls_allowed, skip_tls_denied",
StabilityLevel: metrics.ALPHA,
},
[]string{"usage"},
)
// deprecatedPodLogsUsage counts and categorizes how the insecure backend skip TLS option is used and allowed.
deprecatedPodLogsUsage = metrics.NewCounterVec(
&metrics.CounterOpts{
Namespace: namespace,
Subsystem: subsystem,
Name: "pods_logs_insecure_backend_total",
Help: "Total number of requests for pods/logs sliced by usage type: enforce_tls, skip_tls_allowed, skip_tls_denied",
StabilityLevel: metrics.ALPHA,
DeprecatedVersion: "1.27.0",
},
[]string{"usage"},
)
// podLogsTLSFailure counts how many attempts to get pod logs fail on tls verification
podLogsTLSFailure = metrics.NewCounter(
&metrics.CounterOpts{
Namespace: namespace,
Subsystem: subsystem,
Name: "pods_logs_backend_tls_failure_total",
Name: "backend_tls_failure_total",
Help: "Total number of requests for pods/logs that failed due to kubelet server TLS verification",
StabilityLevel: metrics.ALPHA,
},
)
// deprecatedPodLogsTLSFailure counts how many attempts to get pod logs fail on tls verification
deprecatedPodLogsTLSFailure = metrics.NewCounter(
&metrics.CounterOpts{
Namespace: namespace,
Subsystem: subsystem,
Name: "pods_logs_backend_tls_failure_total",
Help: "Total number of requests for pods/logs that failed due to kubelet server TLS verification",
StabilityLevel: metrics.ALPHA,
DeprecatedVersion: "1.27.0",
},
)
)
var registerMetricsOnce sync.Once
@@ -62,5 +87,7 @@ func registerMetrics() {
registerMetricsOnce.Do(func() {
legacyregistry.MustRegister(podLogsUsage)
legacyregistry.MustRegister(podLogsTLSFailure)
legacyregistry.MustRegister(deprecatedPodLogsUsage)
legacyregistry.MustRegister(deprecatedPodLogsTLSFailure)
})
}