Upgrade Guide
https://github.com/prometheus-community/windows_exporter/blob/main/UPGRADE.md
What's Changed
💥 Breaking Changes
- filetime: replace collector with file by @jkroepke in #2244
- hyperv: fix virtual_storage_device_throughput metric to be a counter (not gauge) with _total suffix by @Dominik-esb in #2285
- process: report owner label as DOMAIN\user by @jkroepke in #2515
- fix: collectors Close leaks, recover goroutine panics, validate sub-collectors by @jkroepke in #2547
- container: read Kubernetes metadata from the CRI API by @jkroepke in #2557
- gpu: make device discovery non-fatal and refresh it on unknown LUIDs by @jkroepke in #2573
- process: read processes from the kernel instead of perflib by @jkroepke in #2644
- httphandler: remove /version endpoint by @jkroepke in #2660
- collector: remove deprecated thermalzone collector by @jkroepke in #2659
✨ Exciting New Features
- pdh: added logging, if PDH CStatus is not valid by @jkroepke in #2203
- os: include installation type in Windows version retrieval by @jkroepke in #2217
- thermalzone: deprecate collector by @jkroepke in #2201
- netframework: add process_id label to clrmemory by @johanot in #2242
- file: add file collector to scrape file size and file modify time which can replace filetime collector by @xie-shujian in #2205
- os: add system installation date to metrics by @Dominik-esb in #2284
- mscluster: add shared volumes collector and update documentation by @Dominik-esb in #2301
- mscluster: Add virtual disk metrics sub-collector by @Dominik-esb in #2296
- process: Use Process collect V1 by default, since V2 is buggy. by @jkroepke in #2368
- file: fix collector producing no metrics, startup hang, and duplicate metric errors by @Dominik-esb in #2371
- service: Add parameter to filer service by start mode by @jkroepke in #2405
- mscluster: use AllocatedSize for virtual disk storage efficiency by @Dominik-esb in #2432
- registry: new collector for generating metrics from Windows registry entries by @dluxem in #2428
- mscluster: add storagepool metrics by @Dominik-esb in #2491
- hyperv: add host sub-collector for CPU allocation ratio by @Dominik-esb in #2493
- hyperv: add WMI health metric by @Dominik-esb in #2494
- dmi: add dmi_info metric via GetSystemFirmwareTable by @elmarco in #2500
- feat: log build and account before initializing collectors by @jkroepke in #2514
- wmi: add generic wmi collector by @jkroepke in #2530
- scheduled_task: expose result statuses and deprecate last_result by @jkroepke in #2532
- mi: use generic methods for Query, QueryUnmarshal and Unmarshal by @jkroepke in #2518
- hyperv: add Hyper-V Replica VM metrics by @jkroepke in #2538
- pdh: make Collector generic over its row type by @jkroepke in #2536
- ole: replace go-ole with native COM bindings by @jkroepke in #2551
- contrib: add Windows exporter monitoring mixin by @jkroepke in #2558
- collector: add pprof labels to build and collection by @jkroepke in #2562
- pdh/registry: reuse the raw data buffer across Collect calls by @jkroepke in #2567
- httphandler: expose Go scheduler metrics by @jkroepke in #2561
- container: add start time, process count and page fault metrics by @jkroepke in #2566
- dashboard: rework sample dashboard into one tabbed dashboard by @jkroepke in #2556
- contrib: expand Windows mixin rules and publish runbooks by @jkroepke in #2575
- gpu: add vendor-neutral sensor metrics from dxgkrnl by @jkroepke in #2571
- pdh/registry: decode performance data without per-counter allocations by @jkroepke in #2572
- container: collect Hyper-V isolated containers from CRI stats by @jkroepke in #2568
- printer: read printers and jobs from the spooler API by @jkroepke in #2577
- textfile: use stable fallback HELP strings by @jkroepke in #2591
- dashboard: add TCP/UDP and GPU metrics with panel descriptions by @jkroepke in #2576
- dashboard: use counters for disk queue length and VHD latency by @jkroepke in #2582
- scheduled_task: read only published task properties by @jkroepke in #2613
- terminal_services: detect Connection Broker via service control manager by @jkroepke in #2628
- dashboard: add process metrics with bounded graphs and summaries by @jkroepke in #2631
- process: read the IIS application pool from the w3wp command line by @jkroepke in #2638
- dashboard: add stat rows, sections, new tabs and collector selection by @jkroepke in #2647
- dashboard: add fleet counters, C: usage and busiest interface by @jkroepke in #2651
- pdh: keep decoded instance names between samples by @jkroepke in #2645
- storage_spaces: move storage pool and virtual disk metrics out of mscluster by @jkroepke in #2646
- pdh: reuse the row maps between samples by @jkroepke in #2654
- storage_spaces: add primordial label to pool info by @jkroepke in #2650
🐞 Bug Fixes
- installer: remove repair option by @jkroepke in #2243
- collector: fix race condition in Build() by @OverOrion in #2250
- gpu: skip Microsoft Basic Render Driver metrics by @jkroepke in #2275
- os: rename install_time_timestamp to install_time_timestamp_seconds by @Dominik-esb in #2315
- mscluster: rename
windows_hyperv_hypervisor_virtual_processor_time_total->windows_hyperv_hypervisor_virtual_processor_mode_time_totalby @Dominik-esb in #2322 - gpu: skip Microsoft Basic Render Driver metrics by @jkroepke in #2341
- pdh/registry: fix panic when T is a struct type by @kondracek-nr in #2366
- mi: make timeout configurable for build functions by @jkroepke in #2377
- container: fix deserialize HNS response in GetHNSEndpointStats by @slabbancz in #2379
- fix: use lastest go-ole package to prevent crashes on arm64 by @jkroepke in #2431
- pdh: prevent registry deadlocks via exponential buffer growth by @HarshalPatel1972 in #2438
- exchange: export LDAP average-timer denominator counters for ADAccess metrics by @jkroepke with @Copilot in #2474
- hyperv: fix dynamic_memory_vm sub-collector failing on Server 2019 due to missing Guest Available Memory counter by @jkroepke with @Copilot in #2480
- logical_disk: fix BitLocker shell property handling by @jkroepke in #2482
- mi: add support for uint16 array (UINT16A) properties by @Dominik-esb in #2490
- iis: fix collector panic on application pool names containing '#' by @jkroepke with @Copilot in #2473
- fix: log startup errors to the event log when running as a service by @jkroepke in #2506
- performancecounter: fix explicit instance lists and startup panics on invalid config by @jkroepke in #2511
- fix: registry, update, file duplicate series, config key and error reporting by @jkroepke in #2509
- pdh: fix heap corruption from undersized counter array buffer by @jkroepke in #2513
- mi: fix NewInterval inflating durations of 60s or more by @jkroepke in #2516
- mi: correctness fixes for unmarshal, resource leak, and test robustness by @elmarco in #2501
- mi: validate unmarshal target before querying and unit-test setField by @jkroepke in #2520
- logical_disk: read BitLocker status through fveapi.dll by @jkroepke in #2533
- mi: fix flaky Test_MI_FD_Leak by @jkroepke in #2535
- hyperv: fix Replica VM PDH collector type by @jkroepke in #2545
- hyperv: close PDH queries of sub-collectors on Close by @jkroepke in #2539
- config: accept collectors.disabled and validate custom collector blocks by @jkroepke in #2540
- fix: activate COM classes by CLSID instead of ProgID by @safster123 in #2546
- collector: serialize collector runs and harden the scrape lifecycle by @jkroepke in #2541
- installer: only kill the exporter process of this installation by @jkroepke in #2542
- registry: return errors instead of panicking on perflib data by @jkroepke in #2549
- pdh: per-counter metric types, no zero for invalid samples, worker panics by @jkroepke in #2543
- fix: reject unknown process priorities and trap SIGTERM instead of os.Kill by @jkroepke in #2548
- mi: fix native return-value handling by @jkroepke in #2537
- fix: strict flag values, MI NULL properties and container without HCS by @jkroepke in #2553
- container: fix hostprocess memory metrics and containerd bundle handling by @jkroepke in #2555
- container: synchronize CRI pipe shutdown by @jkroepke in #2560
- pdh: preserve duplicate counter instances by @jkroepke in #2564
- printer: bound the Win32_Printer query by the scrape timeout by @jkroepke in #2569
- collector: preserve failures in joined collection errors by @jkroepke in #2574
- logical_disk: deprecate cumulative avg_*_requests_queued gauges by @jkroepke in #2563
- hyperv: deprecate cumulative virtual storage device latency gauges by @jkroepke in #2565
- pdh: preserve legitimate instances ending in _Total by @jkroepke in #2588
- textfile: report duplicates and preserve valid metrics by @jkroepke in #2590
- collector: make filtered views non-owning by @jkroepke in #2587
- mssql: correct latency and request-count units by @jkroepke in #2596
- iis: correct cache counter mappings and occupancy types by @jkroepke in #2594
- collector: release HCS result documents on operation failure by @jkroepke in #2600
- container: query the actual private working set by @jkroepke in #2585
- logical_disk: safely enumerate all volume mount paths by @jkroepke in #2584
- process: wait for workers during shutdown by @jkroepke in #2586
- docs: use the emitted textfile error signal by @jkroepke in #2592
- cmd: honor zero as an unlimited memory setting by @jkroepke in #2598
- collector: preserve fatal causes in joined build errors by @jkroepke in #2599
- collector: release caller-owned MI destination options by @jkroepke in #2601
- cache: emit copy-read hit totals as counters by @jkroepke in #2602
- cache: expose cumulative data-map hits as a counter by @jkroepke in #2597
- dhcp: query the distinct non-match denial counter by @jkroepke in #2593
- iis: keep partial collector cleanup safe by @jkroepke in #2605
- collector: reconcile advertised metric contracts by @jkroepke in #2604
- mixin: lint dashboards and migrate CI tasks to mise by @jkroepke in #2608
- pdh: add slack to counter array buffers for Windows Server 2012 R2 by @alexandrepossebom in #2630
- fix(cpu_info,diskdrive): stop probing WMI during Build by @jkroepke in #2648
- mi: fix MI_Result values, session close order and native type widths by @jkroepke in #2649
- hyperv: label unnamed dynamic memory VMs as (unknown) by @jkroepke in #2653
- collector: bound MI probe queries in Build with a timeout by @jkroepke in #2657
- collector: publish documented counter types for udp and hyperv metrics by @jkroepke in #2661
🛠️ Dependencies
- chore(deps): update module go.yaml.in/yaml/v2 to v2.4.3 by @renovate[bot] in #2208
- chore(deps): update module google.golang.org/protobuf to v1.36.9 by @renovate[bot] in #2209
- chore(deps): update actions/checkout action to v4.3.0 by @renovate[bot] in #2211
- fix(deps): update module github.com/prometheus/exporter-toolkit to v0.14.1 by @renovate[bot] in #2210
- fix(deps): update golang.org/x/ by @renovate[bot] in #2214
- chore(deps): update github actions (major) by @renovate[bot] in #2215
- chore(deps): update github actions by @renovate[bot] in #2224
- chore(deps): update module google.golang.org/protobuf to v1.36.10 by @renovate[bot] in #2223
- chore(deps): update dependency golangci/golangci-lint to v2.5.0 by @renovate[bot] in #2220
- fix(deps): update golang.org/x/ by @renovate[bot] in #2227
- fix(deps): update module github.com/prometheus/common to v0.67.1 by @renovate[bot] in #2228
- fix(deps): update module github.com/prometheus/exporter-toolkit to v0.15.0 by @renovate[bot] in #2239
- chore(deps): update module github.com/prometheus/procfs to v0.18.0 by @renovate[bot] in #2238
- fix(deps): update module github.com/prometheus/common to v0.67.2 by @renovate[bot] in #2245
- chore(deps): update module golang.org/x/time to v0.14.0 by @renovate[bot] in #2248
- chore(deps): update github actions (major) by @renovate[bot] in #2249
- chore(deps): update module github.com/prometheus/procfs to v0.19.2 by @renovate[bot] in #2247
- chore(deps): update dependency golangci/golangci-lint to v2.6.0 by @renovate[bot] in #2246
- chore(deps): update dependency golangci/golangci-lint to v2.6.1 by @renovate[bot] in #2252
- chore(deps): update docker/metadata-action action to v5.9.0 by @renovate[bot] in #2253
- chore(deps): update github actions by @renovate[bot] in #2260
- chore(deps): update dependency golangci/golangci-lint to v2.6.2 by @renovate[bot] in #2259
- chore(deps): update module golang.org/x/crypto to v0.45.0 [security] by @renovate[bot] in #2257
- fix(deps): update module github.com/prometheus/common to v0.67.4 by @renovate[bot] in #2261
- chore(deps): update module golang.org/x/oauth2 to v0.33.0 by @renovate[bot] in #2262
- chore(deps): update github actions (major) by @renovate[bot] in #2265
- chore(deps): update docker/metadata-action action to v5.10.0 by @renovate[bot] in #2264
- chore(deps): update github actions by @renovate[bot] in #2268
- chore(deps): update dependency golangci/golangci-lint to v2.7.1 by @renovate[bot] in #2269
- chore(deps): update dependency golangci/golangci-lint to v2.7.2 by @renovate[bot] in #2272
- chore(deps): update module google.golang.org/protobuf to v1.36.11 by @renovate[bot] in #2273
- fix(deps): update golang.org/x/ by @renovate[bot] in #2277
- chore(deps): update docker/setup-buildx-action action to v3.12.0 by @renovate[bot] in #2276
- Synchronize common files from prometheus/prometheus by @prombot in #2278
- chore(deps): update github actions (major) by @renovate[bot] in #2289
- fix(deps): update module github.com/prometheus/common to v0.67.5 by @renovate[bot] in #2294
- fix(deps): update module github.com/prometheus/exporter-toolkit to v0.15.1 by @renovate[bot] in #2295
- fix(deps): update module github.com/bmatcuk/doublestar/v4 to v4.9.2 by @renovate[bot] in #2297
- chore(deps): update actions/setup-go action to v6.2.0 by @renovate[bot] in #2298
- chore(deps): update github actions by @renovate[bot] in #2307
- chore(deps): update module github.com/golang-jwt/jwt/v5 to v5.3.1 - autoclosed by @renovate[bot] in #2308
- chore(deps): update module github.com/coreos/go-systemd/v22 to v22.7.0 by @renovate[bot] in #2310
- fix(deps): update module github.com/bmatcuk/doublestar/v4 to v4.10.0 by @renovate[bot] in #2312
- fix(deps): update golang.org/x/ by @renovate[bot] in #2311
- fix(deps): update golang.org/x/ by @renovate[bot] in #2321
- chore(deps): update docker/build-push-action action to v6.19.2 by @renovate[bot] in #2320
- chore(deps): update actions/stale action to v10.2.0 by @renovate[bot] in #2323
- chore(deps): update module github.com/prometheus/procfs to v0.20.0 by @renovate[bot] in #2330
- chore(deps): update actions/setup-go action to v6.3.0 by @renovate[bot] in #2329
- chore(deps): update module github.com/prometheus/procfs to v0.20.1 by @renovate[bot] in #2331
- chore(deps): update module golang.org/x/net to v0.51.0 by @renovate[bot] in #2334
- chore(deps): update github actions (major) by @renovate[bot] in #2335
- chore(deps): update dependency golangci/golangci-lint to v2.11.3 by @renovate[bot] in #2309
- fix(deps): update golang.org/x/ by @renovate[bot] in #2337
- chore(deps): update actions/download-artifact action to v8.0.1 by @renovate[bot] in #2332
- chore(deps): update module go.yaml.in/yaml/v2 to v2.4.4 by @renovate[bot] in #2338
- chore: update Go version to 1.26.0 by @jkroepke in #2342
- chore(deps): update golang.org/x/ (master) by @renovate[bot] in #2344
- chore(deps): pin dependencies (master) by @renovate[bot] in #2372
- chore(deps): update github actions (master) by @renovate[bot] in #2382
- chore(deps): update module github.com/mdlayher/socket to v0.6.0 (master) by @renovate[bot] in #2383
- fix(deps): update golang.org/x/ (master) by @renovate[bot] in #2388
- chore(deps): update actions/upload-artifact action to v7.0.1 (master) by @renovate[bot] in #2387
- fix(deps): update module github.com/prometheus/exporter-toolkit to v0.16.0 (master) by @renovate[bot] in #2389
- chore(deps): update github actions (master) by @renovate[bot] in #2394
- fix(deps): update golang.org/x/ (master) by @renovate[bot] in #2399
- chore(deps): update github actions (master) by @renovate[bot] in #2406
- fix(deps): update golang.org/x/ (master) - autoclosed by @renovate[bot] in #2407
- chore(deps): update module github.com/mdlayher/socket to v0.6.1 (master) by @renovate[bot] in #2411
- chore(deps): update module github.com/mdlayher/vsock to v1.3.0 (master) by @renovate[bot] in #2412
- fix(deps): update module github.com/prometheus/common to v0.68.1 (master) by @renovate[bot] in #2419
- chore(deps): update github actions (master) by @renovate[bot] in #2418
- fix(deps): update golang.org/x/ (master) by @renovate[bot] in #2424
- fix(deps): update module github.com/prometheus/common to v0.69.0 (master) by @renovate[bot] in #2425
- chore(deps): update github actions to v7 (master) by @renovate[bot] in #2427
- chore(deps): update github actions to 3abb875 (master) by @renovate[bot] in #2426
- chore(deps): update actions/setup-go action to v6.5.0 (master) by @renovate[bot] in #2434
- chore(deps): update module github.com/prometheus/procfs to v0.21.1 (master) by @renovate[bot] in #2441
- chore(deps): update github actions (master) by @renovate[bot] in #2440
- fix(deps): update golang.org/x/ (master) by @renovate[bot] in #2445
- chore(deps): update github actions (master) by @renovate[bot] in #2444
- fix(deps): update module github.com/prometheus/common to v0.70.1 (master) by @renovate[bot] in #2451
- chore(deps): update actions/setup-go action to v7 (master) by @renovate[bot] in #2453
- fix(deps): update module github.com/prometheus/exporter-toolkit to v0.17.1 (master) by @renovate[bot] in #2452
- chore(deps): update github actions (master) by @renovate[bot] in #2449
- fix(deps): update module github.com/prometheus/client_golang to v1.24.1 (master) by @renovate[bot] in #2450
- chore(deps): update docker/login-action action to v4.5.1 (master) by @renovate[bot] in #2463
- fix(deps): update module go.yaml.in/yaml/v3 to v3.0.5 (master) by @renovate[bot] in #2466
- chore(deps): update actions/stale action to v11 (master) by @renovate[bot] in #2468
- chore(deps): update docker/login-action action to v4.6.0 (master) by @renovate[bot] in #2467
- chore(deps): update module google.golang.org/protobuf to v1.36.12 (master) by @renovate[bot] in #2476
- chore(deps): update golang.org/x/ (master) by @renovate[bot] in #2479
- chore(deps): update dependency golangci/golangci-lint to v2.13.1 (master) by @renovate[bot] in #2477
- chore(deps): update github actions (master) by @renovate[bot] in #2478
- chore(deps): update dependency golangci/golangci-lint to v2.13.2 (master) by @renovate[bot] in #2483
- fix(deps): update module github.com/prometheus/client_model to v0.6.3 (master) by @renovate[bot] in #2486
- chore(deps): update github actions (master) by @renovate[bot] in #2485
- chore(deps): update module github.com/prometheus/procfs to v0.22.0 (master) by @renovate[bot] in #2487
- chore(deps): update module golang.org/x/crypto to v0.56.0 (master) by @renovate[bot] in #2488
- fix(deps): update module github.com/bmatcuk/doublestar/v4 to v4.10.2 (master) by @renovate[bot] in #2497
- fix(deps): update module github.com/stretchr/testify to v1.12.1 (main) by @renovate[bot] in #2527
- chore(deps): update go module directive to v1.27.1 (main) by @renovate[bot] in #2521
- chore(deps): update module github.com/mdlayher/socket to v0.7.0 (main) by @renovate[bot] in #2522
- fix(deps): update golang.org/x (main) by @renovate[bot] in #2524
- fix(deps): update module github.com/prometheus/exporter-toolkit to v0.20.0 (main) by @renovate[bot] in #2526
- fix(deps): update module github.com/prometheus/common to v0.72.0 (main) by @renovate[bot] in #2525
- chore(deps): update module github.com/xhit/go-str2duration/v2 to v2.2.0 (main) by @renovate[bot] in #2523
- chore(deps): update dependency goreleaser/goreleaser to v2.18.3 (main) by @renovate[bot] in #2579
- chore(deps): update module golang.org/x/net to v0.60.0 (main) by @renovate[bot] in #2581
- fix(deps): update module github.com/prometheus/client_golang to v1.25.0 (main) by @renovate[bot] in #2610
- fix(deps): update golang.org/x (main) by @renovate[bot] in #2616
📖 Documentation
- docs: Fix collector flag names in documentation by @jkroepke in #2225
- docs: Fix metric name for Windows Disk Alerts by @buckleyGI in #2254
- cpu: add example query for Task Manager-style CPU utilization by @Dominik-esb in #2286
- docs: add alerting examples for CPU and CSV by @Dominik-esb in #2317
- docs: add missing flags in service collector documentation by @veso0308 in #2318
- docs: improve file collector docs with pattern cardinality guidance and query examples by @Dominik-esb in #2381
- docs: fix wrong os collector info (issue #2414) by @andrechalella in #2415
- docs: Update README to clarify installer behavior wrt firewall by @andrechalella in #2417
- docs: add textfile freshness examples by @noqt in #2495
- docs: fix collector flag names and process counter-version default by @jkroepke in #2508
- docs: add shared agent instructions and Claude guidance by @jkroepke in #2603
- dashboard: add Storage Spaces row to the Disk tab by @jkroepke in #2655
- docs: add an upgrade guide from 0.31 to 0.32 by @jkroepke in #2554
Other Changes
- Synchronize common files from prometheus/prometheus by @prombot in #2212
- Update renovate.json by @jkroepke in #2213
- Synchronize common files from prometheus/prometheus by @prombot in #2218
- Update renovate.json by @jkroepke in #2219
- Update documentation for collector update flags by @jkroepke in #2235
- fix(deps): update package name for go-yaml/yaml in renovate.json by @jkroepke in #2362
- fix renovate.json by @jkroepke in #2375
- Synchronize common files from prometheus/prometheus by @prombot in #2384
- Fix axisLabel spacing in dashboard JSON by @jkroepke in #2460
- Remove Go Report Card badge by @jkroepke in #2502
- Update CI badge in README.md by @jkroepke in #2531
- chore: Add configuration for Go dependencies compatibility by @jkroepke in #2629
New Contributors
- @johanot made their first contribution in #2242
- @xie-shujian made their first contribution in #2205
- @OverOrion made their first contribution in #2250
- @buckleyGI made their first contribution in #2254
- @Dominik-esb made their first contribution in #2284
- @corporate-gadfly made their first contribution in #2255
- @veso0308 made their first contribution in #2318
- @kondracek-nr made their first contribution in #2366
- @slabbancz made their first contribution in #2379
- @andrechalella made their first contribution in #2415
- @HarshalPatel1972 made their first contribution in #2438
- @kgujral2612 made their first contribution in #2442
- @jkroepke with @Copilot made their first contribution in #2474
- @dluxem made their first contribution in #2428
- @noqt made their first contribution in #2495
- @elmarco made their first contribution in #2500
- @safster123 made their first contribution in #2546
Full Changelog: v0.31.3...v0.32.0-beta.1