This documentation is intended to be a complete reflection of the current state of the exposed metrics of kube-state-metrics.
Any contribution to improving this documentation or adding sample usages will be appreciated.
Stages about metrics are grouped into three categories:
Stage | Description |
---|---|
EXPERIMENTAL | Metrics which normally correspond to the Kubernetes API object alpha status or spec fields and can be changed at any time. |
STABLE | Metrics which should have very few backwards-incompatible changes outside of major version updates. |
DEPRECATED | Metrics which will be removed once the deprecation timeline is met. |
Per group of metrics there is one file for each metrics. See each file for specific documentation about the exposed metrics:
- CertificateSigningRequest Metrics
- ConfigMap Metrics
- CronJob Metrics
- DaemonSet Metrics
- Deployment Metrics
- Endpoint Metrics
- Horizontal Pod Autoscaler Metrics
- Ingress Metrics
- Job Metrics
- Lease Metrics
- LimitRange Metrics
- MutatingWebhookConfiguration Metrics
- Namespace Metrics
- NetworkPolicy Metrics
- Node Metrics
- PersistentVolume Metrics
- PersistentVolumeClaim Metrics
- Pod Disruption Budget Metrics
- Pod Metrics
- ReplicaSet Metrics
- ReplicationController Metrics
- ResourceQuota Metrics
- Secret Metrics
- Service Metrics
- StatefulSet Metrics
- StorageClass Metrics
- ValidatingWebhookConfiguration Metrics
- VerticalPodAutoscaler Metrics
- VolumeAttachment Metrics
When an additional, not provided by default label is needed, a Prometheus matching operator can be used to extend single metrics output.
This example adds label_release
to the set of default labels of the kube_pod_status_ready
metric
and allows you select or group the metrics by Helm release label:
kube_pod_status_ready * on (namespace, pod) group_left(label_release) kube_pod_labels
Another useful example would be to query the memory usage of pods by its phase
, such as Running
:
sum(kube_pod_container_resource_requests{resource="memory"}) by (namespace, pod, node)
* on (namespace, pod) group_left() (sum(kube_pod_status_phase{phase="Running"}) by (pod, namespace) == 1)
Additionally, options for kube-state-metrics
can be passed when executing as a CLI, or in a kubernetes / openshift environment. More information can be found here: CLI Arguments