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 for 2025, 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).