From 42278c2417e85823728981b3b744d06c5af0da24 Mon Sep 17 00:00:00 2001 From: Peter Stranak Date: Wed, 4 Oct 2023 09:34:50 +0200 Subject: [PATCH] NH-57036: Fix metrics relation to Nodes on Fargate * Don't use 'kubernetes_io_hostname' on Fargate Nodes * Use 'service.instance.id' from Resource attributes instead of DataPoint attributes * Remove nonexistent metrics from mocked data --- .../redirectKubeStateMetricsResponse.txt | 13 - deploy/helm/CHANGELOG.md | 4 +- deploy/helm/metrics-collector-config.yaml | 37 +- ...ollector-config-map-fargate_test.yaml.snap | 34 +- ...etrics-collector-config-map_test.yaml.snap | 37 +- tests/integration/expected_output.json | 744 +----------------- tests/integration/test_metric_collection.py | 2 +- 7 files changed, 58 insertions(+), 813 deletions(-) diff --git a/build/docker/wiremockFiles/redirectKubeStateMetricsResponse.txt b/build/docker/wiremockFiles/redirectKubeStateMetricsResponse.txt index cc4931d2..bf524e14 100644 --- a/build/docker/wiremockFiles/redirectKubeStateMetricsResponse.txt +++ b/build/docker/wiremockFiles/redirectKubeStateMetricsResponse.txt @@ -199,11 +199,6 @@ kube_pod_container_resource_limits{container="test-container",endpoint="http",in kube_pod_container_resource_limits{container="test-container",endpoint="http",instance="test-node",job="test-job",namespace="test-namespace",node="test-node",pod="test-pod",resource="memory",service="test-service",uid="bafeef2c-1292-4a5e-a92c-d709480b04b6",unit="byte",prometheus="prometheus-system/kube-prometheus-kube-prome-prometheus",prometheus_replica="prometheus-kube-prometheus-kube-prome-prometheus-0"} 3.221225472e+09 1675856675021 kube_pod_container_resource_limits{container="test-container",endpoint="tcp-model",instance="test-node",job="test-job",namespace="test-namespace",node="test-node",pod="test-pod",resource="memory",service="test-service",uid="bafeef2c-1292-4a5e-a92c-d709480b04b6",unit="byte",prometheus="prometheus-system/kube-prometheus-kube-prome-prometheus",prometheus_replica="prometheus-kube-prometheus-kube-prome-prometheus-0"} 3.221225472e+09 1675856675021 kube_pod_container_resource_limits{container="test-container",endpoint="tcp-model",instance="test-node",job="test-job",namespace="test-namespace",node="test-node",pod="test-pod",resource="cpu",service="test-service",uid="bafeef2c-1292-4a5e-a92c-d709480b04b6",unit="core",prometheus="prometheus-system/kube-prometheus-kube-prome-prometheus",prometheus_replica="prometheus-kube-prometheus-kube-prome-prometheus-0"} 0.1 1675856675021 -# TYPE kube_pod_container_resource_limits_cpu_cores untyped -kube_pod_container_resource_limits_cpu_cores{container="test-container",endpoint="tcp-model",instance="test-node",job="test-job",namespace="test-namespace",node="test-node",pod="test-pod",service="test-service",uid="71057e83-7723-4db5-a7ca-52ad7904e34d",prometheus="prometheus-system/kube-prometheus-kube-prome-prometheus",prometheus_replica="prometheus-kube-prometheus-kube-prome-prometheus-0"} 1 1675856675021 -# TYPE kube_pod_container_resource_limits_memory_bytes untyped -kube_pod_container_resource_limits_memory_bytes{container="test-container",endpoint="tcp-model",instance="test-node",job="test-job",namespace="test-namespace",node="test-node",pod="test-pod",service="test-service",uid="03d2b55c-b225-476b-9178-c74f8e5eaba2",prometheus="prometheus-system/kube-prometheus-kube-prome-prometheus",prometheus_replica="prometheus-kube-prometheus-kube-prome-prometheus-0"} 2.68435456e+08 1675856675021 -kube_pod_container_resource_limits_memory_bytes{container="test-container",endpoint="tcp-model",instance="test-node",job="test-job",namespace="test-namespace",node="test-node",pod="test-pod",service="test-service",uid="bafeef2c-1292-4a5e-a92c-d709480b04b6",prometheus="prometheus-system/kube-prometheus-kube-prome-prometheus",prometheus_replica="prometheus-kube-prometheus-kube-prome-prometheus-0"} 3.221225472e+09 1675856675021 # TYPE kube_pod_container_resource_requests untyped kube_pod_container_resource_requests{container="test-container",endpoint="http",instance="test-node",job="test-job",namespace="test-namespace",node="test-node",pod="test-pod",resource="cpu",service="test-service",uid="f15ca7ca-af33-4f43-a793-ec3176b31842",unit="core",prometheus="prometheus-system/kube-prometheus-kube-prome-prometheus",prometheus_replica="prometheus-kube-prometheus-kube-prome-prometheus-0"} 0.1 1675856675021 kube_pod_container_resource_requests{container="test-container",endpoint="http",instance="test-node",job="test-job",namespace="test-namespace",node="test-node",pod="test-pod",resource="memory",service="test-service",uid="bafeef2c-1292-4a5e-a92c-d709480b04b6",unit="byte",prometheus="prometheus-system/kube-prometheus-kube-prome-prometheus",prometheus_replica="prometheus-kube-prometheus-kube-prome-prometheus-0"} 3.221225472e+09 1675856675021 @@ -242,14 +237,6 @@ kube_pod_info{container="test-container",created_by_kind="ReplicaSet",created_by kube_pod_init_container_info{container="test-container",container_id="docker://f1c98663d614379552d6c9aae831b4eb3e149c469d4d589b62ea077cf3dad807",endpoint="http",image="busybox:1.29.2",image_id="docker-pullable://busybox@sha256:cb63aa0641a885f54de20f61d152187419e8f6b159ed11a251a09d115fdff9bd",instance="test-node",job="test-job",namespace="test-namespace",pod="test-pod",service="test-service",uid="9cab81cb-9da1-4029-ac51-c7c3024c6fbf",prometheus="prometheus-system/kube-prometheus-kube-prome-prometheus",prometheus_replica="prometheus-kube-prometheus-kube-prome-prometheus-0"} 1 1675856675021 kube_pod_init_container_info{container="test-container",container_id="docker://f55a97f615b1a90f15f114def871a7d4f0ed8a32d9a329cc7e2f94a24d4780c1",endpoint="http",image="fullstorydev/grpcurl:latest",image_id="docker-pullable://fullstorydev/grpcurl@sha256:d42ef512419560776bee5bb51e338a1734a0edb99f450b6d98fd98bcc93796f3",instance="test-node",job="test-job",namespace="test-namespace",pod="test-pod",service="test-service",uid="bafeef2c-1292-4a5e-a92c-d709480b04b6",prometheus="prometheus-system/kube-prometheus-kube-prome-prometheus",prometheus_replica="prometheus-kube-prometheus-kube-prome-prometheus-0"} 1 1675856675021 kube_pod_init_container_info{container="test-container",container_id="docker://6fb07210b86971939dbfb16ae47f98afdb8214a52a21dd5fc26f21ae35c09d9e",endpoint="http",image="busybox:latest",image_id="docker-pullable://busybox@sha256:b5d6fe0712636ceb7430189de28819e195e8966372edfc2d9409d79402a0dc16",instance="test-node",job="test-job",namespace="test-namespace",pod="test-pod",service="test-service",uid="bafeef2c-1292-4a5e-a92c-d709480b04b6",prometheus="prometheus-system/kube-prometheus-kube-prome-prometheus",prometheus_replica="prometheus-kube-prometheus-kube-prome-prometheus-0"} 1 1675856675021 -# TYPE kube_pod_init_container_resource_limits_cpu_cores untyped -kube_pod_init_container_resource_limits_cpu_cores{container="test-container",endpoint="http",instance="test-node",job="test-job",namespace="test-namespace",pod="test-pod",service="test-service",uid="2a82ed12-a31a-427a-adb9-d14cf6a4a063",prometheus="prometheus-system/kube-prometheus-kube-prome-prometheus",prometheus_replica="prometheus-kube-prometheus-kube-prome-prometheus-0"} 0.1 1675856675021 -# TYPE kube_pod_init_container_resource_limits_memory_bytes untyped -kube_pod_init_container_resource_limits_memory_bytes{container="test-container",endpoint="http",instance="test-node",job="test-job",namespace="test-namespace",pod="test-pod",service="test-service",uid="a920ed2f-477d-4ad7-93d6-3222aabfece2",prometheus="prometheus-system/kube-prometheus-kube-prome-prometheus",prometheus_replica="prometheus-kube-prometheus-kube-prome-prometheus-0"} 1.073741824e+09 1675856675021 -# TYPE kube_pod_init_container_resource_requests_cpu_cores untyped -kube_pod_init_container_resource_requests_cpu_cores{container="test-container",endpoint="http",instance="test-node",job="test-job",namespace="test-namespace",pod="test-pod",service="test-service",uid="c7f7a05a-a1b5-4fd0-a611-8e2a0e7acbf6",prometheus="prometheus-system/kube-prometheus-kube-prome-prometheus",prometheus_replica="prometheus-kube-prometheus-kube-prome-prometheus-0"} 0.25 1675856675021 -# TYPE kube_pod_init_container_resource_requests_memory_bytes untyped -kube_pod_init_container_resource_requests_memory_bytes{container="test-container",endpoint="http",instance="test-node",job="test-job",namespace="test-namespace",pod="test-pod",service="test-service",uid="c7f7a05a-a1b5-4fd0-a611-8e2a0e7acbf6",prometheus="prometheus-system/kube-prometheus-kube-prome-prometheus",prometheus_replica="prometheus-kube-prometheus-kube-prome-prometheus-0"} 6.7108864e+07 1675856675021 # TYPE kube_pod_init_container_status_ready untyped kube_pod_init_container_status_ready{container="test-container",endpoint="http",instance="test-node",job="test-job",namespace="test-namespace",pod="test-pod",service="test-service",uid="64b6d309-44e3-4a41-8883-c15c7cc9bc4a",prometheus="prometheus-system/kube-prometheus-kube-prome-prometheus",prometheus_replica="prometheus-kube-prometheus-kube-prome-prometheus-0"} 1 1675856675021 kube_pod_init_container_status_ready{container="test-container",endpoint="http",instance="test-node",job="test-job",namespace="test-namespace",pod="test-pod",service="test-service",uid="bafeef2c-1292-4a5e-a92c-d709480b04b6",prometheus="prometheus-system/kube-prometheus-kube-prome-prometheus",prometheus_replica="prometheus-kube-prometheus-kube-prome-prometheus-0"} 1 1675856675021 diff --git a/deploy/helm/CHANGELOG.md b/deploy/helm/CHANGELOG.md index 21e1d0e3..257a5de0 100644 --- a/deploy/helm/CHANGELOG.md +++ b/deploy/helm/CHANGELOG.md @@ -7,13 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased -## [2.8.0-alpha.2] - 2023-09-14 +## [2.8.0-alpha.2] - 2023-09-22 ### Added - Add monitoring windows node logs +### Fixed +- Detection of Node name for Fargate Nodes's metrics ## [2.8.0-alpha.1] - 2023-09-11 diff --git a/deploy/helm/metrics-collector-config.yaml b/deploy/helm/metrics-collector-config.yaml index 59ce5426..3f20e883 100644 --- a/deploy/helm/metrics-collector-config.yaml +++ b/deploy/helm/metrics-collector-config.yaml @@ -50,31 +50,16 @@ processors: datapoint: - 'attributes["container"] == "POD" and IsMatch(metric.name, "container_network_.*|k8s.container.*") == true' - - # unify attributes - attributes/unify_node_attribute: - include: - match_type: regexp - metric_names: - - container_.* - - kube_node_.* - - kube_pod_info - - kube_pod_container_resource_requests - - kube_pod_container_resource_limits - - kube_pod_init_container_resource_requests - - kube_pod_init_container_resource_limits - actions: - - key: k8s.node.name - from_attribute: node - action: insert -{{- if not .Values.aws_fargate.enabled }} - - key: k8s.node.name - from_attribute: kubernetes_io_hostname - action: insert -{{- end }} - - key: k8s.node.name - from_attribute: service.instance.id - action: insert + transform/unify_node_attribute: + metric_statements: + - context: datapoint + statements: + # when available, use "node" attribute for Node name + - set(attributes["k8s.node.name"], attributes["node"]) where IsMatch(metric.name, "^(container_.*)|(kube_node_.*)|(kube_pod_info)|(kube_pod_container_resource_requests)|(kube_pod_container_resource_limits)|(kube_pod_init_container_resource_requests)|(kube_pod_init_container_resource_limits)$") == true and attributes["k8s.node.name"] == nil + # "kubernetes_io_hostname", unlike "service.instance.id", provides a nice Node name in environments like local Docker, but for Fargate, its value is different from the other attributes + - set(attributes["k8s.node.name"], attributes["kubernetes_io_hostname"]) where IsMatch(metric.name, "^(container_.*)|(kube_node_.*)|(kube_pod_info)|(kube_pod_container_resource_requests)|(kube_pod_container_resource_limits)|(kube_pod_init_container_resource_requests)|(kube_pod_init_container_resource_limits)$") == true and attributes["eks_amazonaws_com_compute_type"] != "fargate" and attributes["k8s.node.name"] == nil + # use "service.instance.id" for Node name when the above attributes are not available + - set(attributes["k8s.node.name"], resource.attributes["service.instance.id"]) where IsMatch(metric.name, "^(container_.*)|(kube_node_.*)|(kube_pod_info)|(kube_pod_container_resource_requests)|(kube_pod_container_resource_limits)|(kube_pod_init_container_resource_requests)|(kube_pod_init_container_resource_limits)$") == true and attributes["k8s.node.name"] == nil attributes/unify_volume_attribute: include: @@ -1483,7 +1468,7 @@ service: - filter/receiver - transform - filter/remove_internal - - attributes/unify_node_attribute + - transform/unify_node_attribute - attributes/unify_volume_attribute - attributes/identify_init_container - attributes/identify_standard_container diff --git a/deploy/helm/tests/__snapshot__/metrics-collector-config-map-fargate_test.yaml.snap b/deploy/helm/tests/__snapshot__/metrics-collector-config-map-fargate_test.yaml.snap index 17e2c857..b76ceff9 100644 --- a/deploy/helm/tests/__snapshot__/metrics-collector-config-map-fargate_test.yaml.snap +++ b/deploy/helm/tests/__snapshot__/metrics-collector-config-map-fargate_test.yaml.snap @@ -334,24 +334,6 @@ Metrics config should match snapshot when using default values: match_type: regexp metric_names: - .* - attributes/unify_node_attribute: - actions: - - action: insert - from_attribute: node - key: k8s.node.name - - action: insert - from_attribute: service.instance.id - key: k8s.node.name - include: - match_type: regexp - metric_names: - - container_.* - - kube_node_.* - - kube_pod_info - - kube_pod_container_resource_requests - - kube_pod_container_resource_limits - - kube_pod_init_container_resource_requests - - kube_pod_init_container_resource_limits attributes/unify_volume_attribute: actions: - action: insert @@ -1926,6 +1908,20 @@ Metrics config should match snapshot when using default values: - delete_key(resource.attributes, "sw.k8s.job.found") - delete_key(resource.attributes, "sw.k8s.cronjob.found") - delete_key(resource.attributes, "sw.k8s.node.found") + transform/unify_node_attribute: + metric_statements: + - context: datapoint + statements: + - set(attributes["k8s.node.name"], attributes["node"]) where IsMatch(metric.name, + "^(container_.*)|(kube_node_.*)|(kube_pod_info)|(kube_pod_container_resource_requests)|(kube_pod_container_resource_limits)|(kube_pod_init_container_resource_requests)|(kube_pod_init_container_resource_limits)$") + == true and attributes["k8s.node.name"] == nil + - set(attributes["k8s.node.name"], attributes["kubernetes_io_hostname"]) where + IsMatch(metric.name, "^(container_.*)|(kube_node_.*)|(kube_pod_info)|(kube_pod_container_resource_requests)|(kube_pod_container_resource_limits)|(kube_pod_init_container_resource_requests)|(kube_pod_init_container_resource_limits)$") + == true and attributes["eks_amazonaws_com_compute_type"] != "fargate" and + attributes["k8s.node.name"] == nil + - set(attributes["k8s.node.name"], resource.attributes["service.instance.id"]) + where IsMatch(metric.name, "^(container_.*)|(kube_node_.*)|(kube_pod_info)|(kube_pod_container_resource_requests)|(kube_pod_container_resource_limits)|(kube_pod_init_container_resource_requests)|(kube_pod_init_container_resource_limits)$") + == true and attributes["k8s.node.name"] == nil receivers: k8s_events: null prometheus/kube-state-metrics: @@ -1988,7 +1984,7 @@ Metrics config should match snapshot when using default values: - filter/receiver - transform - filter/remove_internal - - attributes/unify_node_attribute + - transform/unify_node_attribute - attributes/unify_volume_attribute - attributes/identify_init_container - attributes/identify_standard_container diff --git a/deploy/helm/tests/__snapshot__/metrics-collector-config-map_test.yaml.snap b/deploy/helm/tests/__snapshot__/metrics-collector-config-map_test.yaml.snap index 3a67f7fa..b76ceff9 100644 --- a/deploy/helm/tests/__snapshot__/metrics-collector-config-map_test.yaml.snap +++ b/deploy/helm/tests/__snapshot__/metrics-collector-config-map_test.yaml.snap @@ -334,27 +334,6 @@ Metrics config should match snapshot when using default values: match_type: regexp metric_names: - .* - attributes/unify_node_attribute: - actions: - - action: insert - from_attribute: node - key: k8s.node.name - - action: insert - from_attribute: kubernetes_io_hostname - key: k8s.node.name - - action: insert - from_attribute: service.instance.id - key: k8s.node.name - include: - match_type: regexp - metric_names: - - container_.* - - kube_node_.* - - kube_pod_info - - kube_pod_container_resource_requests - - kube_pod_container_resource_limits - - kube_pod_init_container_resource_requests - - kube_pod_init_container_resource_limits attributes/unify_volume_attribute: actions: - action: insert @@ -1929,6 +1908,20 @@ Metrics config should match snapshot when using default values: - delete_key(resource.attributes, "sw.k8s.job.found") - delete_key(resource.attributes, "sw.k8s.cronjob.found") - delete_key(resource.attributes, "sw.k8s.node.found") + transform/unify_node_attribute: + metric_statements: + - context: datapoint + statements: + - set(attributes["k8s.node.name"], attributes["node"]) where IsMatch(metric.name, + "^(container_.*)|(kube_node_.*)|(kube_pod_info)|(kube_pod_container_resource_requests)|(kube_pod_container_resource_limits)|(kube_pod_init_container_resource_requests)|(kube_pod_init_container_resource_limits)$") + == true and attributes["k8s.node.name"] == nil + - set(attributes["k8s.node.name"], attributes["kubernetes_io_hostname"]) where + IsMatch(metric.name, "^(container_.*)|(kube_node_.*)|(kube_pod_info)|(kube_pod_container_resource_requests)|(kube_pod_container_resource_limits)|(kube_pod_init_container_resource_requests)|(kube_pod_init_container_resource_limits)$") + == true and attributes["eks_amazonaws_com_compute_type"] != "fargate" and + attributes["k8s.node.name"] == nil + - set(attributes["k8s.node.name"], resource.attributes["service.instance.id"]) + where IsMatch(metric.name, "^(container_.*)|(kube_node_.*)|(kube_pod_info)|(kube_pod_container_resource_requests)|(kube_pod_container_resource_limits)|(kube_pod_init_container_resource_requests)|(kube_pod_init_container_resource_limits)$") + == true and attributes["k8s.node.name"] == nil receivers: k8s_events: null prometheus/kube-state-metrics: @@ -1991,7 +1984,7 @@ Metrics config should match snapshot when using default values: - filter/receiver - transform - filter/remove_internal - - attributes/unify_node_attribute + - transform/unify_node_attribute - attributes/unify_volume_attribute - attributes/identify_init_container - attributes/identify_standard_container diff --git a/tests/integration/expected_output.json b/tests/integration/expected_output.json index 3ae3e6f3..89ceb39d 100644 --- a/tests/integration/expected_output.json +++ b/tests/integration/expected_output.json @@ -10373,194 +10373,6 @@ } ] }, - { - "resource": { - "attributes": [ - { - "key": "container", - "value": { - "stringValue": "test-container" - } - }, - { - "key": "http.scheme", - "value": { - "stringValue": "http" - } - }, - { - "key": "k8s.cluster.name", - "value": { - "stringValue": "cluster name" - } - }, - { - "key": "k8s.container.name", - "value": { - "stringValue": "test-container" - } - }, - { - "key": "k8s.namespace.annotations.description", - "value": { - "stringValue": "This is a test namespace." - } - }, - { - "key": "k8s.namespace.labels.app", - "value": { - "stringValue": "test-app" - } - }, - { - "key": "k8s.namespace.labels.kubernetes.io/metadata.name", - "value": { - "stringValue": "test-namespace" - } - }, - { - "key": "k8s.namespace.labels.purpose", - "value": { - "stringValue": "testing" - } - }, - { - "key": "k8s.namespace.name", - "value": { - "stringValue": "test-namespace" - } - }, - { - "key": "k8s.node.name", - "value": { - "stringValue": "test-node" - } - }, - { - "key": "k8s.pod.annotations.test-annotation", - "value": { - "stringValue": "test-value" - } - }, - { - "key": "k8s.pod.labels.app", - "value": { - "stringValue": "test-pod" - } - }, - { - "key": "k8s.pod.name", - "value": { - "stringValue": "test-pod" - } - }, - { - "key": "k8s.pod.uid", - "value": { - "stringValue": "2a82ed12-a31a-427a-adb9-d14cf6a4a063" - } - }, - { - "key": "namespace", - "value": { - "stringValue": "test-namespace" - } - }, - { - "key": "net.host.name", - "value": { - "stringValue": "test-node" - } - }, - { - "key": "net.host.port", - "value": { - "stringValue": "" - } - }, - { - "key": "pod", - "value": { - "stringValue": "test-pod" - } - }, - { - "key": "sw.k8s.agent.app.version", - "value": { - "stringValue": "0.8.3" - } - }, - { - "key": "sw.k8s.agent.manifest.version", - "value": { - "stringValue": "2.8.0-alpha.2" - } - }, - { - "key": "sw.k8s.cluster.uid", - "value": { - "stringValue": "cluster-uid-123456789" - } - }, - { - "key": "sw.k8s.container.init", - "value": { - "stringValue": "true" - } - }, - { - "key": "uid", - "value": { - "stringValue": "2a82ed12-a31a-427a-adb9-d14cf6a4a063" - } - } - ] - }, - "scopeMetrics": [ - { - "metrics": [ - { - "gauge": { - "dataPoints": [ - { - "asDouble": 0.1, - "attributes": [ - { - "key": "endpoint", - "value": { - "stringValue": "http" - } - }, - { - "key": "prometheus", - "value": { - "stringValue": "prometheus-system/kube-prometheus-kube-prome-prometheus" - } - }, - { - "key": "prometheus_replica", - "value": { - "stringValue": "prometheus-kube-prometheus-kube-prome-prometheus-0" - } - }, - { - "key": "service", - "value": { - "stringValue": "test-service" - } - } - ], - "timeUnixNano": "0" - } - ] - }, - "name": "k8s.kube_pod_init_container_resource_limits_cpu_cores" - } - ], - "scope": {} - } - ] - }, { "resource": { "attributes": [ @@ -11653,43 +11465,6 @@ "scopeMetrics": [ { "metrics": [ - { - "gauge": { - "dataPoints": [ - { - "asDouble": 1073741824, - "attributes": [ - { - "key": "endpoint", - "value": { - "stringValue": "http" - } - }, - { - "key": "prometheus", - "value": { - "stringValue": "prometheus-system/kube-prometheus-kube-prome-prometheus" - } - }, - { - "key": "prometheus_replica", - "value": { - "stringValue": "prometheus-kube-prometheus-kube-prome-prometheus-0" - } - }, - { - "key": "service", - "value": { - "stringValue": "test-service" - } - } - ], - "timeUnixNano": "0" - } - ] - }, - "name": "k8s.kube_pod_init_container_resource_limits_memory_bytes" - }, { "name": "k8s.kube_pod_init_container_status_restarts_total", "sum": { @@ -14137,7 +13912,7 @@ "gauge": { "dataPoints": [ { - "asDouble": 0.25, + "asDouble": 0, "attributes": [ { "key": "endpoint", @@ -14168,13 +13943,13 @@ } ] }, - "name": "k8s.kube_pod_init_container_resource_requests_cpu_cores" + "name": "k8s.kube_pod_init_container_status_running" }, { "gauge": { "dataPoints": [ { - "asDouble": 67108864, + "asDouble": 1, "attributes": [ { "key": "endpoint", @@ -14205,13 +13980,13 @@ } ] }, - "name": "k8s.kube_pod_init_container_resource_requests_memory_bytes" + "name": "k8s.kube_pod_init_container_status_terminated" }, { "gauge": { "dataPoints": [ { - "asDouble": 0, + "asDouble": 1, "attributes": [ { "key": "endpoint", @@ -14231,6 +14006,12 @@ "stringValue": "prometheus-kube-prometheus-kube-prome-prometheus-0" } }, + { + "key": "reason", + "value": { + "stringValue": "Completed" + } + }, { "key": "service", "value": { @@ -14242,93 +14023,13 @@ } ] }, - "name": "k8s.kube_pod_init_container_status_running" + "name": "k8s.kube_pod_init_container_status_terminated_reason" }, { "gauge": { "dataPoints": [ { - "asDouble": 1, - "attributes": [ - { - "key": "endpoint", - "value": { - "stringValue": "http" - } - }, - { - "key": "prometheus", - "value": { - "stringValue": "prometheus-system/kube-prometheus-kube-prome-prometheus" - } - }, - { - "key": "prometheus_replica", - "value": { - "stringValue": "prometheus-kube-prometheus-kube-prome-prometheus-0" - } - }, - { - "key": "service", - "value": { - "stringValue": "test-service" - } - } - ], - "timeUnixNano": "0" - } - ] - }, - "name": "k8s.kube_pod_init_container_status_terminated" - }, - { - "gauge": { - "dataPoints": [ - { - "asDouble": 1, - "attributes": [ - { - "key": "endpoint", - "value": { - "stringValue": "http" - } - }, - { - "key": "prometheus", - "value": { - "stringValue": "prometheus-system/kube-prometheus-kube-prome-prometheus" - } - }, - { - "key": "prometheus_replica", - "value": { - "stringValue": "prometheus-kube-prometheus-kube-prome-prometheus-0" - } - }, - { - "key": "reason", - "value": { - "stringValue": "Completed" - } - }, - { - "key": "service", - "value": { - "stringValue": "test-service" - } - } - ], - "timeUnixNano": "0" - } - ] - }, - "name": "k8s.kube_pod_init_container_status_terminated_reason" - }, - { - "gauge": { - "dataPoints": [ - { - "asDouble": 0, + "asDouble": 0, "attributes": [ { "key": "endpoint", @@ -15881,382 +15582,6 @@ } ] }, - { - "resource": { - "attributes": [ - { - "key": "container", - "value": { - "stringValue": "test-container" - } - }, - { - "key": "http.scheme", - "value": { - "stringValue": "http" - } - }, - { - "key": "k8s.cluster.name", - "value": { - "stringValue": "cluster name" - } - }, - { - "key": "k8s.container.name", - "value": { - "stringValue": "test-container" - } - }, - { - "key": "k8s.namespace.annotations.description", - "value": { - "stringValue": "This is a test namespace." - } - }, - { - "key": "k8s.namespace.labels.app", - "value": { - "stringValue": "test-app" - } - }, - { - "key": "k8s.namespace.labels.kubernetes.io/metadata.name", - "value": { - "stringValue": "test-namespace" - } - }, - { - "key": "k8s.namespace.labels.purpose", - "value": { - "stringValue": "testing" - } - }, - { - "key": "k8s.namespace.name", - "value": { - "stringValue": "test-namespace" - } - }, - { - "key": "k8s.pod.annotations.test-annotation", - "value": { - "stringValue": "test-value" - } - }, - { - "key": "k8s.pod.labels.app", - "value": { - "stringValue": "test-pod" - } - }, - { - "key": "k8s.pod.name", - "value": { - "stringValue": "test-pod" - } - }, - { - "key": "k8s.pod.uid", - "value": { - "stringValue": "03d2b55c-b225-476b-9178-c74f8e5eaba2" - } - }, - { - "key": "namespace", - "value": { - "stringValue": "test-namespace" - } - }, - { - "key": "net.host.name", - "value": { - "stringValue": "test-node" - } - }, - { - "key": "net.host.port", - "value": { - "stringValue": "" - } - }, - { - "key": "pod", - "value": { - "stringValue": "test-pod" - } - }, - { - "key": "sw.k8s.agent.app.version", - "value": { - "stringValue": "0.8.3" - } - }, - { - "key": "sw.k8s.agent.manifest.version", - "value": { - "stringValue": "2.8.0-alpha.2" - } - }, - { - "key": "sw.k8s.cluster.uid", - "value": { - "stringValue": "cluster-uid-123456789" - } - }, - { - "key": "sw.k8s.container.init", - "value": { - "stringValue": "false" - } - }, - { - "key": "uid", - "value": { - "stringValue": "03d2b55c-b225-476b-9178-c74f8e5eaba2" - } - } - ] - }, - "scopeMetrics": [ - { - "metrics": [ - { - "gauge": { - "dataPoints": [ - { - "asDouble": 268435456, - "attributes": [ - { - "key": "endpoint", - "value": { - "stringValue": "tcp-model" - } - }, - { - "key": "node", - "value": { - "stringValue": "test-node" - } - }, - { - "key": "prometheus", - "value": { - "stringValue": "prometheus-system/kube-prometheus-kube-prome-prometheus" - } - }, - { - "key": "prometheus_replica", - "value": { - "stringValue": "prometheus-kube-prometheus-kube-prome-prometheus-0" - } - }, - { - "key": "service", - "value": { - "stringValue": "test-service" - } - } - ], - "timeUnixNano": "0" - } - ] - }, - "name": "k8s.kube_pod_container_resource_limits_memory_bytes" - } - ], - "scope": {} - } - ] - }, - { - "resource": { - "attributes": [ - { - "key": "container", - "value": { - "stringValue": "test-container" - } - }, - { - "key": "http.scheme", - "value": { - "stringValue": "http" - } - }, - { - "key": "k8s.cluster.name", - "value": { - "stringValue": "cluster name" - } - }, - { - "key": "k8s.container.name", - "value": { - "stringValue": "test-container" - } - }, - { - "key": "k8s.namespace.annotations.description", - "value": { - "stringValue": "This is a test namespace." - } - }, - { - "key": "k8s.namespace.labels.app", - "value": { - "stringValue": "test-app" - } - }, - { - "key": "k8s.namespace.labels.kubernetes.io/metadata.name", - "value": { - "stringValue": "test-namespace" - } - }, - { - "key": "k8s.namespace.labels.purpose", - "value": { - "stringValue": "testing" - } - }, - { - "key": "k8s.namespace.name", - "value": { - "stringValue": "test-namespace" - } - }, - { - "key": "k8s.pod.annotations.test-annotation", - "value": { - "stringValue": "test-value" - } - }, - { - "key": "k8s.pod.labels.app", - "value": { - "stringValue": "test-pod" - } - }, - { - "key": "k8s.pod.name", - "value": { - "stringValue": "test-pod" - } - }, - { - "key": "k8s.pod.uid", - "value": { - "stringValue": "71057e83-7723-4db5-a7ca-52ad7904e34d" - } - }, - { - "key": "namespace", - "value": { - "stringValue": "test-namespace" - } - }, - { - "key": "net.host.name", - "value": { - "stringValue": "test-node" - } - }, - { - "key": "net.host.port", - "value": { - "stringValue": "" - } - }, - { - "key": "pod", - "value": { - "stringValue": "test-pod" - } - }, - { - "key": "sw.k8s.agent.app.version", - "value": { - "stringValue": "0.8.3" - } - }, - { - "key": "sw.k8s.agent.manifest.version", - "value": { - "stringValue": "2.8.0-alpha.2" - } - }, - { - "key": "sw.k8s.cluster.uid", - "value": { - "stringValue": "cluster-uid-123456789" - } - }, - { - "key": "sw.k8s.container.init", - "value": { - "stringValue": "false" - } - }, - { - "key": "uid", - "value": { - "stringValue": "71057e83-7723-4db5-a7ca-52ad7904e34d" - } - } - ] - }, - "scopeMetrics": [ - { - "metrics": [ - { - "gauge": { - "dataPoints": [ - { - "asDouble": 1, - "attributes": [ - { - "key": "endpoint", - "value": { - "stringValue": "tcp-model" - } - }, - { - "key": "node", - "value": { - "stringValue": "test-node" - } - }, - { - "key": "prometheus", - "value": { - "stringValue": "prometheus-system/kube-prometheus-kube-prome-prometheus" - } - }, - { - "key": "prometheus_replica", - "value": { - "stringValue": "prometheus-kube-prometheus-kube-prome-prometheus-0" - } - }, - { - "key": "service", - "value": { - "stringValue": "test-service" - } - } - ], - "timeUnixNano": "0" - } - ] - }, - "name": "k8s.kube_pod_container_resource_limits_cpu_cores" - } - ], - "scope": {} - } - ] - }, { "resource": { "attributes": [ @@ -16809,49 +16134,6 @@ }, "name": "k8s.kube_pod_container_resource_limits" }, - { - "gauge": { - "dataPoints": [ - { - "asDouble": 3221225472, - "attributes": [ - { - "key": "endpoint", - "value": { - "stringValue": "tcp-model" - } - }, - { - "key": "node", - "value": { - "stringValue": "test-node" - } - }, - { - "key": "prometheus", - "value": { - "stringValue": "prometheus-system/kube-prometheus-kube-prome-prometheus" - } - }, - { - "key": "prometheus_replica", - "value": { - "stringValue": "prometheus-kube-prometheus-kube-prome-prometheus-0" - } - }, - { - "key": "service", - "value": { - "stringValue": "test-service" - } - } - ], - "timeUnixNano": "0" - } - ] - }, - "name": "k8s.kube_pod_container_resource_limits_memory_bytes" - }, { "gauge": { "dataPoints": [ diff --git a/tests/integration/test_metric_collection.py b/tests/integration/test_metric_collection.py index a8cb9df6..34dbbfbc 100644 --- a/tests/integration/test_metric_collection.py +++ b/tests/integration/test_metric_collection.py @@ -126,7 +126,7 @@ def assert_test_metric_names_found(content): missing_metric_names = [ name for name in expected_metric_names if name not in metric_names] - error = f'Some specific metric names are not found in the response\ + error = f'Some specific metric names are not found in the response. \ Missing metrics: {missing_metric_names}' return (metric_matches, error)