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?
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?
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/main/docs/metrics/workload/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)
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.
As of the latest updates in Prometheus monitoring for Kubernetes, the metric you might be looking for to count the number of running pods on each node is kubelet_running_pods
. This metric is exposed by the Kubelet’s Prometheus endpoint and gives a real-time count of pods that are actively running on each node.
This metric is more useful for operational purposes like monitoring and alerting on pod capacity and usage in real-time. To fetch the number of running pods using the kubelet_running_pods metric, you can use a simple Prometheus query like: sum(kubelet_running_pods) by (node)
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'
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. –
Gymnastics © 2022 - 2024 — McMap. All rights reserved.