kubernetes/kubernetes · #140447
Rename endpoint_slice_controller_changes to add _total suffix
hack/tools/instrumentation/documentation/documentation-list.yaml11 + / 0 −
@@ -2772,6 +2772,17 @@ - component: kube-scheduler endpoint: /metrics - name: changes+ subsystem: endpoint_slice_controller+ help: Number of EndpointSlice changes. Deprecated in favor of endpoint_slice_controller_changes_total.+ type: Counter+ deprecatedVersion: 1.38.0+ stabilityLevel: ALPHA+ labels:+ - operation+ componentEndpoints:+ - component: kube-controller-manager+ endpoint: /metrics+- name: changes_total subsystem: endpoint_slice_controller help: Number of EndpointSlice changes type: Counterhack/tools/instrumentation/documentation/documentation.md7 + / 0 −
@@ -1983,6 +1983,13 @@ Alpha metrics do not have any API guarantees. These metrics must be used at your <ul> <li><label class="metric_detail">Stability Level:</label><span class="metric_stability_level">ALPHA</span></li> <li data-type="counter"><label class="metric_detail">Type:</label> <span class="metric_type">Counter</span></li>+ <li class="metric_labels_varying"><label class="metric_detail">Labels:</label><span class="metric_label">operation</span></li><li class="metric_component_endpoints"><label class="metric_detail">Components:</label><ul><li>kube-controller-manager (/metrics)</li></ul></li><li class="metric_deprecated_version"><label class="metric_detail">Deprecated Versions:</label><span>1.38.0</span></li></ul>+ </div><div class="metric" data-stability="alpha">+ <div class="metric_name">endpoint_slice_controller_changes_total</div>+ <div class="metric_help">Number of EndpointSlice changes</div>+ <ul>+ <li><label class="metric_detail">Stability Level:</label><span class="metric_stability_level">ALPHA</span></li>+ <li data-type="counter"><label class="metric_detail">Type:</label> <span class="metric_type">Counter</span></li> <li class="metric_labels_varying"><label class="metric_detail">Labels:</label><span class="metric_label">operation</span></li><li class="metric_component_endpoints"><label class="metric_detail">Components:</label><ul><li>kube-controller-manager (/metrics)</li></ul></li></ul> </div><div class="metric" data-stability="alpha"> <div class="metric_name">endpoint_slice_controller_endpointslices_changed_per_sync</div>staging/src/k8s.io/component-base/metrics/testutil/promlint.go1 + / 1 −
@@ -57,7 +57,7 @@ var exceptionMetrics = []string{ // attach-detach controller "attach_detach_controller_attachdetach_controller_forced_detaches", // counter metrics should have "_total" suffix- "endpoint_slice_controller_changes", // counter metrics should have "_total" suffix+ "endpoint_slice_controller_changes", // counter metrics should have "_total" suffix; renamed to endpoint_slice_controller_changes_total "endpoint_slice_controller_syncs", // counter metrics should have "_total" suffix "endpoint_slice_mirroring_controller_changes", // counter metrics should have "_total" suffix staging/src/k8s.io/endpointslice/metrics/metrics.go17 + / 1 −
@@ -84,10 +84,25 @@ var ( ) // EndpointSliceChanges tracks the number of changes to Endpoint Slices.+ //+ // Deprecated: use EndpointSliceChangesTotal. The old name lacks the+ // conventional _total suffix required for counters. EndpointSliceChanges = metrics.NewCounterVec(+ &metrics.CounterOpts{+ Subsystem: EndpointSliceSubsystem,+ Name: "changes",+ Help: "Number of EndpointSlice changes. Deprecated in favor of endpoint_slice_controller_changes_total.",+ StabilityLevel: metrics.ALPHA,+ DeprecatedVersion: "1.38.0",+ },+ []string{"operation"},+ )++ // EndpointSliceChangesTotal tracks the number of changes to Endpoint Slices.+ EndpointSliceChangesTotal = metrics.NewCounterVec( &metrics.CounterOpts{ Subsystem: EndpointSliceSubsystem,- Name: "changes",+ Name: "changes_total", Help: "Number of EndpointSlice changes", StabilityLevel: metrics.ALPHA, },@@ -144,6 +159,7 @@ func RegisterMetrics() { legacyregistry.MustRegister(NumEndpointSlices) legacyregistry.MustRegister(DesiredEndpointSlices) legacyregistry.MustRegister(EndpointSliceChanges)+ legacyregistry.MustRegister(EndpointSliceChangesTotal) legacyregistry.MustRegister(EndpointSlicesChangedPerSync) legacyregistry.MustRegister(EndpointSliceSyncs) legacyregistry.MustRegister(ServicesCountByTrafficDistribution)staging/src/k8s.io/endpointslice/reconciler.go3 + / 0 −
@@ -165,6 +165,7 @@ func (r *Reconciler) deleteEndpointSlice(service *corev1.Service, endpointSlice r.endpointSliceTracker.ExpectDeletion(endpointSlice) metrics.EndpointSliceChanges.WithLabelValues("delete").Inc()+ metrics.EndpointSliceChangesTotal.WithLabelValues("delete").Inc() return nil } @@ -456,6 +457,7 @@ func (r *Reconciler) finalize( } r.endpointSliceTracker.Update(createdSlice) metrics.EndpointSliceChanges.WithLabelValues("create").Inc()+ metrics.EndpointSliceChangesTotal.WithLabelValues("create").Inc() } } @@ -467,6 +469,7 @@ func (r *Reconciler) finalize( } r.endpointSliceTracker.Update(updatedSlice) metrics.EndpointSliceChanges.WithLabelValues("update").Inc()+ metrics.EndpointSliceChangesTotal.WithLabelValues("update").Inc() } for _, endpointSlice := range slicesToDelete {staging/src/k8s.io/endpointslice/reconciler_test.go24 + / 0 −
@@ -1210,13 +1210,21 @@ func TestReconcilerDeleteEndpointSlice(t *testing.T) { } expectTrackedGeneration(t, r.endpointSliceTracker, cachedSlice, expectedGeneration) + //nolint:staticcheck // intentionally asserting the deprecated metric during the deprecation period deleted, err := testutil.GetCounterMetricValue(metrics.EndpointSliceChanges.WithLabelValues("delete")) if err != nil { t.Fatalf("Failed to get EndpointSlice deletion metric: %v", err) } if deleted != testCase.wantDeleteMetric { t.Errorf("Expected EndpointSlice deletion metric %v, got %v", testCase.wantDeleteMetric, deleted) }+ deletedTotal, err := testutil.GetCounterMetricValue(metrics.EndpointSliceChangesTotal.WithLabelValues("delete"))+ if err != nil {+ t.Fatalf("Failed to get EndpointSlice deletion total metric: %v", err)+ }+ if deletedTotal != testCase.wantDeleteMetric {+ t.Errorf("Expected EndpointSlice deletion total metric %v, got %v", testCase.wantDeleteMetric, deletedTotal)+ } if deletePath.name == "finalize" { changed, err := testutil.GetHistogramMetricValue(metrics.EndpointSlicesChangedPerSync.WithLabelValues("Disabled", "")) if err != nil {@@ -2692,18 +2700,33 @@ func expectMetrics(t *testing.T, em expectedMetrics) { if actualCreated != float64(em.numCreated) { t.Errorf("Expected endpointSliceChangesCreated to be %d, got %v", em.numCreated, actualCreated) }+ actualCreatedTotal, err := testutil.GetCounterMetricValue(metrics.EndpointSliceChangesTotal.WithLabelValues("create"))+ handleErr(t, err, "endpointSliceChangesTotalCreated")+ if actualCreatedTotal != float64(em.numCreated) {+ t.Errorf("Expected endpointSliceChangesTotalCreated to be %d, got %v", em.numCreated, actualCreatedTotal)+ } actualUpdated, err := testutil.GetCounterMetricValue(metrics.EndpointSliceChanges.WithLabelValues("update")) handleErr(t, err, "endpointSliceChangesUpdated") if actualUpdated != float64(em.numUpdated) { t.Errorf("Expected endpointSliceChangesUpdated to be %d, got %v", em.numUpdated, actualUpdated) }+ actualUpdatedTotal, err := testutil.GetCounterMetricValue(metrics.EndpointSliceChangesTotal.WithLabelValues("update"))+ handleErr(t, err, "endpointSliceChangesTotalUpdated")+ if actualUpdatedTotal != float64(em.numUpdated) {+ t.Errorf("Expected endpointSliceChangesTotalUpdated to be %d, got %v", em.numUpdated, actualUpdatedTotal)+ } actualDeleted, err := testutil.GetCounterMetricValue(metrics.EndpointSliceChanges.WithLabelValues("delete")) handleErr(t, err, "desiredEndpointSlices") if actualDeleted != float64(em.numDeleted) { t.Errorf("Expected endpointSliceChangesDeleted to be %d, got %v", em.numDeleted, actualDeleted) }+ actualDeletedTotal, err := testutil.GetCounterMetricValue(metrics.EndpointSliceChangesTotal.WithLabelValues("delete"))+ handleErr(t, err, "endpointSliceChangesTotalDeleted")+ if actualDeletedTotal != float64(em.numDeleted) {+ t.Errorf("Expected endpointSliceChangesTotalDeleted to be %d, got %v", em.numDeleted, actualDeletedTotal)+ } actualSlicesChangedPerSync, err := testutil.GetHistogramMetricValue(metrics.EndpointSlicesChangedPerSync.WithLabelValues("Disabled", "")) handleErr(t, err, "slicesChangedPerSync")@@ -2771,6 +2794,7 @@ func resetMetrics() { metrics.EndpointsAddedPerSync.Reset() metrics.EndpointsRemovedPerSync.Reset() metrics.EndpointSliceChanges.Reset()+ metrics.EndpointSliceChangesTotal.Reset() metrics.EndpointSlicesChangedPerSync.Reset() metrics.EndpointSliceSyncs.Reset() metrics.ServicesCountByTrafficDistribution.Reset()