From 74a1a0f642ed1648d845b5d2c2f1cc2d26bd53d8 Mon Sep 17 00:00:00 2001 From: Pranshu Srivastava Date: Sat, 15 Apr 2023 02:22:03 +0530 Subject: [PATCH] fixup! Adhere to OTel-Prometheus standard for labels --- internal/store/node.go | 24 ++++++------- internal/store/pod.go | 40 ++++++++++----------- internal/store/utils.go | 4 +-- internal/store/verticalpodautoscaler.go | 4 +-- pkg/customresourcestate/registry_factory.go | 9 ++--- 5 files changed, 39 insertions(+), 42 deletions(-) diff --git a/internal/store/node.go b/internal/store/node.go index d4f80cb6b5..e2a1851054 100644 --- a/internal/store/node.go +++ b/internal/store/node.go @@ -290,7 +290,7 @@ func createNodeStatusAllocatableFamilyGenerator() generator.FamilyGenerator { case v1.ResourceCPU: ms = append(ms, &metric.Metric{ LabelValues: []string{ - sanitizeLabelName(string(resourceName)), + SanitizeLabelName(string(resourceName)), string(constant.UnitCore), }, Value: float64(val.MilliValue()) / 1000, @@ -302,7 +302,7 @@ func createNodeStatusAllocatableFamilyGenerator() generator.FamilyGenerator { case v1.ResourceMemory: ms = append(ms, &metric.Metric{ LabelValues: []string{ - sanitizeLabelName(string(resourceName)), + SanitizeLabelName(string(resourceName)), string(constant.UnitByte), }, Value: float64(val.MilliValue()) / 1000, @@ -310,7 +310,7 @@ func createNodeStatusAllocatableFamilyGenerator() generator.FamilyGenerator { case v1.ResourcePods: ms = append(ms, &metric.Metric{ LabelValues: []string{ - sanitizeLabelName(string(resourceName)), + SanitizeLabelName(string(resourceName)), string(constant.UnitInteger), }, Value: float64(val.MilliValue()) / 1000, @@ -319,7 +319,7 @@ func createNodeStatusAllocatableFamilyGenerator() generator.FamilyGenerator { if isHugePageResourceName(resourceName) { ms = append(ms, &metric.Metric{ LabelValues: []string{ - sanitizeLabelName(string(resourceName)), + SanitizeLabelName(string(resourceName)), string(constant.UnitByte), }, Value: float64(val.MilliValue()) / 1000, @@ -328,7 +328,7 @@ func createNodeStatusAllocatableFamilyGenerator() generator.FamilyGenerator { if isAttachableVolumeResourceName(resourceName) { ms = append(ms, &metric.Metric{ LabelValues: []string{ - sanitizeLabelName(string(resourceName)), + SanitizeLabelName(string(resourceName)), string(constant.UnitByte), }, Value: float64(val.MilliValue()) / 1000, @@ -337,7 +337,7 @@ func createNodeStatusAllocatableFamilyGenerator() generator.FamilyGenerator { if isExtendedResourceName(resourceName) { ms = append(ms, &metric.Metric{ LabelValues: []string{ - sanitizeLabelName(string(resourceName)), + SanitizeLabelName(string(resourceName)), string(constant.UnitInteger), }, Value: float64(val.MilliValue()) / 1000, @@ -373,7 +373,7 @@ func createNodeStatusCapacityFamilyGenerator() generator.FamilyGenerator { case v1.ResourceCPU: ms = append(ms, &metric.Metric{ LabelValues: []string{ - sanitizeLabelName(string(resourceName)), + SanitizeLabelName(string(resourceName)), string(constant.UnitCore), }, Value: float64(val.MilliValue()) / 1000, @@ -385,7 +385,7 @@ func createNodeStatusCapacityFamilyGenerator() generator.FamilyGenerator { case v1.ResourceMemory: ms = append(ms, &metric.Metric{ LabelValues: []string{ - sanitizeLabelName(string(resourceName)), + SanitizeLabelName(string(resourceName)), string(constant.UnitByte), }, Value: float64(val.MilliValue()) / 1000, @@ -393,7 +393,7 @@ func createNodeStatusCapacityFamilyGenerator() generator.FamilyGenerator { case v1.ResourcePods: ms = append(ms, &metric.Metric{ LabelValues: []string{ - sanitizeLabelName(string(resourceName)), + SanitizeLabelName(string(resourceName)), string(constant.UnitInteger), }, Value: float64(val.MilliValue()) / 1000, @@ -402,7 +402,7 @@ func createNodeStatusCapacityFamilyGenerator() generator.FamilyGenerator { if isHugePageResourceName(resourceName) { ms = append(ms, &metric.Metric{ LabelValues: []string{ - sanitizeLabelName(string(resourceName)), + SanitizeLabelName(string(resourceName)), string(constant.UnitByte), }, Value: float64(val.MilliValue()) / 1000, @@ -411,7 +411,7 @@ func createNodeStatusCapacityFamilyGenerator() generator.FamilyGenerator { if isAttachableVolumeResourceName(resourceName) { ms = append(ms, &metric.Metric{ LabelValues: []string{ - sanitizeLabelName(string(resourceName)), + SanitizeLabelName(string(resourceName)), string(constant.UnitByte), }, Value: float64(val.MilliValue()) / 1000, @@ -420,7 +420,7 @@ func createNodeStatusCapacityFamilyGenerator() generator.FamilyGenerator { if isExtendedResourceName(resourceName) { ms = append(ms, &metric.Metric{ LabelValues: []string{ - sanitizeLabelName(string(resourceName)), + SanitizeLabelName(string(resourceName)), string(constant.UnitInteger), }, Value: float64(val.MilliValue()) / 1000, diff --git a/internal/store/pod.go b/internal/store/pod.go index f6275d2df4..59143a81b8 100644 --- a/internal/store/pod.go +++ b/internal/store/pod.go @@ -177,7 +177,7 @@ func createPodContainerResourceLimitsFamilyGenerator() generator.FamilyGenerator switch resourceName { case v1.ResourceCPU: ms = append(ms, &metric.Metric{ - LabelValues: []string{c.Name, p.Spec.NodeName, sanitizeLabelName(string(resourceName)), string(constant.UnitCore)}, + LabelValues: []string{c.Name, p.Spec.NodeName, SanitizeLabelName(string(resourceName)), string(constant.UnitCore)}, Value: float64(val.MilliValue()) / 1000, }) case v1.ResourceStorage: @@ -186,26 +186,26 @@ func createPodContainerResourceLimitsFamilyGenerator() generator.FamilyGenerator fallthrough case v1.ResourceMemory: ms = append(ms, &metric.Metric{ - LabelValues: []string{c.Name, p.Spec.NodeName, sanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, + LabelValues: []string{c.Name, p.Spec.NodeName, SanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, Value: float64(val.Value()), }) default: if isHugePageResourceName(resourceName) { ms = append(ms, &metric.Metric{ - LabelValues: []string{c.Name, p.Spec.NodeName, sanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, + LabelValues: []string{c.Name, p.Spec.NodeName, SanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, Value: float64(val.Value()), }) } if isAttachableVolumeResourceName(resourceName) { ms = append(ms, &metric.Metric{ Value: float64(val.Value()), - LabelValues: []string{c.Name, p.Spec.NodeName, sanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, + LabelValues: []string{c.Name, p.Spec.NodeName, SanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, }) } if isExtendedResourceName(resourceName) { ms = append(ms, &metric.Metric{ Value: float64(val.Value()), - LabelValues: []string{c.Name, p.Spec.NodeName, sanitizeLabelName(string(resourceName)), string(constant.UnitInteger)}, + LabelValues: []string{c.Name, p.Spec.NodeName, SanitizeLabelName(string(resourceName)), string(constant.UnitInteger)}, }) } @@ -241,7 +241,7 @@ func createPodContainerResourceRequestsFamilyGenerator() generator.FamilyGenerat switch resourceName { case v1.ResourceCPU: ms = append(ms, &metric.Metric{ - LabelValues: []string{c.Name, p.Spec.NodeName, sanitizeLabelName(string(resourceName)), string(constant.UnitCore)}, + LabelValues: []string{c.Name, p.Spec.NodeName, SanitizeLabelName(string(resourceName)), string(constant.UnitCore)}, Value: float64(val.MilliValue()) / 1000, }) case v1.ResourceStorage: @@ -250,25 +250,25 @@ func createPodContainerResourceRequestsFamilyGenerator() generator.FamilyGenerat fallthrough case v1.ResourceMemory: ms = append(ms, &metric.Metric{ - LabelValues: []string{c.Name, p.Spec.NodeName, sanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, + LabelValues: []string{c.Name, p.Spec.NodeName, SanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, Value: float64(val.Value()), }) default: if isHugePageResourceName(resourceName) { ms = append(ms, &metric.Metric{ - LabelValues: []string{c.Name, p.Spec.NodeName, sanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, + LabelValues: []string{c.Name, p.Spec.NodeName, SanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, Value: float64(val.Value()), }) } if isAttachableVolumeResourceName(resourceName) { ms = append(ms, &metric.Metric{ - LabelValues: []string{c.Name, p.Spec.NodeName, sanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, + LabelValues: []string{c.Name, p.Spec.NodeName, SanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, Value: float64(val.Value()), }) } if isExtendedResourceName(resourceName) { ms = append(ms, &metric.Metric{ - LabelValues: []string{c.Name, p.Spec.NodeName, sanitizeLabelName(string(resourceName)), string(constant.UnitInteger)}, + LabelValues: []string{c.Name, p.Spec.NodeName, SanitizeLabelName(string(resourceName)), string(constant.UnitInteger)}, Value: float64(val.Value()), }) } @@ -713,7 +713,7 @@ func createPodInitContainerResourceLimitsFamilyGenerator() generator.FamilyGener switch resourceName { case v1.ResourceCPU: ms = append(ms, &metric.Metric{ - LabelValues: []string{c.Name, p.Spec.NodeName, sanitizeLabelName(string(resourceName)), string(constant.UnitCore)}, + LabelValues: []string{c.Name, p.Spec.NodeName, SanitizeLabelName(string(resourceName)), string(constant.UnitCore)}, Value: float64(val.MilliValue()) / 1000, }) case v1.ResourceStorage: @@ -722,26 +722,26 @@ func createPodInitContainerResourceLimitsFamilyGenerator() generator.FamilyGener fallthrough case v1.ResourceMemory: ms = append(ms, &metric.Metric{ - LabelValues: []string{c.Name, p.Spec.NodeName, sanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, + LabelValues: []string{c.Name, p.Spec.NodeName, SanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, Value: float64(val.Value()), }) default: if isHugePageResourceName(resourceName) { ms = append(ms, &metric.Metric{ - LabelValues: []string{c.Name, p.Spec.NodeName, sanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, + LabelValues: []string{c.Name, p.Spec.NodeName, SanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, Value: float64(val.Value()), }) } if isAttachableVolumeResourceName(resourceName) { ms = append(ms, &metric.Metric{ Value: float64(val.Value()), - LabelValues: []string{c.Name, p.Spec.NodeName, sanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, + LabelValues: []string{c.Name, p.Spec.NodeName, SanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, }) } if isExtendedResourceName(resourceName) { ms = append(ms, &metric.Metric{ Value: float64(val.Value()), - LabelValues: []string{c.Name, p.Spec.NodeName, sanitizeLabelName(string(resourceName)), string(constant.UnitInteger)}, + LabelValues: []string{c.Name, p.Spec.NodeName, SanitizeLabelName(string(resourceName)), string(constant.UnitInteger)}, }) } @@ -777,7 +777,7 @@ func createPodInitContainerResourceRequestsFamilyGenerator() generator.FamilyGen switch resourceName { case v1.ResourceCPU: ms = append(ms, &metric.Metric{ - LabelValues: []string{c.Name, p.Spec.NodeName, sanitizeLabelName(string(resourceName)), string(constant.UnitCore)}, + LabelValues: []string{c.Name, p.Spec.NodeName, SanitizeLabelName(string(resourceName)), string(constant.UnitCore)}, Value: float64(val.MilliValue()) / 1000, }) case v1.ResourceStorage: @@ -786,25 +786,25 @@ func createPodInitContainerResourceRequestsFamilyGenerator() generator.FamilyGen fallthrough case v1.ResourceMemory: ms = append(ms, &metric.Metric{ - LabelValues: []string{c.Name, p.Spec.NodeName, sanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, + LabelValues: []string{c.Name, p.Spec.NodeName, SanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, Value: float64(val.Value()), }) default: if isHugePageResourceName(resourceName) { ms = append(ms, &metric.Metric{ - LabelValues: []string{c.Name, p.Spec.NodeName, sanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, + LabelValues: []string{c.Name, p.Spec.NodeName, SanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, Value: float64(val.Value()), }) } if isAttachableVolumeResourceName(resourceName) { ms = append(ms, &metric.Metric{ - LabelValues: []string{c.Name, p.Spec.NodeName, sanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, + LabelValues: []string{c.Name, p.Spec.NodeName, SanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, Value: float64(val.Value()), }) } if isExtendedResourceName(resourceName) { ms = append(ms, &metric.Metric{ - LabelValues: []string{c.Name, p.Spec.NodeName, sanitizeLabelName(string(resourceName)), string(constant.UnitInteger)}, + LabelValues: []string{c.Name, p.Spec.NodeName, SanitizeLabelName(string(resourceName)), string(constant.UnitInteger)}, Value: float64(val.Value()), }) } diff --git a/internal/store/utils.go b/internal/store/utils.go index 009d5739d7..a42a81de5e 100644 --- a/internal/store/utils.go +++ b/internal/store/utils.go @@ -123,10 +123,10 @@ func mapToPrometheusLabels(labels map[string]string, prefix string) ([]string, [ } func labelName(prefix, labelName string) string { - return prefix + "_" + lintLabelName(sanitizeLabelName(labelName)) + return prefix + "_" + lintLabelName(SanitizeLabelName(labelName)) } -func sanitizeLabelName(s string) string { +func SanitizeLabelName(s string) string { return invalidLabelCharRE.ReplaceAllString(s, "_") } diff --git a/internal/store/verticalpodautoscaler.go b/internal/store/verticalpodautoscaler.go index 6d326049f8..a90bb2a07b 100644 --- a/internal/store/verticalpodautoscaler.go +++ b/internal/store/verticalpodautoscaler.go @@ -262,7 +262,7 @@ func vpaResourcesToMetrics(containerName string, resources v1.ResourceList) []*m switch resourceName { case v1.ResourceCPU: ms = append(ms, &metric.Metric{ - LabelValues: []string{containerName, sanitizeLabelName(string(resourceName)), string(constant.UnitCore)}, + LabelValues: []string{containerName, SanitizeLabelName(string(resourceName)), string(constant.UnitCore)}, Value: float64(val.MilliValue()) / 1000, }) case v1.ResourceStorage: @@ -271,7 +271,7 @@ func vpaResourcesToMetrics(containerName string, resources v1.ResourceList) []*m fallthrough case v1.ResourceMemory: ms = append(ms, &metric.Metric{ - LabelValues: []string{containerName, sanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, + LabelValues: []string{containerName, SanitizeLabelName(string(resourceName)), string(constant.UnitByte)}, Value: float64(val.Value()), }) } diff --git a/pkg/customresourcestate/registry_factory.go b/pkg/customresourcestate/registry_factory.go index 77b722db59..4c611019d8 100644 --- a/pkg/customresourcestate/registry_factory.go +++ b/pkg/customresourcestate/registry_factory.go @@ -28,10 +28,9 @@ import ( "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/klog/v2" + "k8s.io/kube-state-metrics/v2/internal/store" "k8s.io/kube-state-metrics/v2/pkg/metric" generator "k8s.io/kube-state-metrics/v2/pkg/metric_generator" - - otelprom "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus" ) func compile(resource Resource) ([]compiledFamily, error) { @@ -505,8 +504,7 @@ func addPathLabels(obj interface{}, labels map[string]valuePath, result map[stri m := labels[k].Get(obj) if kv, ok := m.(map[string]interface{}); ok { for k, v := range kv { - otelCompatPromLabelName := otelprom.NormalizeLabel(k) - result[otelCompatPromLabelName] = fmt.Sprintf("%v", v) + result[store.SanitizeLabelName(k)] = fmt.Sprintf("%v", v) } } } @@ -519,8 +517,7 @@ func addPathLabels(obj interface{}, labels map[string]valuePath, result map[stri if value == nil { continue } - otelCompatPromLabelName := otelprom.NormalizeLabel(k) - result[otelCompatPromLabelName] = fmt.Sprintf("%v", value) + result[store.SanitizeLabelName(k)] = fmt.Sprintf("%v", value) } }