// ============================================ // Metrics: Discovery Kubernetes Services // ============================================ // discovery.kubernetes "k8s_services" { // role = "service" // } // ============================================ // Metrics: Kube State Metrics (k8s_services) // ============================================ // prometheus.scrape "kube_state_metrics" { // job_name = "integrations/kubernetes/kube-state-metrics" // targets = discovery.relabel.kube_state_metrics.output // // scheme = "http" // // forward_to = [prometheus.remote_write.prometheus_srv.receiver] // } // ============================================ // API Server discovery // ============================================ // discovery.relabel "apiserver" { // targets = discovery.kubernetes.k8s_services.targets // rule { // source_labels = ["__meta_kubernetes_service_name"] // regex = "kubernetes" // action = "keep" // } // rule { // target_label = "cluster" // replacement = env("CLUSTER_NAME") // } // } // prometheus.scrape "apiserver" { // job_name = "integrations/kubernetes/apiserver" // targets = discovery.relabel.apiserver.output // scheme = "https" // metrics_path = "/metrics" // tls_config { // server_name = "kubernetes" // ca_file = "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" // insecure_skip_verify = true // } // bearer_token_file = "/var/run/secrets/kubernetes.io/serviceaccount/token" // forward_to = [prometheus.remote_write.prometheus_srv.receiver] // } // ============================================ // CoreDNS discovery // ============================================ // discovery.relabel "coredns" { // targets = discovery.kubernetes.k8s_services.targets // // rule { // source_labels = ["__meta_kubernetes_pod_label_k8s_app"] // regex = "kube-dns" // action = "keep" // } // rule { // target_label = "cluster" // replacement = env("CLUSTER_NAME") // } // } // prometheus.scrape "coredns" { // job_name = "integrations/kubernetes/coredns-pods" // targets = discovery.relabel.coredns.output // scheme = "http" // metrics_path = "/metrics" // // forward_to = [prometheus.remote_write.prometheus_srv.receiver] // } // ============================================ // Prometheus: prometheus_srv // ============================================ prometheus.remote_write "prometheus_srv" { endpoint { url = env("PROMETHEUS_URL") } // global labels external_labels = { cluster = env("CLUSTER_NAME"), zone = env("ZONE"), } } // =============================================================================== // prometheus / Metrics - Node exporter // Requirements: // - discovery.relabel - node_exporter // =============================================================================== prometheus.scrape "node_exporter" { job_name = "integrations/kubernetes/node-exporter" targets = discovery.relabel.node_exporter.output scheme = "http" forward_to = [prometheus.remote_write.prometheus_srv.receiver] } discovery.relabel "node_exporter" { targets = discovery.kubernetes.kube_pods.targets rule { source_labels = ["__meta_kubernetes_pod_label_app_kubernetes_io_name"] regex = "node-exporter|prometheus-node-exporter" action = "keep" } rule { source_labels = ["__meta_kubernetes_pod_container_port_number"] regex = "9100" action = "keep" } rule { source_labels = ["__meta_kubernetes_pod_node_name"] target_label = "node" } rule { source_labels = ["__meta_kubernetes_pod_node_name"] target_label = "nodename" } rule { source_labels = ["__meta_kubernetes_pod_node_name"] target_label = "instance" } }