Prometheus only scrapes one pod Prometheus only scrapes one pod kubernetes kubernetes

Prometheus only scrapes one pod


Instead of using a static_config that scrapes just one host, try using kubernetes_sd_configs Kubernetes Service Discovery as provided by Prometheus.Your config file would look something like this:

- job_name: 'kubernetes-pods'  kubernetes_sd_configs:  - role: pod  relabel_configs:  # only scrape when annotation prometheus.io/scrape: 'true' is set  - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]    action: keep    regex: true  - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]    action: replace    target_label: __metrics_path__    regex: (.+)  - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]    action: replace    regex: (.+):(?:\d+);(\d+)    replacement: ${1}:${2}    target_label: __address__  - action: labelmap    regex: __meta_kubernetes_pod_label_(.+)  - source_labels: [__meta_kubernetes_namespace]    action: replace    target_label: kubernetes_namespace  - source_labels: [__meta_kubernetes_pod_name]    action: replace    target_label: kubernetes_pod_name

and then add the annotation to your Kubernetes Deployment yaml config like this:

kind: Deployment...spec:  template:    metadata:      annotations:        prometheus.io/scrape: "true"        prometheus.io/port: "<< PORT OF YOUR CONTAINER >>"

You can see a full working example here.


add prometheus annotations to your service, since prom will only scrape a service that:

  • Exposes the exporter port
  • Has a prometheus.io/scrape: "true" annotation
  • Has a prometheus.io/port: "<exporter_port_here>" annotation

here is an official example

the scraped pod is probably prometheus itself