From c288a80bd4cba17345d3c43cbf1688c727bc50ea Mon Sep 17 00:00:00 2001 From: Michel Hollands Date: Wed, 2 Aug 2023 12:05:55 +0100 Subject: [PATCH] Add metrics scraping of cadvisor and kubelet Signed-off-by: Michel Hollands --- .../templates/agent/config.yaml | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/charts/meta-monitoring/templates/agent/config.yaml b/charts/meta-monitoring/templates/agent/config.yaml index 3d87a3e..657ffda 100644 --- a/charts/meta-monitoring/templates/agent/config.yaml +++ b/charts/meta-monitoring/templates/agent/config.yaml @@ -37,6 +37,8 @@ data: } } + // Logs + {{- if or .Values.local.logs.enabled .Values.cloud.logs.enabled }} loki.source.kubernetes "pods" { targets = discovery.relabel.rename_meta_labels.output @@ -58,6 +60,8 @@ data: {{- end }} {{- end }} + // Metrics + {{- if or .Values.local.metrics.enabled .Values.cloud.metrics.enabled }} prometheus.scrape "pods" { targets = discovery.relabel.rename_meta_labels.output @@ -70,8 +74,71 @@ data: forward_to = [ {{ include "agent.prometheus_write_targets" . }} ] } {{- end }} + + // cAdvisor and Kubelete metrics + // Based on https://github.com/Chewie/loutretelecom-manifests/blob/main/manifests/addons/monitoring/config.river + discovery.kubernetes "all_nodes" { + role = "node" + } + + discovery.relabel "all_nodes" { + targets = discovery.kubernetes.all_nodes.targets + rule { + source_labels = ["__meta_kubernetes_node_name"] + target_label = "node" + } + rule { + source_labels = ["__meta_kubernetes_namespace"] + target_label = "namespace" + } + rule { + source_labels = ["__meta_kubernetes_pod_name"] + target_label = "pod" + } + rule { + source_labels = ["__meta_kubernetes_namespace", "__meta_kubernetes_pod_label_app_kubernetes_io_name", "__meta_kubernetes_pod_label_app_kubernetes_io_component"] + separator = "/" + regex = "(.*)/(.*)/(.*)" + replacement = "${1}/${2}-${3}" + target_label = "job" + } + rule { + target_label = "cluster" + replacement = "{{- .Values.clusterName -}}" + } + } + + prometheus.scrape "cadvisor" { + targets = discovery.relabel.all_nodes.output + forward_to = [ {{ include "agent.prometheus_write_targets" . }} ] + + scrape_interval = "15s" + metrics_path = "/metrics/cadvisor" + scheme = "https" + + bearer_token_file = "/var/run/secrets/kubernetes.io/serviceaccount/token" + tls_config { + ca_file = "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" + } + } + + prometheus.scrape "kubelet" { + targets = discovery.relabel.all_nodes.output + forward_to = [ {{ include "agent.prometheus_write_targets" . }} ] + + scrape_interval = "15s" + metrics_path = "/metrics" + scheme = "https" + + bearer_token_file = "/var/run/secrets/kubernetes.io/serviceaccount/token" + tls_config { + ca_file = "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" + } + } {{- end }} + // Traces + {{- if or .Values.local.traces.enabled .Values.cloud.traces.enabled }} // Shamelessly copied from https://github.com/grafana/intro-to-mlt/blob/main/agent/config.river otelcol.receiver.otlp "otlp_receiver" {