Files
windows_exporter/contrib/dashboard/README.md
T

14 KiB

Sample dashboards for Windows Exporter

windows-exporter-dashboard.json is a Grafana dashboard for hosts monitored by windows_exporter, with all tabs described below. Each tab is also a shorter dashboard of its own, such as windows-exporter-cpu.json or windows-exporter-fleet.json. It was originally inspired by this dashboard in Chinese and takes several ideas from Grafana's windows-observ-lib.

Requirements

  • Grafana 13 or later with a Prometheus data source. The file uses the v2 dashboard schema, which Grafana needs for tabs.
  • windows_exporter with the default collectors (cpu, logical_disk, memory, net, os, physical_disk, service, system). The SMB, Processes, Scheduled tasks, Updates, GPU, Hyper-V, Failover Cluster and Time tabs, the MSSQL and Hyper-V Cluster dashboards, the TCP and UDP rows of the Network tab and the Drives and Storage Spaces rows of the Disk tab need the smb or smbclient, process, scheduled_task, update, gpu, hyperv, mscluster, time, mssql, tcp, udp, diskdrive and storage_spaces collectors, which are not enabled by default. The sample shows every tab; build the dashboard from the mixin with your collectors to hide the others. The process names in the GPU tab need the process collector. GPU temperature, fan, power and clock panels require WDDM 2.4 or newer and driver support; unsupported sensors are absent.

Import the JSON files through Dashboards > New > Import and pick the Prometheus data source in the Data source variable.

Dashboard File UID
Windows Exporter / Full windows-exporter-dashboard.json windows-exporter-full
Windows Exporter / <tab> windows-exporter-<tab>.json, for example windows-exporter-cpu.json windows-exporter-<tab>, for example windows-exporter-cpu
Windows Exporter / MSSQL windows-exporter-mssql.json windows-exporter-mssql
Windows Exporter / Hyper-V Cluster windows-exporter-hyper-v-cluster.json windows-exporter-hyper-v-cluster

The MSSQL dashboard is not a tab of the full dashboard. The mixin adds it as a tab with separateDashboardTabs: []. The Hyper-V Cluster dashboard has tabs of its own, see Hyper-V Cluster dashboard.

The tab dashboards show only the variables their panels use. The Windows Exporter dropdown in the links of the tab dashboards opens the other imported dashboards and keeps the time range and variables. Before these UIDs, the full dashboard used the UID Kdaassddw; importing the new file creates a second dashboard, so delete the old one afterwards.

Variables

Variable Description
Data source The Prometheus data source to query.
Job One or more scrape jobs.
Hostname Narrows the fleet overview and the instance list to the selected hostnames.
Instance The host shown in all tabs and dashboards except Fleet.
Volume Volumes shown in the Overview and Disk tabs. HarddiskVolume* are hidden.
Network interface Interfaces shown in the Overview and Network tabs.
Process One or more process names shown in the Processes tab, or All.
Top N processes Maximum processes per graph: 5, 10 (default), or 20.
SQL Server instance The SQL Server instance shown in the MSSQL dashboard.
Database One or more databases shown in the Databases row of the MSSQL dashboard.

The Reboots annotation marks each reboot of the selected host on all graphs.

Tabs

Tab Content
Fleet Counts of hosts, hosts down and hosts above the CPU, memory and disk alert thresholds or with stopped automatic services; one row per host with OS version, uptime, CPU, memory, commit charge, C: and fullest volume usage and stopped automatic services; graphs of the 25 highest hosts, including the busiest interface per host.
Overview Summary of the selected host: operating system, uptime, CPUs, memory, commit charge, volumes, disk and network throughput.
CPU Utilization by mode and per core, processor queue length, context switches, interrupts, processes, threads, system calls and the effective CPU frequency.
Memory Used and available physical memory, commit charge, hard page faults, kernel pools and the system cache.
Disk Volume label, disk, file system, size and free space, usage, busy time, throughput, IOPS, latency and queue length; drive model, size, partitions and status; busy time, throughput, IOPS, latency, queue length and split I/O per physical disk, labelled with the drive model when diskdrive is enabled; health, size and usage of Storage Spaces pools and health, size, pool footprint and efficiency of their virtual disks.
Network Throughput, utilization, packets, errors and discards per interface; TCP connection states and rates, segments and retransmissions; UDP datagrams and errors.
SMB Open files, connections, traffic, requests and opened files per share this host serves; traffic, requests, latency, queue length, credit stalls and metadata requests per remote share this host uses.
Services Running, pending and disabled services, automatic services that are not running, and services that started or stopped in the time range.
Processes CPU usage, working set, private bytes, I/O throughput and operations, threads, handles and page faults per process, labelled with name and PID.
Scheduled tasks Task count, running, disabled and never-run tasks, enabled tasks with an unknown result code or missed runs, tasks that ran in the time range, and all tasks with state, last result and missed runs.
Updates Pending updates by severity and category, the oldest pending update, the time since the last Windows Update check, a list of pending updates and the query duration.
GPU Utilization by engine type, memory capacity, commitment and locality, temperature, fans, power, clocks, and top processes by GPU utilization and memory.
Hyper-V VM count and health, Hyper-V WMI health, VM memory share, slow virtual disks, a table of the host's VMs, host CPU time, CPU usage per VM and the busiest VMs, memory per VM, virtual disks and the slowest of them, VHD capacity, virtual switches, VM network adapters and dropped packets per VM.
Failover Cluster Nodes up and not up, failed and offline resource groups, failed resources, cluster networks not up and the quorum type; state, drain status, vote, owned resource groups and build of each node, node state over time and resource groups per node; resource groups and resources that are not online with their owner node; state, role and metric of each cluster network; size, free space and usage of the Cluster Shared Volumes. Every node reports the whole cluster, so any node of a cluster shows it.
Time Time zone, clock sync source, NTP time sources, clock offset and NTP round-trip delay.
MSSQL A separate dashboard for one SQL Server instance: failed mssql sub-collectors, connections, batch requests, compilations, logins, access methods and errors; wait time by wait class, lock waits, average lock wait, deadlocks and lock timeouts; server memory against its target, memory by consumer, page life expectancy, buffer pool I/O and memory grants; size, log usage, transactions, log flushes and log flush write time per database; tempdb free space, the version store and active transactions; send and redo queues and traffic of Always On availability replicas.
Exporter Scrape status and duration, exporter version and uptime, collector status, duration, failures and timeouts, and the exporter's CPU, memory, handles and Go runtime.

Click a hostname in the Fleet tab to open that host in the Overview tab. In the Fleet dashboard, it opens the Overview dashboard.

Hyper-V Cluster dashboard

The Hyper-V Cluster dashboard shows the Hyper-V hosts of one failover cluster. It needs the hyperv and mscluster collectors on all nodes, the memory collector for the memory shares and the storage_spaces collector for the Storage Spaces Direct row. The Cluster variable lists the clusters by the cluster label of the mscluster metrics, and the dashboard shows the instances that report that cluster. If your scrape configuration sets its own cluster target label, Prometheus renames the exporter's label to exported_cluster unless honor_labels is set; the variable then lists your label values instead. Host selects the host of the Host tab and VM the virtual machine of the VM tab, on whichever node runs it.

Tab Content
Overview Nodes up, running VMs, VMs in critical health, virtual processors per logical processor, VM memory as a share of all host memory and of the memory left when the largest host fails, host CPU usage and slow virtual disks; running VMs, vCPU ratio, CPU usage and VM memory share per host; CPU usage, running VMs, VM memory and virtual disk IOPS per host over time.
Cluster The Failover Cluster tab for the selected cluster, without the Cluster Shared Volumes, which are in the Storage tab.
Host The Hyper-V tab for the selected host.
VM The host that runs the VM, virtual processors, assigned memory, RAM in use and committed memory, CPU usage by state and per virtual processor, dynamic memory changes, size, file size and fill of its virtual hard disks, disk IOPS, throughput and latency, and network throughput and dropped packets per adapter.
VM disks Count, size, file size and growth if thick of all virtual hard disks, differencing disks and slow disks; capacity by provisioning type; every disk with its VM, host and type; the slowest, busiest and highest-latency disks.
Storage Size and free space of the Cluster Shared Volumes, also if every dynamic virtual hard disk on them grew to its full size; usage per volume; virtual hard disks per folder below C:\ClusterStorage; health, size and usage of the Storage Spaces pools and health, size, footprint and efficiency of their virtual disks.

Each per-host tab starts with a row of current values, each with a sparkline of the time range behind it. Green, orange and red show health against fixed thresholds; values without a meaningful threshold, like throughput or counts, stay in the text color.

The Processes tab starts with totals for all selected processes: process count, threads, handles, CPU usage across the host, private working set and private bytes. The synthetic Idle process (PID 0) is excluded. Each graph shows at most Top N processes, ranked separately at the end of the time range, with a fixed set of process IDs across the graph. Processes that exited before that point may not appear. I/O graphs combine read, write and other operations per process.

Changing the dashboard

Don't edit the JSON files by hand. They are generated from Jsonnet with grafonnet as part of the windows_exporter mixin:

The generator writes the v2 schema directly, so it needs neither Grafana nor Prometheus. Install mise and Go, then install the pinned tools and regenerate the files in contrib/mixin (use WSL on Windows):

cd contrib/mixin
mise trust
mise install
mise run dashboard

mise run dashboard runs jb install to fetch grafonnet into contrib/mixin/vendor and renders the dashboards. mise run lint fails if the committed JSON files differ from the generated ones. mise run check-dashboards rebuilds them and runs git diff --exit-code, as CI does before the mixin tests. Check new or changed queries in Grafana before you open a pull request, for example by importing the files into a local Grafana 13.

Screenshot of the Fleet tab.

Screenshot of the Overview tab.

Screenshot of the CPU tab.

Screenshot of the Exporter tab.