From dc2c486059974341b1be4d4874978cb335c29606 Mon Sep 17 00:00:00 2001 From: Han Kang Date: Thu, 22 Sep 2022 08:56:36 -0700 Subject: [PATCH] rename metric and add feature stage to metrics Change-Id: Iccab766ba2ee16ef54abb79e41ee61a6117fa7dd --- .../metrics/prometheus/feature/metrics.go | 21 +++++++-------- .../prometheus/feature/metrics_test.go | 26 +++++++++---------- 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/staging/src/k8s.io/component-base/metrics/prometheus/feature/metrics.go b/staging/src/k8s.io/component-base/metrics/prometheus/feature/metrics.go index ab3014cf138..5aecdc50db1 100644 --- a/staging/src/k8s.io/component-base/metrics/prometheus/feature/metrics.go +++ b/staging/src/k8s.io/component-base/metrics/prometheus/feature/metrics.go @@ -25,27 +25,26 @@ import ( ) var ( - // featureEnabled is a Prometheus Gauge metrics used for recording the enablement of a k8s feature. - featureEnabled = k8smetrics.NewGaugeVec( + // featureInfo is a Prometheus Gauge metrics used for recording the enablement of a k8s feature. + featureInfo = k8smetrics.NewGaugeVec( &k8smetrics.GaugeOpts{ Namespace: "k8s", - Name: "feature_enabled", - Help: "This metric records the result of whether a feature is enabled.", + Name: "feature_info", + Help: "This metric records the data about the stage and enablement of a k8s feature.", StabilityLevel: k8smetrics.ALPHA, }, - []string{"name", "enabled"}, + []string{"name", "stage", "enabled"}, ) ) func init() { - legacyregistry.MustRegister(featureEnabled) + legacyregistry.MustRegister(featureInfo) } -func ResetFeatureEnabledMetric() { - featureEnabled.Reset() +func ResetFeatureInfoMetric() { + featureInfo.Reset() } -func RecordFeatureEnabled(ctx context.Context, name string, enabled bool) error { - featureEnabled.WithContext(ctx).WithLabelValues(name, fmt.Sprintf("%v", enabled)).Set(1) - return nil +func RecordFeatureInfo(ctx context.Context, name string, stage string, enabled bool) { + featureInfo.WithContext(ctx).WithLabelValues(name, stage, fmt.Sprintf("%v", enabled)).Set(1) } diff --git a/staging/src/k8s.io/component-base/metrics/prometheus/feature/metrics_test.go b/staging/src/k8s.io/component-base/metrics/prometheus/feature/metrics_test.go index b32a53460c5..49f4b1274b4 100644 --- a/staging/src/k8s.io/component-base/metrics/prometheus/feature/metrics_test.go +++ b/staging/src/k8s.io/component-base/metrics/prometheus/feature/metrics_test.go @@ -26,48 +26,48 @@ import ( ) var ( - testedMetrics = []string{"k8s_feature_enabled"} + testedMetrics = []string{"k8s_feature_info"} ) func TestObserveHealthcheck(t *testing.T) { defer legacyregistry.Reset() - defer ResetFeatureEnabledMetric() + defer ResetFeatureInfoMetric() testCases := []struct { desc string name string + stage string enabled bool want string }{ { desc: "test enabled", name: "feature-a", + stage: "ALPHA", enabled: true, want: ` - # HELP k8s_feature_enabled [ALPHA] This metric records the result of whether a feature is enabled. - # TYPE k8s_feature_enabled gauge - k8s_feature_enabled{enabled="true",name="feature-a"} 1 + # HELP k8s_feature_info [ALPHA] This metric records the data about the stage and enablement of a k8s feature. + # TYPE k8s_feature_info gauge + k8s_feature_info{enabled="true",name="feature-a",stage="ALPHA"} 1 `, }, { desc: "test disabled", name: "feature-b", + stage: "BETA", enabled: false, want: ` - # HELP k8s_feature_enabled [ALPHA] This metric records the result of whether a feature is enabled. - # TYPE k8s_feature_enabled gauge - k8s_feature_enabled{enabled="false",name="feature-b"} 1 + # HELP k8s_feature_info [ALPHA] This metric records the data about the stage and enablement of a k8s feature. + # TYPE k8s_feature_info gauge + k8s_feature_info{enabled="false",name="feature-b",stage="BETA"} 1 `, }, } for _, test := range testCases { t.Run(test.desc, func(t *testing.T) { - defer ResetFeatureEnabledMetric() - err := RecordFeatureEnabled(context.Background(), test.name, test.enabled) - if err != nil { - t.Errorf("unexpected err: %v", err) - } + defer ResetFeatureInfoMetric() + RecordFeatureInfo(context.Background(), test.name, test.stage, test.enabled) if err := testutil.GatherAndCompare(legacyregistry.DefaultGatherer, strings.NewReader(test.want), testedMetrics...); err != nil { t.Fatal(err)