The kube-state-metrics Grafana dashboard ecosystem is rich — Grafana.com hosts dozens of community dashboards built on KSM metrics. This guide covers the best dashboard IDs, how to import them, and how to wire them to your kube-state-metrics data source.
Top kube-state-metrics Dashboard IDs
6417 Nodes · Pods · Overview 8588 Deployments · Rollouts 13646 Storage · PVCs 10257 HPA · Autoscaling 11074 Nodes · Conditions 15759 v2 · Full Stack How to Import a kube-state-metrics Grafana Dashboard
- Open your Grafana instance (
http://<grafana-host>:3000) - Navigate to Dashboards → Import
- Enter the Dashboard ID (e.g., 6417) in the "Import via grafana.com" field
- Click Load
- Select your Prometheus data source from the dropdown
- Click Import
Or import programmatically using the Grafana API:
curl -X POST \
-H "Content-Type: application/json" \
-d '{"dashboard":{"id":6417},"overwrite":true,"inputs":[{"name":"DS_PROMETHEUS","type":"datasource","pluginId":"prometheus","value":"Prometheus"}]}' \
http://admin:admin@localhost:3000/api/dashboards/import Grafana Alloy with kube-state-metrics
If you're using Grafana Alloy (the OpenTelemetry collector that replaced Grafana Agent), configure it to scrape kube-state-metrics with the prometheus.scrape component:
prometheus.scrape "kube_state_metrics" {
targets = [{
__address__ = "kube-state-metrics.monitoring.svc.cluster.local:8080",
}]
honor_labels = true
forward_to = [prometheus.remote_write.default.receiver]
scrape_interval = "30s"
}
prometheus.remote_write "default" {
endpoint {
url = "http://mimir:9009/api/v1/push"
}
} honor_labels = true to preserve the Kubernetes labels (namespace, pod, node) that KSM attaches to each metric. Without this, Alloy overwrites them with scrape job labels.Using kube-prometheus-stack for Built-in Grafana Dashboards
The simplest path to a complete kube-state-metrics Grafana dashboard setup is the kube-prometheus-stack Helm chart, which pre-installs Grafana with 30+ Kubernetes dashboards:
helm install kube-prometheus-stack \
prometheus-community/kube-prometheus-stack \
--namespace monitoring \
--set grafana.enabled=true \
--set grafana.adminPassword=YourSecurePassword After installation, port-forward to Grafana and navigate to the pre-built "Kubernetes / Compute Resources / Cluster" dashboard. These dashboards use kube-state-metrics v2 metric names.
Customising Dashboard Variables
All kube-state-metrics Grafana dashboards use datasource, cluster, and namespace template variables. To add a custom variable that filters by application label (assuming you've enabled metricLabelsAllowlist):
- Open Dashboard Settings → Variables → New
- Type: Query
- Query:
label_values(kube_pod_labels{namespace="$namespace"}, label_app) - Name:
app
kube-state-metrics Grafana Dashboard ID for v2
Dashboard 15759 is specifically designed for kube-state-metrics v2 metric names (which changed from v1 in several areas). If you're on KSM v2.x, prefer this dashboard over older ones that may reference deprecated metric names like kube_deployment_labels (now replaced by kube_deployment_info).