9

I am scraping the kubernetes metrics from prometheus and would need to extract the number of running pods.

I can see container_last_seen metrics but how should i get no of pods running. Can someone help on this?

Clorichel
  • 1,940
  • 1
  • 13
  • 24
MAG
  • 121
  • 1
  • 1
  • 6
  • I'm sorry but I do not understand what do You mean. What does "no" mean in this sentence "How to get no of pods running in prometheus"? – Crou Dec 03 '18 at 16:18
  • I would assume that you need to scrape the number of pods in each namespace and then add all these numbers together? – M.ike Dec 03 '18 at 17:43
  • Yes i need to export number of pods running . – MAG Dec 04 '18 at 11:08

3 Answers3

24

If you need to get number of running pods, you can use a metric from the list of pods metrics https://github.com/kubernetes/kube-state-metrics/blob/master/docs/pod-metrics.md for that (To get the info purely on pods, it'd make sens to use pod-specific metrics). For example if you need to get the number of pods per namespace, it'll be: count(kube_pod_info{namespace="$namespace_name"}) by (namespace) To get the number of all pods running on the cluster, then just do: count(kube_pod_info)

Anna Slastnikova
  • 1,260
  • 9
  • 9
7

Assuming you want to display that in Grafana according to your question tags, from this Kubernetes App Metrics dashboard for example:

count(count(container_memory_usage_bytes{container_name="$container", namespace="$namespace"}) by (pod_name))

You can just import the dashboard and play with the queries.

Depending on your configuration/deployment, you can adjust the variables container_name and namespace, grouping by (pod_name) and count'ing it does the trick. Some other label than pod_name can be used as long as it's shared between the pods you want to count.

Clorichel
  • 1,940
  • 1
  • 13
  • 24
  • Thanks , i saw this but it is lil bit confusing about the https://github.com/prometheus/prometheus/blob/master/documentation/examples/prometheus-kubernetes.yml . My kubernetes and prometheus are on different server. – MAG Dec 04 '18 at 11:39
0

If you want to see only the number of "deployed" pods in some namespace, you can use the solutions in previous answers.

My use case was to see the current running pods in some namespace and below is my solution:

'min_over_time(sum(group(kube_pod_container_status_ready{namespace="BC_NAME"}) by (pod,uid)) [5m:1m]) OR on() vector(0)'

Please replace BC_NAME with your namespace name. The timespan provides you fine the data.

If no data found - no pod currently running it returns '0'

Yuriy
  • 69
  • 2
  • This doesn't work for me. I have one pod in the `kube_pod_container_status_ready{}` result, which I re-deployed, then the result of this query is 2, not 1, because two pods have been ready at any point within the query. I would expect this query to give the number of current running pods (1), not 2. – OscarVanL Aug 12 '22 at 15:45