From 544ea3fe7355ade5fa31133df87e68f85f5bc3a2 Mon Sep 17 00:00:00 2001 From: Sophian Mehboub Date: Sat, 4 Oct 2025 21:19:51 +0200 Subject: [PATCH 1/2] feat(kube-stack): add kubelet service monitor --- charts/opentelemetry-kube-stack/Chart.yaml | 2 +- .../examples/cloud-demo/rendered/bridge.yaml | 2 +- .../cloud-demo/rendered/collector.yaml | 2 +- .../examples/cloud-demo/rendered/hooks.yaml | 2 +- .../cloud-demo/rendered/instrumentation.yaml | 2 +- .../rendered/collector.yaml | 6 +- .../rendered/hooks.yaml | 2 +- .../rendered/collector.yaml | 4 +- .../rendered/hooks.yaml | 2 +- .../prometheus-otel/rendered/collector.yaml | 2 +- .../kube-api-server/servicemonitor.yaml | 2 +- .../kube-controller-manager/service.yaml | 2 +- .../servicemonitor.yaml | 2 +- .../rendered/exporters/kube-dns/service.yaml | 2 +- .../exporters/kube-dns/servicemonitor.yaml | 2 +- .../rendered/exporters/kube-etcd/service.yaml | 2 +- .../exporters/kube-etcd/servicemonitor.yaml | 2 +- .../exporters/kube-proxy/service.yaml | 2 +- .../exporters/kube-proxy/servicemonitor.yaml | 2 +- .../exporters/kube-scheduler/service.yaml | 2 +- .../kube-scheduler/servicemonitor.yaml | 2 +- .../exporters/kubelet/servicemonitor.yaml | 110 +++++++++ .../prometheus-otel/rendered/hooks.yaml | 2 +- .../rendered/collector.yaml | 2 +- .../secrets-csi-driver/rendered/hooks.yaml | 2 +- .../templates/_helpers.tpl | 13 ++ .../exporters/kubelet/servicemonitor.yaml | 149 ++++++++++++ .../values.schema.json | 175 +++++++++++++- charts/opentelemetry-kube-stack/values.yaml | 213 +++++++++++++++++- 29 files changed, 683 insertions(+), 31 deletions(-) create mode 100644 charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kubelet/servicemonitor.yaml create mode 100644 charts/opentelemetry-kube-stack/templates/exporters/kubelet/servicemonitor.yaml diff --git a/charts/opentelemetry-kube-stack/Chart.yaml b/charts/opentelemetry-kube-stack/Chart.yaml index f90bb57076..05067b7cd5 100644 --- a/charts/opentelemetry-kube-stack/Chart.yaml +++ b/charts/opentelemetry-kube-stack/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 name: opentelemetry-kube-stack -version: 0.11.0 +version: 0.12.0 description: | OpenTelemetry Quickstart chart for Kubernetes. Installs an operator and collector for an easy way to get started with Kubernetes observability. diff --git a/charts/opentelemetry-kube-stack/examples/cloud-demo/rendered/bridge.yaml b/charts/opentelemetry-kube-stack/examples/cloud-demo/rendered/bridge.yaml index e7960208a8..e052f44c6f 100644 --- a/charts/opentelemetry-kube-stack/examples/cloud-demo/rendered/bridge.yaml +++ b/charts/opentelemetry-kube-stack/examples/cloud-demo/rendered/bridge.yaml @@ -5,7 +5,7 @@ kind: OpAMPBridge metadata: name: example labels: - helm.sh/chart: opentelemetry-kube-stack-0.11.0 + helm.sh/chart: opentelemetry-kube-stack-0.12.0 app.kubernetes.io/version: "0.129.1" app.kubernetes.io/managed-by: Helm release: "example" diff --git a/charts/opentelemetry-kube-stack/examples/cloud-demo/rendered/collector.yaml b/charts/opentelemetry-kube-stack/examples/cloud-demo/rendered/collector.yaml index d92512d21b..19c54766b7 100644 --- a/charts/opentelemetry-kube-stack/examples/cloud-demo/rendered/collector.yaml +++ b/charts/opentelemetry-kube-stack/examples/cloud-demo/rendered/collector.yaml @@ -6,7 +6,7 @@ metadata: name: example-daemon namespace: default labels: - helm.sh/chart: opentelemetry-kube-stack-0.11.0 + helm.sh/chart: opentelemetry-kube-stack-0.12.0 app.kubernetes.io/version: "0.129.1" app.kubernetes.io/managed-by: Helm release: "example" diff --git a/charts/opentelemetry-kube-stack/examples/cloud-demo/rendered/hooks.yaml b/charts/opentelemetry-kube-stack/examples/cloud-demo/rendered/hooks.yaml index 05121cafa0..866c3a9ca2 100644 --- a/charts/opentelemetry-kube-stack/examples/cloud-demo/rendered/hooks.yaml +++ b/charts/opentelemetry-kube-stack/examples/cloud-demo/rendered/hooks.yaml @@ -61,4 +61,4 @@ spec: - "delete" - "instrumentations,opampbridges,opentelemetrycollectors" - "-l" - - "helm.sh/chart=opentelemetry-kube-stack-0.11.0" + - "helm.sh/chart=opentelemetry-kube-stack-0.12.0" diff --git a/charts/opentelemetry-kube-stack/examples/cloud-demo/rendered/instrumentation.yaml b/charts/opentelemetry-kube-stack/examples/cloud-demo/rendered/instrumentation.yaml index a1e03114bc..d63ff72aa8 100644 --- a/charts/opentelemetry-kube-stack/examples/cloud-demo/rendered/instrumentation.yaml +++ b/charts/opentelemetry-kube-stack/examples/cloud-demo/rendered/instrumentation.yaml @@ -5,7 +5,7 @@ kind: Instrumentation metadata: name: example labels: - helm.sh/chart: opentelemetry-kube-stack-0.11.0 + helm.sh/chart: opentelemetry-kube-stack-0.12.0 app.kubernetes.io/version: "0.129.1" app.kubernetes.io/managed-by: Helm release: "example" diff --git a/charts/opentelemetry-kube-stack/examples/isolated-multicollector-deployment/rendered/collector.yaml b/charts/opentelemetry-kube-stack/examples/isolated-multicollector-deployment/rendered/collector.yaml index a4eb093dd1..51f55a18e7 100644 --- a/charts/opentelemetry-kube-stack/examples/isolated-multicollector-deployment/rendered/collector.yaml +++ b/charts/opentelemetry-kube-stack/examples/isolated-multicollector-deployment/rendered/collector.yaml @@ -6,7 +6,7 @@ metadata: name: agent namespace: default labels: - helm.sh/chart: opentelemetry-kube-stack-0.11.0 + helm.sh/chart: opentelemetry-kube-stack-0.12.0 app.kubernetes.io/version: "0.129.1" app.kubernetes.io/managed-by: Helm release: "example" @@ -228,7 +228,7 @@ metadata: name: gateway namespace: default labels: - helm.sh/chart: opentelemetry-kube-stack-0.11.0 + helm.sh/chart: opentelemetry-kube-stack-0.12.0 app.kubernetes.io/version: "0.129.1" app.kubernetes.io/managed-by: Helm release: "example" @@ -357,7 +357,7 @@ metadata: name: ingress namespace: default labels: - helm.sh/chart: opentelemetry-kube-stack-0.11.0 + helm.sh/chart: opentelemetry-kube-stack-0.12.0 app.kubernetes.io/version: "0.129.1" app.kubernetes.io/managed-by: Helm release: "example" diff --git a/charts/opentelemetry-kube-stack/examples/isolated-multicollector-deployment/rendered/hooks.yaml b/charts/opentelemetry-kube-stack/examples/isolated-multicollector-deployment/rendered/hooks.yaml index 05121cafa0..866c3a9ca2 100644 --- a/charts/opentelemetry-kube-stack/examples/isolated-multicollector-deployment/rendered/hooks.yaml +++ b/charts/opentelemetry-kube-stack/examples/isolated-multicollector-deployment/rendered/hooks.yaml @@ -61,4 +61,4 @@ spec: - "delete" - "instrumentations,opampbridges,opentelemetrycollectors" - "-l" - - "helm.sh/chart=opentelemetry-kube-stack-0.11.0" + - "helm.sh/chart=opentelemetry-kube-stack-0.12.0" diff --git a/charts/opentelemetry-kube-stack/examples/no-leader-election-extension/rendered/collector.yaml b/charts/opentelemetry-kube-stack/examples/no-leader-election-extension/rendered/collector.yaml index db84aaebce..154c59af37 100644 --- a/charts/opentelemetry-kube-stack/examples/no-leader-election-extension/rendered/collector.yaml +++ b/charts/opentelemetry-kube-stack/examples/no-leader-election-extension/rendered/collector.yaml @@ -6,7 +6,7 @@ metadata: name: example-cluster-stats namespace: default labels: - helm.sh/chart: opentelemetry-kube-stack-0.11.0 + helm.sh/chart: opentelemetry-kube-stack-0.12.0 app.kubernetes.io/version: "0.129.1" app.kubernetes.io/managed-by: Helm release: "example" @@ -167,7 +167,7 @@ metadata: name: example-daemon namespace: default labels: - helm.sh/chart: opentelemetry-kube-stack-0.11.0 + helm.sh/chart: opentelemetry-kube-stack-0.12.0 app.kubernetes.io/version: "0.129.1" app.kubernetes.io/managed-by: Helm release: "example" diff --git a/charts/opentelemetry-kube-stack/examples/no-leader-election-extension/rendered/hooks.yaml b/charts/opentelemetry-kube-stack/examples/no-leader-election-extension/rendered/hooks.yaml index 05121cafa0..866c3a9ca2 100644 --- a/charts/opentelemetry-kube-stack/examples/no-leader-election-extension/rendered/hooks.yaml +++ b/charts/opentelemetry-kube-stack/examples/no-leader-election-extension/rendered/hooks.yaml @@ -61,4 +61,4 @@ spec: - "delete" - "instrumentations,opampbridges,opentelemetrycollectors" - "-l" - - "helm.sh/chart=opentelemetry-kube-stack-0.11.0" + - "helm.sh/chart=opentelemetry-kube-stack-0.12.0" diff --git a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/collector.yaml b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/collector.yaml index 06799f8d6c..3bea6a9589 100644 --- a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/collector.yaml +++ b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/collector.yaml @@ -6,7 +6,7 @@ metadata: name: example-daemon namespace: default labels: - helm.sh/chart: opentelemetry-kube-stack-0.11.0 + helm.sh/chart: opentelemetry-kube-stack-0.12.0 app.kubernetes.io/version: "0.129.1" app.kubernetes.io/managed-by: Helm release: "example" diff --git a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-api-server/servicemonitor.yaml b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-api-server/servicemonitor.yaml index 0446728c6f..cc0d323e66 100644 --- a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-api-server/servicemonitor.yaml +++ b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-api-server/servicemonitor.yaml @@ -7,7 +7,7 @@ metadata: namespace: default labels: app: opentelemetry-kube-stack-apiserver - helm.sh/chart: opentelemetry-kube-stack-0.11.0 + helm.sh/chart: opentelemetry-kube-stack-0.12.0 app.kubernetes.io/version: "0.129.1" app.kubernetes.io/managed-by: Helm release: "example" diff --git a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-controller-manager/service.yaml b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-controller-manager/service.yaml index 555aa13272..ea846d0eba 100644 --- a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-controller-manager/service.yaml +++ b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-controller-manager/service.yaml @@ -7,7 +7,7 @@ metadata: labels: app: opentelemetry-kube-stack-kube-controller-manager jobLabel: kube-controller-manager - helm.sh/chart: opentelemetry-kube-stack-0.11.0 + helm.sh/chart: opentelemetry-kube-stack-0.12.0 app.kubernetes.io/version: "0.129.1" app.kubernetes.io/managed-by: Helm release: "example" diff --git a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-controller-manager/servicemonitor.yaml b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-controller-manager/servicemonitor.yaml index 8f20f78b76..ac92636d00 100644 --- a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-controller-manager/servicemonitor.yaml +++ b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-controller-manager/servicemonitor.yaml @@ -7,7 +7,7 @@ metadata: namespace: default labels: app: opentelemetry-kube-stack-kube-controller-manager - helm.sh/chart: opentelemetry-kube-stack-0.11.0 + helm.sh/chart: opentelemetry-kube-stack-0.12.0 app.kubernetes.io/version: "0.129.1" app.kubernetes.io/managed-by: Helm release: "example" diff --git a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-dns/service.yaml b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-dns/service.yaml index 24a41192f0..f9e67803f1 100644 --- a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-dns/service.yaml +++ b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-dns/service.yaml @@ -7,7 +7,7 @@ metadata: labels: app: opentelemetry-kube-stack-kube-dns jobLabel: kube-dns - helm.sh/chart: opentelemetry-kube-stack-0.11.0 + helm.sh/chart: opentelemetry-kube-stack-0.12.0 app.kubernetes.io/version: "0.129.1" app.kubernetes.io/managed-by: Helm release: "example" diff --git a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-dns/servicemonitor.yaml b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-dns/servicemonitor.yaml index b51f22a929..4217f12801 100644 --- a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-dns/servicemonitor.yaml +++ b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-dns/servicemonitor.yaml @@ -7,7 +7,7 @@ metadata: namespace: default labels: app: opentelemetry-kube-stack-kube-dns - helm.sh/chart: opentelemetry-kube-stack-0.11.0 + helm.sh/chart: opentelemetry-kube-stack-0.12.0 app.kubernetes.io/version: "0.129.1" app.kubernetes.io/managed-by: Helm release: "example" diff --git a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-etcd/service.yaml b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-etcd/service.yaml index da5aa1b7e5..722b64c38e 100644 --- a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-etcd/service.yaml +++ b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-etcd/service.yaml @@ -7,7 +7,7 @@ metadata: labels: app: opentelemetry-kube-stack-kube-etcd jobLabel: kube-etcd - helm.sh/chart: opentelemetry-kube-stack-0.11.0 + helm.sh/chart: opentelemetry-kube-stack-0.12.0 app.kubernetes.io/version: "0.129.1" app.kubernetes.io/managed-by: Helm release: "example" diff --git a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-etcd/servicemonitor.yaml b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-etcd/servicemonitor.yaml index 3766b413a8..5895c38456 100644 --- a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-etcd/servicemonitor.yaml +++ b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-etcd/servicemonitor.yaml @@ -7,7 +7,7 @@ metadata: namespace: default labels: app: opentelemetry-kube-stack-kube-etcd - helm.sh/chart: opentelemetry-kube-stack-0.11.0 + helm.sh/chart: opentelemetry-kube-stack-0.12.0 app.kubernetes.io/version: "0.129.1" app.kubernetes.io/managed-by: Helm release: "example" diff --git a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-proxy/service.yaml b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-proxy/service.yaml index b197120423..395443b715 100644 --- a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-proxy/service.yaml +++ b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-proxy/service.yaml @@ -7,7 +7,7 @@ metadata: labels: app: opentelemetry-kube-stack-kube-proxy jobLabel: kube-proxy - helm.sh/chart: opentelemetry-kube-stack-0.11.0 + helm.sh/chart: opentelemetry-kube-stack-0.12.0 app.kubernetes.io/version: "0.129.1" app.kubernetes.io/managed-by: Helm release: "example" diff --git a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-proxy/servicemonitor.yaml b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-proxy/servicemonitor.yaml index 701f731dea..5bf366b12e 100644 --- a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-proxy/servicemonitor.yaml +++ b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-proxy/servicemonitor.yaml @@ -7,7 +7,7 @@ metadata: namespace: default labels: app: opentelemetry-kube-stack-kube-proxy - helm.sh/chart: opentelemetry-kube-stack-0.11.0 + helm.sh/chart: opentelemetry-kube-stack-0.12.0 app.kubernetes.io/version: "0.129.1" app.kubernetes.io/managed-by: Helm release: "example" diff --git a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-scheduler/service.yaml b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-scheduler/service.yaml index b0615b3dc1..a622c7045f 100644 --- a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-scheduler/service.yaml +++ b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-scheduler/service.yaml @@ -7,7 +7,7 @@ metadata: labels: app: opentelemetry-kube-stack-kube-scheduler jobLabel: kube-scheduler - helm.sh/chart: opentelemetry-kube-stack-0.11.0 + helm.sh/chart: opentelemetry-kube-stack-0.12.0 app.kubernetes.io/version: "0.129.1" app.kubernetes.io/managed-by: Helm release: "example" diff --git a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-scheduler/servicemonitor.yaml b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-scheduler/servicemonitor.yaml index a7d5939bb8..bbc93da64e 100644 --- a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-scheduler/servicemonitor.yaml +++ b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kube-scheduler/servicemonitor.yaml @@ -7,7 +7,7 @@ metadata: namespace: default labels: app: opentelemetry-kube-stack-kube-scheduler - helm.sh/chart: opentelemetry-kube-stack-0.11.0 + helm.sh/chart: opentelemetry-kube-stack-0.12.0 app.kubernetes.io/version: "0.129.1" app.kubernetes.io/managed-by: Helm release: "example" diff --git a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kubelet/servicemonitor.yaml b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kubelet/servicemonitor.yaml new file mode 100644 index 0000000000..594a9c2b7d --- /dev/null +++ b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kubelet/servicemonitor.yaml @@ -0,0 +1,110 @@ +--- +# Source: opentelemetry-kube-stack/templates/exporters/kubelet/servicemonitor.yaml +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: example-kubelet + namespace: default + labels: + app: opentelemetry-kube-stack-kubelet + helm.sh/chart: opentelemetry-kube-stack-0.12.0 + app.kubernetes.io/version: "0.129.1" + app.kubernetes.io/managed-by: Helm + release: "example" +spec: + attachMetadata: + node: false + jobLabel: k8s-app + namespaceSelector: + matchNames: + - kube-system + selector: + matchLabels: + app.kubernetes.io/name: kubelet + k8s-app: kubelet + endpoints: + - port: https-metrics + scheme: https + tlsConfig: + caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecureSkipVerify: true + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token + honorLabels: true + honorTimestamps: true + metricRelabelings: + - action: drop + regex: (csi_operations|storage_operation_duration)_seconds_bucket;(0.25|2.5|15|25|120|600)(\.0)? + sourceLabels: + - __name__ + - le + relabelings: + - action: replace + sourceLabels: + - __metrics_path__ + targetLabel: metrics_path + - port: https-metrics + scheme: https + path: /metrics/cadvisor + interval: 10s + honorLabels: true + honorTimestamps: true + trackTimestampsStaleness: true + tlsConfig: + caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecureSkipVerify: true + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token + metricRelabelings: + - action: drop + regex: container_cpu_(cfs_throttled_seconds_total|load_average_10s|system_seconds_total|user_seconds_total) + sourceLabels: + - __name__ + - action: drop + regex: container_fs_(io_current|io_time_seconds_total|io_time_weighted_seconds_total|reads_merged_total|sector_reads_total|sector_writes_total|writes_merged_total) + sourceLabels: + - __name__ + - action: drop + regex: container_memory_(mapped_file|swap) + sourceLabels: + - __name__ + - action: drop + regex: container_(file_descriptors|tasks_state|threads_max) + sourceLabels: + - __name__ + - action: drop + regex: container_memory_failures_total;hierarchy + sourceLabels: + - __name__ + - scope + - action: drop + regex: container_network_.*;(cali|cilium|cni|lxc|nodelocaldns|tunl).* + sourceLabels: + - __name__ + - interface + - action: drop + regex: container_spec.* + sourceLabels: + - __name__ + - action: drop + regex: .+; + sourceLabels: + - id + - pod + relabelings: + - action: replace + sourceLabels: + - __metrics_path__ + targetLabel: metrics_path + - port: https-metrics + scheme: https + path: /metrics/probes + honorLabels: true + honorTimestamps: true + tlsConfig: + caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecureSkipVerify: true + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token + relabelings: + - action: replace + sourceLabels: + - __metrics_path__ + targetLabel: metrics_path diff --git a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/hooks.yaml b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/hooks.yaml index 05121cafa0..866c3a9ca2 100644 --- a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/hooks.yaml +++ b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/hooks.yaml @@ -61,4 +61,4 @@ spec: - "delete" - "instrumentations,opampbridges,opentelemetrycollectors" - "-l" - - "helm.sh/chart=opentelemetry-kube-stack-0.11.0" + - "helm.sh/chart=opentelemetry-kube-stack-0.12.0" diff --git a/charts/opentelemetry-kube-stack/examples/secrets-csi-driver/rendered/collector.yaml b/charts/opentelemetry-kube-stack/examples/secrets-csi-driver/rendered/collector.yaml index d878cd333d..a6e854e3af 100644 --- a/charts/opentelemetry-kube-stack/examples/secrets-csi-driver/rendered/collector.yaml +++ b/charts/opentelemetry-kube-stack/examples/secrets-csi-driver/rendered/collector.yaml @@ -6,7 +6,7 @@ metadata: name: example-daemon namespace: default labels: - helm.sh/chart: opentelemetry-kube-stack-0.11.0 + helm.sh/chart: opentelemetry-kube-stack-0.12.0 app.kubernetes.io/version: "0.129.1" app.kubernetes.io/managed-by: Helm release: "example" diff --git a/charts/opentelemetry-kube-stack/examples/secrets-csi-driver/rendered/hooks.yaml b/charts/opentelemetry-kube-stack/examples/secrets-csi-driver/rendered/hooks.yaml index 05121cafa0..866c3a9ca2 100644 --- a/charts/opentelemetry-kube-stack/examples/secrets-csi-driver/rendered/hooks.yaml +++ b/charts/opentelemetry-kube-stack/examples/secrets-csi-driver/rendered/hooks.yaml @@ -61,4 +61,4 @@ spec: - "delete" - "instrumentations,opampbridges,opentelemetrycollectors" - "-l" - - "helm.sh/chart=opentelemetry-kube-stack-0.11.0" + - "helm.sh/chart=opentelemetry-kube-stack-0.12.0" diff --git a/charts/opentelemetry-kube-stack/templates/_helpers.tpl b/charts/opentelemetry-kube-stack/templates/_helpers.tpl index 374ecdffe1..3b311738bc 100644 --- a/charts/opentelemetry-kube-stack/templates/_helpers.tpl +++ b/charts/opentelemetry-kube-stack/templates/_helpers.tpl @@ -322,3 +322,16 @@ labelNameLengthLimit: {{ . }} labelValueLengthLimit: {{ . }} {{- end }} {{- end -}} + +{{/* To help configure the kubelet servicemonitor for http or https. */}} +{{- define "opentelemetry-kube-stack.kubelet.scheme" }} +{{- if .Values.kubelet.serviceMonitor.https }}https{{ else }}http{{ end }} +{{- end }} +{{- define "opentelemetry-kube-stack.kubelet.authConfig" }} +{{- if .Values.kubelet.serviceMonitor.https }} +tlsConfig: + caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecureSkipVerify: {{ .Values.kubelet.serviceMonitor.insecureSkipVerify }} +bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token +{{- end }} +{{- end }} diff --git a/charts/opentelemetry-kube-stack/templates/exporters/kubelet/servicemonitor.yaml b/charts/opentelemetry-kube-stack/templates/exporters/kubelet/servicemonitor.yaml new file mode 100644 index 0000000000..24a5f52b79 --- /dev/null +++ b/charts/opentelemetry-kube-stack/templates/exporters/kubelet/servicemonitor.yaml @@ -0,0 +1,149 @@ +{{- if and .Values.kubelet.enabled .Values.kubelet.serviceMonitor.enabled .Values.kubernetesServiceMonitors.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "opentelemetry-kube-stack.fullname" . }}-kubelet + {{- if .Values.kubernetesServiceMonitors.ignoreNamespaceSelectors }} + namespace: {{ .Values.kubelet.namespace }} + {{- else }} + namespace: {{ template "opentelemetry-kube-stack.namespace" . }} + {{- end }} + labels: + app: {{ template "opentelemetry-kube-stack.name" . }}-kubelet + {{- with .Values.kubelet.serviceMonitor.additionalLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} +{{ include "opentelemetry-kube-stack.labels" . | indent 4 }} +spec: + {{- include "opentelemetry-kube-stack.servicemonitor.scrapeLimits" .Values.kubelet.serviceMonitor | nindent 2 }} + {{- with .Values.kubelet.serviceMonitor.attachMetadata }} + attachMetadata: + {{- toYaml . | nindent 4 }} + {{- end }} + jobLabel: k8s-app + {{- with .Values.kubelet.serviceMonitor.targetLabels }} + targetLabels: + {{- toYaml . | nindent 4 }} + {{- end }} + namespaceSelector: + matchNames: + - {{ .Values.kubelet.namespace }} + selector: + matchLabels: + app.kubernetes.io/name: kubelet + k8s-app: kubelet + endpoints: +{{- if .Values.kubelet.serviceMonitor.kubelet }} + - port: {{ template "opentelemetry-kube-stack.kubelet.scheme" . }}-metrics + scheme: {{ template "opentelemetry-kube-stack.kubelet.scheme" . }} + {{- if .Values.kubelet.serviceMonitor.interval }} + interval: {{ .Values.kubelet.serviceMonitor.interval }} + {{- end }} + {{- if .Values.kubelet.serviceMonitor.proxyUrl }} + proxyUrl: {{ .Values.kubelet.serviceMonitor.proxyUrl }} + {{- end }} + {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }} + scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }} + {{- end }} + {{- include "opentelemetry-kube-stack.kubelet.authConfig" . | indent 4 }} + honorLabels: {{ .Values.kubelet.serviceMonitor.honorLabels }} + honorTimestamps: {{ .Values.kubelet.serviceMonitor.honorTimestamps }} +{{- if .Values.kubelet.serviceMonitor.metricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.kubelet.serviceMonitor.metricRelabelings | indent 4) . }} +{{- end }} +{{- if .Values.kubelet.serviceMonitor.relabelings }} + relabelings: +{{ tpl (toYaml .Values.kubelet.serviceMonitor.relabelings | indent 4) . }} +{{- end }} +{{- end }} +{{- if .Values.kubelet.serviceMonitor.cAdvisor }} + - port: {{ template "opentelemetry-kube-stack.kubelet.scheme" . }}-metrics + scheme: {{ template "opentelemetry-kube-stack.kubelet.scheme" . }} + path: /metrics/cadvisor + {{- if .Values.kubelet.serviceMonitor.interval }} + interval: {{ .Values.kubelet.serviceMonitor.interval }} + {{- else }} + interval: {{ .Values.kubelet.serviceMonitor.cAdvisorInterval }} + {{- end }} + {{- if .Values.kubelet.serviceMonitor.proxyUrl }} + proxyUrl: {{ .Values.kubelet.serviceMonitor.proxyUrl }} + {{- end }} + {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }} + scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }} + {{- end }} + honorLabels: {{ .Values.kubelet.serviceMonitor.honorLabels }} + {{- if .Values.kubelet.serviceMonitor.trackTimestampsStaleness }} + honorTimestamps: true + {{- else }} + honorTimestamps: {{ .Values.kubelet.serviceMonitor.honorTimestamps }} + {{- end }} + trackTimestampsStaleness: {{ .Values.kubelet.serviceMonitor.trackTimestampsStaleness }} + {{- include "opentelemetry-kube-stack.kubelet.authConfig" . | indent 4 }} +{{- if .Values.kubelet.serviceMonitor.cAdvisorMetricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.kubelet.serviceMonitor.cAdvisorMetricRelabelings | indent 4) . }} +{{- end }} +{{- if .Values.kubelet.serviceMonitor.cAdvisorRelabelings }} + relabelings: +{{ tpl (toYaml .Values.kubelet.serviceMonitor.cAdvisorRelabelings | indent 4) . }} +{{- end }} +{{- end }} +{{- if .Values.kubelet.serviceMonitor.probes }} + - port: {{ template "opentelemetry-kube-stack.kubelet.scheme" . }}-metrics + scheme: {{ template "opentelemetry-kube-stack.kubelet.scheme" . }} + path: /metrics/probes + {{- if .Values.kubelet.serviceMonitor.interval }} + interval: {{ .Values.kubelet.serviceMonitor.interval }} + {{- end }} + {{- if .Values.kubelet.serviceMonitor.proxyUrl }} + proxyUrl: {{ .Values.kubelet.serviceMonitor.proxyUrl }} + {{- end }} + {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }} + scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }} + {{- end }} + honorLabels: {{ .Values.kubelet.serviceMonitor.honorLabels }} + honorTimestamps: {{ .Values.kubelet.serviceMonitor.honorTimestamps }} + {{- include "opentelemetry-kube-stack.kubelet.authConfig" . | indent 4 }} +{{- if .Values.kubelet.serviceMonitor.probesMetricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.kubelet.serviceMonitor.probesMetricRelabelings | indent 4) . }} +{{- end }} +{{- if .Values.kubelet.serviceMonitor.probesRelabelings }} + relabelings: +{{ tpl (toYaml .Values.kubelet.serviceMonitor.probesRelabelings | indent 4) . }} +{{- end }} +{{- end }} +{{- if .Values.kubelet.serviceMonitor.resource }} + - port: {{ template "opentelemetry-kube-stack.kubelet.scheme" . }}-metrics + scheme: {{ template "opentelemetry-kube-stack.kubelet.scheme" . }} + path: {{ .Values.kubelet.serviceMonitor.resourcePath }} + {{- if .Values.kubelet.serviceMonitor.interval }} + interval: {{ .Values.kubelet.serviceMonitor.interval }} + {{- else }} + interval: {{ .Values.kubelet.serviceMonitor.resourceInterval }} + {{- end }} + {{- if .Values.kubelet.serviceMonitor.proxyUrl }} + proxyUrl: {{ .Values.kubelet.serviceMonitor.proxyUrl }} + {{- end }} + {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }} + scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }} + {{- end }} + honorLabels: {{ .Values.kubelet.serviceMonitor.honorLabels }} + {{- if .Values.kubelet.serviceMonitor.trackTimestampsStaleness }} + honorTimestamps: true + {{- else }} + honorTimestamps: {{ .Values.kubelet.serviceMonitor.honorTimestamps }} + {{- end }} + trackTimestampsStaleness: {{ .Values.kubelet.serviceMonitor.trackTimestampsStaleness }} + {{- include "opentelemetry-kube-stack.kubelet.authConfig" . | indent 4 }} +{{- if .Values.kubelet.serviceMonitor.resourceMetricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.kubelet.serviceMonitor.resourceMetricRelabelings | indent 4) . }} +{{- end }} +{{- if .Values.kubelet.serviceMonitor.resourceRelabelings }} + relabelings: +{{ tpl (toYaml .Values.kubelet.serviceMonitor.resourceRelabelings | indent 4) . }} +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/opentelemetry-kube-stack/values.schema.json b/charts/opentelemetry-kube-stack/values.schema.json index 20171cf618..05cd4e7c4f 100644 --- a/charts/opentelemetry-kube-stack/values.schema.json +++ b/charts/opentelemetry-kube-stack/values.schema.json @@ -3664,9 +3664,58 @@ "attachMetadata": { "$ref": "#/$defs/AttachMetadata" }, - "interval": { + "additionalLabels": { + "type": "object" + }, + "cAdvisor": { + "type": "boolean" + }, + "cAdvisorInterval": { "type": "string" }, + "cAdvisorMetricRelabelings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "action": { + "type": "string" + }, + "regex": { + "type": "string" + }, + "sourceLabels": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "cAdvisorRelabelings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "action": { + "type": "string" + }, + "sourceLabels": { + "type": "array", + "items": { + "type": "string" + } + }, + "targetLabel": { + "type": "string" + } + } + } + }, + "enabled": { + "type": "boolean" + }, "honorLabels": { "type": "boolean" }, @@ -3676,11 +3725,133 @@ "https": { "type": "boolean" }, - "cAdvisor": { + "insecureSkipVerify": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "kubelet": { "type": "boolean" }, + "labelLimit": { + "type": "integer" + }, + "labelNameLengthLimit": { + "type": "integer" + }, + "labelValueLengthLimit": { + "type": "integer" + }, + "metricRelabelings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "action": { + "type": "string" + }, + "regex": { + "type": "string" + }, + "sourceLabels": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, "probes": { "type": "boolean" + }, + "probesMetricRelabelings": { + "type": "array" + }, + "probesRelabelings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "action": { + "type": "string" + }, + "sourceLabels": { + "type": "array", + "items": { + "type": "string" + } + }, + "targetLabel": { + "type": "string" + } + } + } + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "action": { + "type": "string" + }, + "sourceLabels": { + "type": "array", + "items": { + "type": "string" + } + }, + "targetLabel": { + "type": "string" + } + } + } + }, + "resource": { + "type": "boolean" + }, + "resourceInterval": { + "type": "string" + }, + "resourcePath": { + "type": "string" + }, + "resourceRelabelings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "action": { + "type": "string" + }, + "sourceLabels": { + "type": "array", + "items": { + "type": "string" + } + }, + "targetLabel": { + "type": "string" + } + } + } + }, + "sampleLimit": { + "type": "integer" + }, + "targetLabels": { + "type": "array" + }, + "targetLimit": { + "type": "integer" + }, + "trackTimestampsStaleness": { + "type": "boolean" } }, "required": [ diff --git a/charts/opentelemetry-kube-stack/values.yaml b/charts/opentelemetry-kube-stack/values.yaml index f99263d520..3cece88c8a 100644 --- a/charts/opentelemetry-kube-stack/values.yaml +++ b/charts/opentelemetry-kube-stack/values.yaml @@ -990,6 +990,15 @@ kubelet: namespace: kube-system serviceMonitor: + enabled: true + ## Enable scraping /metrics from kubelet's service + kubelet: true + + ## Attach metadata to discovered targets. Requires Prometheus v2.45 for endpoints created by the operator. + ## + attachMetadata: + node: false + ## Scrape interval. If not set, the Prometheus default scrape interval is used. ## interval: "" @@ -1002,19 +1011,219 @@ kubelet: ## honorTimestamps: true + ## If true, defines whether Prometheus tracks staleness of the metrics that have an explicit timestamp present in scraped data. Has no effect if `honorTimestamps` is false. + ## We recommend enabling this if you want the best possible accuracy for container_ metrics scraped from cadvisor. + ## For more details see: https://github.com/prometheus-community/helm-charts/pull/5063#issuecomment-2545374849 + trackTimestampsStaleness: true + + ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. + ## + sampleLimit: 0 + + ## TargetLimit defines a limit on the number of scraped targets that will be accepted. + ## + targetLimit: 0 + + ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. + ## + labelLimit: 0 + + ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. + ## + labelNameLengthLimit: 0 + + ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. + ## + labelValueLengthLimit: 0 + + ## proxyUrl: URL of a proxy that should be used for scraping. + ## + proxyUrl: "" + ## Enable scraping the kubelet over https. For requirements to enable this see ## https://github.com/prometheus-operator/prometheus-operator/issues/926 ## https: true - ## Enable scraping /metrics/cadvisor from kubelet's service + ## Skip TLS certificate validation when scraping. + ## This is enabled by default because kubelet serving certificate deployed by kubeadm is by default self-signed + ## ref: https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/#kubelet-serving-certs ## - cAdvisor: true + insecureSkipVerify: true ## Enable scraping /metrics/probes from kubelet's service ## probes: true + ## Enable scraping /metrics/resource from kubelet's service + ## This is disabled by default because container metrics are already exposed by cAdvisor + ## + resource: false + # From kubernetes 1.18, /metrics/resource/v1alpha1 renamed to /metrics/resource + resourcePath: "/metrics/resource/v1alpha1" + ## Configure the scrape interval for resource metrics. This is configured to the default Kubelet cAdvisor + ## minimum housekeeping interval in order to avoid missing samples. Note, this value is ignored + ## if kubelet.serviceMonitor.interval is not empty. + resourceInterval: 10s + + ## Enable scraping /metrics/cadvisor from kubelet's service + ## + cAdvisor: true + ## Configure the scrape interval for cAdvisor. This is configured to the default Kubelet cAdvisor + ## minimum housekeeping interval in order to avoid missing samples. Note, this value is ignored + ## if kubelet.serviceMonitor.interval is not empty. + cAdvisorInterval: 10s + ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion. + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig + ## + cAdvisorMetricRelabelings: + # Drop less useful container CPU metrics. + - sourceLabels: [__name__] + action: drop + regex: 'container_cpu_(cfs_throttled_seconds_total|load_average_10s|system_seconds_total|user_seconds_total)' + # Drop less useful container / always zero filesystem metrics. + - sourceLabels: [__name__] + action: drop + regex: 'container_fs_(io_current|io_time_seconds_total|io_time_weighted_seconds_total|reads_merged_total|sector_reads_total|sector_writes_total|writes_merged_total)' + # Drop less useful / always zero container memory metrics. + - sourceLabels: [__name__] + action: drop + regex: 'container_memory_(mapped_file|swap)' + # Drop less useful container process metrics. + - sourceLabels: [__name__] + action: drop + regex: 'container_(file_descriptors|tasks_state|threads_max)' + # Drop container_memory_failures_total{scope="hierarchy"} metrics, + # we only need the container scope. + - sourceLabels: [__name__, scope] + action: drop + regex: 'container_memory_failures_total;hierarchy' + # Drop container_network_... metrics that match various interfaces that + # correspond to CNI and similar interfaces. This avoids capturing network + # metrics for host network containers. + - sourceLabels: [__name__, interface] + action: drop + regex: 'container_network_.*;(cali|cilium|cni|lxc|nodelocaldns|tunl).*' + # Drop container spec metrics that overlap with kube-state-metrics. + - sourceLabels: [__name__] + action: drop + regex: 'container_spec.*' + # Drop cgroup metrics with no pod. + - sourceLabels: [id, pod] + action: drop + regex: '.+;' + # - sourceLabels: [__name__, image] + # separator: ; + # regex: container_([a-z_]+); + # replacement: $1 + # action: drop + # - sourceLabels: [__name__] + # separator: ; + # regex: container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s) + # replacement: $1 + # action: drop + + ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion. + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig + ## + probesMetricRelabelings: [] + # - sourceLabels: [__name__, image] + # separator: ; + # regex: container_([a-z_]+); + # replacement: $1 + # action: drop + # - sourceLabels: [__name__] + # separator: ; + # regex: container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s) + # replacement: $1 + # action: drop + + ## RelabelConfigs to apply to samples before scraping + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig + ## + ## metrics_path is required to match upstream rules and charts + cAdvisorRelabelings: + - action: replace + sourceLabels: [__metrics_path__] + targetLabel: metrics_path + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + + ## RelabelConfigs to apply to samples before scraping + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig + ## + probesRelabelings: + - action: replace + sourceLabels: [__metrics_path__] + targetLabel: metrics_path + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + + ## RelabelConfigs to apply to samples before scraping + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig + ## + resourceRelabelings: + - action: replace + sourceLabels: [__metrics_path__] + targetLabel: metrics_path + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + + ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion. + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig + ## + metricRelabelings: + # Reduce bucket cardinality of kubelet storage operations. + - action: drop + sourceLabels: [__name__, le] + regex: (csi_operations|storage_operation_duration)_seconds_bucket;(0.25|2.5|15|25|120|600)(\.0)? + # - sourceLabels: [__name__, image] + # separator: ; + # regex: container_([a-z_]+); + # replacement: $1 + # action: drop + # - sourceLabels: [__name__] + # separator: ; + # regex: container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s) + # replacement: $1 + # action: drop + + ## RelabelConfigs to apply to samples before scraping + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig + ## + ## metrics_path is required to match upstream rules and charts + relabelings: + - action: replace + sourceLabels: [__metrics_path__] + targetLabel: metrics_path + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + + ## Additional labels + ## + additionalLabels: {} + # foo: bar + + ## defines the labels which are transferred from the associated Kubernetes Service object onto the ingested metrics. + ## https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitor + targetLabels: [] + ## Component scraping the kube controller manager ## kubeControllerManager: From f6fc95ce968f98756c510b423f29c8d58194640e Mon Sep 17 00:00:00 2001 From: Sophian Mehboub Date: Mon, 6 Oct 2025 02:33:20 +0200 Subject: [PATCH 2/2] ci: `make generate-examples` --- .../rendered/exporters/kubelet/servicemonitor.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kubelet/servicemonitor.yaml b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kubelet/servicemonitor.yaml index 594a9c2b7d..29b805557b 100644 --- a/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kubelet/servicemonitor.yaml +++ b/charts/opentelemetry-kube-stack/examples/prometheus-otel/rendered/exporters/kubelet/servicemonitor.yaml @@ -12,6 +12,7 @@ metadata: app.kubernetes.io/managed-by: Helm release: "example" spec: + attachMetadata: node: false jobLabel: k8s-app @@ -24,7 +25,7 @@ spec: k8s-app: kubelet endpoints: - port: https-metrics - scheme: https + scheme: https tlsConfig: caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecureSkipVerify: true @@ -48,7 +49,7 @@ spec: interval: 10s honorLabels: true honorTimestamps: true - trackTimestampsStaleness: true + trackTimestampsStaleness: true tlsConfig: caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecureSkipVerify: true @@ -98,7 +99,7 @@ spec: scheme: https path: /metrics/probes honorLabels: true - honorTimestamps: true + honorTimestamps: true tlsConfig: caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecureSkipVerify: true