From 3821ade4d82ad22eb42e3343cadbfcbbb411a5e4 Mon Sep 17 00:00:00 2001 From: Povilas Versockas Date: Thu, 27 Feb 2025 09:55:18 +0200 Subject: [PATCH] [otel-integration] Update opentelemetry collector v0.119.0 --- otel-integration/CHANGELOG.md | 4 ++ otel-integration/k8s-helm/Chart.yaml | 12 ++-- .../k8s-helm/e2e-test/expected_test.go | 68 ++++++++++++++++++- .../k8s-helm/e2e-test/main_test.go | 31 ++++++++- otel-integration/k8s-helm/values.yaml | 34 +--------- 5 files changed, 106 insertions(+), 43 deletions(-) diff --git a/otel-integration/CHANGELOG.md b/otel-integration/CHANGELOG.md index 0bae965b..e426694c 100644 --- a/otel-integration/CHANGELOG.md +++ b/otel-integration/CHANGELOG.md @@ -2,6 +2,10 @@ ## OpenTelemtry-Integration +### v0.0.149 / 2025-02-27 + +- [Feat] Upgrade OpenTelemetry Collector to `0.119.0` + ### v0.0.148 / 2025-02-20 - [Fix] Filter only Pods from standard kubernetes workloads in kubernetesResource presets. diff --git a/otel-integration/k8s-helm/Chart.yaml b/otel-integration/k8s-helm/Chart.yaml index 1a6705ca..9a22bbf4 100644 --- a/otel-integration/k8s-helm/Chart.yaml +++ b/otel-integration/k8s-helm/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v2 name: otel-integration description: OpenTelemetry Integration -version: 0.0.148 +version: 0.0.149 keywords: - OpenTelemetry Collector - OpenTelemetry Agent @@ -11,27 +11,27 @@ keywords: dependencies: - name: opentelemetry-collector alias: opentelemetry-agent - version: "0.106.4" + version: "0.107.1" repository: https://cgx.jfrog.io/artifactory/coralogix-charts-virtual condition: opentelemetry-agent.enabled - name: opentelemetry-collector alias: opentelemetry-agent-windows - version: "0.106.4" + version: "0.107.1" repository: https://cgx.jfrog.io/artifactory/coralogix-charts-virtual condition: opentelemetry-agent-windows.enabled - name: opentelemetry-collector alias: opentelemetry-cluster-collector - version: "0.106.4" + version: "0.107.1" repository: https://cgx.jfrog.io/artifactory/coralogix-charts-virtual condition: opentelemetry-cluster-collector.enabled - name: opentelemetry-collector alias: opentelemetry-receiver - version: "0.106.4" + version: "0.107.1" repository: https://cgx.jfrog.io/artifactory/coralogix-charts-virtual condition: opentelemetry-receiver.enabled - name: opentelemetry-collector alias: opentelemetry-gateway - version: "0.106.4" + version: "0.107.1" repository: https://cgx.jfrog.io/artifactory/coralogix-charts-virtual condition: opentelemetry-gateway.enabled - name: coralogix-ebpf-agent diff --git a/otel-integration/k8s-helm/e2e-test/expected_test.go b/otel-integration/k8s-helm/e2e-test/expected_test.go index aba37000..87939360 100644 --- a/otel-integration/k8s-helm/e2e-test/expected_test.go +++ b/otel-integration/k8s-helm/e2e-test/expected_test.go @@ -5,7 +5,7 @@ var expectedResourceMetricsSchemaURL = map[string]bool{ "https://opentelemetry.io/schemas/1.9.0": false, } -const expectedScopeVersion = "0.118.0" +const expectedScopeVersion = "" var expectedResourceScopeNames = map[string]bool{ "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/cpuscraper": false, @@ -17,6 +17,16 @@ var expectedResourceScopeNames = map[string]bool{ "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/processscraper": false, "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kubeletstatsreceiver": false, "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver": false, + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/fileconsumer": false, + "github.com/open-telemetry/opentelemetry-collector-contrib/processor/k8sattributesprocessor": false, + + "go.opentelemetry.io/collector/exporter/exporterhelper": false, + "go.opentelemetry.io/collector/processor/batchprocessor": false, + "go.opentelemetry.io/collector/receiver/receiverhelper": false, + "go.opentelemetry.io/collector/processor/memorylimiterprocessor": false, + "go.opentelemetry.io/collector/processor/processorhelper": false, + "go.opentelemetry.io/collector/scraper/scraperhelper": false, + "go.opentelemetry.io/collector/service": false, } var unwantedScopeNames = map[string]struct{}{ @@ -72,6 +82,61 @@ var expectedResourceAttributesHostmetricsreceiver = map[string]string{ "process.pid": "", } +var expectedResourceAttributesK8sattributesprocessor = map[string]string{ + "service.name": "", + "k8s.cluster.name": "otel-integration-agent-e2e", + "k8s.node.name": "otel-integration-agent-e2e-control-plane", +} + +var expectedResourceAttributesMemorylimiterprocessor = map[string]string{ + "service.name": "opentelemetry-collector", + "net.host.name": "", + "server.address": "", + "k8s.pod.ip": "", + "net.host.port": "", + "http.scheme": "http", + "server.port": "", + "url.scheme": "", + "cx_agent_type": "", + "k8s_node_name": "", + "service_instance_id": "", + "cx.otel_integration.name": "coralogix-integration-helm", + "service_version": expectedScopeVersion, + "k8s.cluster.name": "otel-integration-agent-e2e", + "k8s.pod.name": "", + "k8s.namespace.name": "", + "k8s.daemonset.name": "", + "k8s.node.name": "otel-integration-agent-e2e-control-plane", + "host.name": "", + "os.type": "linux", + "host.id": "", + "cloud.provider": "azure", + "cloud.platform": "azure_vm", + "cloud.region": "", + "cloud.account.id": "", + "azure.vm.name": "", + "azure.vm.size": "", + "azure.vm.scaleset.name": "", + "azure.resourcegroup.name": "", +} + +var expectedResourceAttributesLoadscraper = map[string]string{ + "k8s.cluster.name": "otel-integration-agent-e2e", + "cx.otel_integration.name": "coralogix-integration-helm", + "host.name": "", + "os.type": "linux", + "host.id": "", + "k8s.node.name": "otel-integration-agent-e2e-control-plane", + "cloud.provider": "azure", + "cloud.platform": "azure_vm", + "cloud.region": "", + "cloud.account.id": "", + "azure.vm.name": "", + "azure.vm.size": "", + "azure.vm.scaleset.name": "", + "azure.resourcegroup.name": "", +} + var expectedResourceAttributesPrometheusreceiver = map[string]string{ "azure.resourcegroup.name": "", "azure.vm.name": "", @@ -214,6 +279,7 @@ var expectedMetrics map[string]bool = map[string]bool{ "system.network.io": false, "system.network.packets": false, "up": false, + "promhttp_metric_handler_errors_total": false, } var expectedTracesSchemaURL = map[string]bool{ diff --git a/otel-integration/k8s-helm/e2e-test/main_test.go b/otel-integration/k8s-helm/e2e-test/main_test.go index b9a568c0..b9042fe7 100644 --- a/otel-integration/k8s-helm/e2e-test/main_test.go +++ b/otel-integration/k8s-helm/e2e-test/main_test.go @@ -101,7 +101,7 @@ func checkResourceMetrics(t *testing.T, actual []pmetric.Metrics) error { require.True(t, expectedState, "metrics: schema_url %v was not found in the actual metrics", name) } for name, expectedState := range expectedResourceScopeNames { - require.True(t, expectedState, "metrics: scope %v was not found in the actual metrics", name) + require.True(t, expectedState, "metrics: scope %v was not found in the actual metrics, found scope names: %v", name, expectedResourceScopeNames) } var missingMetrics []string @@ -121,6 +121,7 @@ func checkResourceMetrics(t *testing.T, actual []pmetric.Metrics) error { } func checkScopeMetrics(t *testing.T, rmetrics pmetric.ResourceMetrics) error { + for k := 0; k < rmetrics.ScopeMetrics().Len(); k++ { scope := rmetrics.ScopeMetrics().At(k) @@ -135,16 +136,22 @@ func checkScopeMetrics(t *testing.T, rmetrics pmetric.ResourceMetrics) error { t.Fatalf("unwanted scope detected %v", scope.Scope().Name()) } - require.Equal(t, expectedScopeVersion, scope.Scope().Version(), "metrics unexpected scope version %v") _, ok := expectedResourceScopeNames[scope.Scope().Name()] if ok { expectedResourceScopeNames[scope.Scope().Name()] = true } + + if !ok { + for k := 0; k < rmetrics.ScopeMetrics().Len(); k++ { + scope := rmetrics.ScopeMetrics().At(k) + fmt.Printf("found scopeName: %v\n", scope.Scope().Name()) + } + } require.True(t, ok, "metrics: scope %v does not match one of the expected values", scope.Scope().Name()) // We only need the relevant part of the scopr name to get receiver name. scopeNameTrimmed := strings.Split(scope.Scope().Name(), "/") - checkResourceAttributes(t, rmetrics.Resource().Attributes(), scopeNameTrimmed[4]) + checkResourceAttributes(t, rmetrics.Resource().Attributes(), scopeNameTrimmed[len(scopeNameTrimmed)-1]) metrics := scope.Metrics() @@ -157,6 +164,10 @@ func checkScopeMetrics(t *testing.T, rmetrics pmetric.ResourceMetrics) error { } if !ok { spew.Dump(metric) + for j := 0; j < metrics.Len(); j++ { + metric := metrics.At(j) + fmt.Printf("Found metric %s\n", metric.Name()) + } } require.True(t, ok, "actual metrics detected %v do not match expected metrics", metric.Name()) } @@ -175,10 +186,24 @@ func checkResourceAttributes(t *testing.T, attributes pcommon.Map, scopeName str compareMap = expectedResourceAttributesKubeletstatreceiver case "prometheusreceiver": compareMap = expectedResourceAttributesPrometheusreceiver + case "k8sattributesprocessor": + compareMap = expectedResourceAttributesK8sattributesprocessor + case "loadscraper": + compareMap = expectedResourceAttributesLoadscraper + case "memorylimiterprocessor": + compareMap = expectedResourceAttributesMemorylimiterprocessor + default: + compareMap = expectedResourceAttributesMemorylimiterprocessor } attributes.Range(func(k string, v pcommon.Value) bool { val, ok := compareMap[k] + if !ok { + attributes.Range(func(k string, v pcommon.Value) bool { + fmt.Printf("found attribute: scopeName: %s, attribute: %v\n", scopeName, k) + return true + }) + } require.True(t, ok, "metrics: unexpected attribute %v - scopeName: %s", k, scopeName) if val != "" { require.Equal(t, val, v.AsString(), "metrics: unexpected value for attribute %v", k) diff --git a/otel-integration/k8s-helm/values.yaml b/otel-integration/k8s-helm/values.yaml index 8c03ef05..86a34936 100644 --- a/otel-integration/k8s-helm/values.yaml +++ b/otel-integration/k8s-helm/values.yaml @@ -5,7 +5,7 @@ global: defaultSubsystemName: "integration" logLevel: "warn" collectionInterval: "30s" - version: "0.0.148" + version: "0.0.149" extensions: kubernetesDashboard: @@ -355,14 +355,6 @@ opentelemetry-agent: cx.agent.type: "agent" logs: level: "{{ .Values.global.logLevel }}" - encoding: json - metrics: - readers: - - pull: - exporter: - prometheus: - host: ${env:MY_POD_IP} - port: 8888 extensions: - zpages - pprof @@ -718,14 +710,6 @@ opentelemetry-cluster-collector: cx.agent.type: "cluster-collector" logs: level: "{{ .Values.global.logLevel }}" - encoding: json - metrics: - readers: - - pull: - exporter: - prometheus: - host: ${env:MY_POD_IP} - port: 8888 extensions: - zpages - pprof @@ -986,14 +970,6 @@ opentelemetry-gateway: cx.agent.type: "gateway" logs: level: "{{ .Values.global.logLevel }}" - encoding: json - metrics: - readers: - - pull: - exporter: - prometheus: - host: ${env:MY_POD_IP} - port: 8888 pipelines: metrics: exporters: @@ -1183,14 +1159,6 @@ opentelemetry-receiver: cx.agent.type: "receiver" logs: level: "{{ .Values.global.logLevel }}" - encoding: json - metrics: - readers: - - pull: - exporter: - prometheus: - host: ${env:MY_POD_IP} - port: 8888 pipelines: metrics/self_monitoring: exporters: