logging { level = "warn" } // ============================================ // Discovery: Kubernetes - endpoints // used by: // - loki kubernetes kube state metrics // ============================================ discovery.kubernetes "kube_endpoints" { role = "endpoints" } // ============================================ // Metrics: Prometheus Remote Write // ============================================ prometheus.remote_write "prometheus_srv" { endpoint { url = sys.env("PROMETHEUS_URL") } external_labels = { cluster = sys.env("CLUSTER_NAME"), zone = sys.env("ZONE"), } } // ============================================ // CoreDNS discovery (ENDPOINTS) // ============================================ discovery.relabel "coredns" { targets = discovery.kubernetes.kube_endpoints.targets rule { source_labels = ["__meta_kubernetes_service_name"] regex = "(kube-dns|coredns)" action = "keep" } rule { regex = ".*_uid$|.*_id$|^annotation_.*|^label_.*|^endpoint_.*|^pod_ip$" action = "drop" } rule { regex = "coredns_cache_.*|coredns_forward_.*" action = "drop" } rule { source_labels = ["__meta_kubernetes_endpoint_node_name"] target_label = "node" } rule { action = "replace" target_label = "__address__" replacement = "$__meta_kubernetes_endpoint_address:9153" } rule { target_label = "cluster" replacement = sys.env("CLUSTER_NAME") } rule { target_label = "zone" replacement = sys.env("ZONE") } } // ============================================ // CoreDNS scrape // ============================================ prometheus.scrape "coredns" { job_name = "integrations/kubernetes/coredns" targets = discovery.relabel.coredns.output scheme = "http" metrics_path = "/metrics" forward_to = [prometheus.remote_write.prometheus_srv.receiver] }