Windows Exporter is a Prometheus exporter designed to collect system metrics from Windows machines, enabling comprehensive monitoring of performance, resource usage, and services.
Key Features:
Collects detailed metrics across various components, including CPU, memory, disk I/O, network interfaces, logical disks, processes, services, and more.
Supports a wide range of collectors for specialized functions, such as Active Directory, DNS Server, IIS, SQL Server, and Windows Update.
Provides flexibility to enable or disable specific collectors based on monitoring needs.
Integrates seamlessly with Prometheus monitoring systems, offering robust performance and reliability.
Can be installed via winget, simplifying setup for users.
Audience & Benefit:
Ideal for DevOps engineers, system administrators, and IT teams managing Windows environments. By providing actionable insights into system health and resource utilization, it helps optimize infrastructure performance, troubleshoot issues proactively, and ensure smooth operation of critical services.
Performance counters installed by the Vmware Guest agent
See the linked documentation on each collector for more information on reported metrics, configuration settings and usage examples.
Filtering enabled collectors
The windows_exporter will expose all metrics from enabled collectors by default. This is the recommended way to collect metrics to avoid errors when comparing metrics of different families.
For advanced use the windows_exporter can be passed an optional list of collectors to filter metrics. The collect[] parameter may be used multiple times. In Prometheus configuration you can use this syntax under the scrape config.
params:
collect[]:
- foo
- bar
This can be useful for having different Prometheus servers collect specific metrics from nodes.
Flags
windows_exporter accepts flags to configure certain behaviours. The ones configuring the global behaviour of the exporter are listed below, while collector-specific ones are documented in the respective collector documentation above.
Flag
Description
Default value
--web.listen-address
host:port for exporter.
:9182
--telemetry.path
URL path for surfacing collected metrics.
/metrics
--collectors.enabled
Comma-separated list of collectors to use. Use [defaults] as a placeholder which gets expanded containing all the collectors enabled by default.
[defaults]
--scrape.timeout-margin
Seconds to subtract from the timeout allowed by the client. Tune to allow for overhead or high loads.
Output file of log messages. One of [stdout, stderr, eventlog, ]NOTE: The MSI installer will add a default argument to the installed service setting this to eventlog
stderr
Installation
The latest release can be downloaded from the releases page.
All binaries and installation packages are signed with an self-signed certificate. The public key can be found here.
Once import into the trusted root certificate store, the binaries and installation packages will be trusted.
Each release provides a .msi installer. The installer will setup the windows_exporter as a Windows service, as well as create an exception in the Windows Firewall.
If the installer is run without any parameters, the exporter will run with default settings for enabled collectors, ports, etc.
The installer provides a configuration file to customize the exporter.
The configuration file
is located in the same directory as the exporter executable.
has the YAML format and is provided with the --config.file parameter.
can be used to enable or disable collectors, set collector-specific parameters, and set global parameters.
The following parameters are available:
Name
Description
ENABLED_COLLECTORS
As the --collectors.enabled flag, provide a comma-separated list of enabled collectors
CONFIG_FILE
Use the --config.file flag to specify a config file. If empty, no config file will be set. The special value config.yaml set the path to the config.yaml at install dir
LISTEN_ADDR
The IP address to bind to. Defaults to an empty string. (any local address)
LISTEN_PORT
The port to bind to. Defaults to 9182.
METRICS_PATH
The path at which to serve metrics. Defaults to /metrics
TEXTFILE_DIRS
Use the --collector.textfile.directories flag to specify one or more directories, separated by commas, where the collector should read text files containing metrics
REMOTE_ADDR
Allows setting comma separated remote IP addresses for the Windows Firewall exception (allow list). Defaults to an empty string (any remote address).
EXTRA_FLAGS
Allows passing full CLI flags. Defaults to an empty string. For --collectors.enabled and --config.file, use the specialized properties ENABLED_COLLECTORS and CONFIG_FILE
ADDLOCAL
Enables features within the windows_exporter installer. Supported values: FirewallException
REMOVE
Disables features within the windows_exporter installer. Supported values: FirewallException
APPLICATIONFOLDER
Directory to install windows_exporter. Defaults to C:\Program Files\windows_exporter
> [!NOTE]
> The installer properties are always preferred over the values defined in the config file. If you prefer to configure via the config file, avoid using any of the properties listed above.
Parameters are sent to the installer via msiexec.
On PowerShell, the --% should be passed before defining properties.
This enables the additional process and container collectors on top of the defaults.
Using a configuration file
YAML configuration files can be specified with the --config.file flag. e.g. .\windows_exporter.exe --config.file=config.yml. If you are using the absolute path, make sure to quote the path, e.g. .\windows_exporter.exe --config.file="C:\Program Files\windows_exporter\config.yml"