prometheus.exporter.windows
The prometheus.exporter.windows component embeds the windows_exporter which exposes a wide variety of hardware and OS metrics for Windows-based systems.
The windows_exporter itself comprises various collectors, which you can enable and disable as needed.
For more information on collectors, refer to the collectors-list section.
Note
The
blacklistandwhitelistconfiguration arguments are deprecated but remain available for backwards compatibility. Use theincludeandexcludearguments instead.
Note
We do not recommend using this exporter with clustering enabled.
The default
instancelabel set by this exporter is the hostname of the machine running Alloy. Alloy clustering uses consistent hashing to distribute targets across the instances. This requires the discovered targets to be the same and have the same labels across all cluster instances.If you do need to use this component in a cluster, use a dedicated
prometheus.scrapecomponent that’s used to scrape this exporter and doesn’t have clustering enabled. Alternatively, usediscovery.relabelto set theinstancelabel to a value that is the same across all cluster instances.
Usage
prometheus.exporter.windows "<LABEL>" {
}Arguments
You can use the following arguments with prometheus.exporter.windows:
enabled_collectors defines a hand-picked list of collectors to enable by default.
If you set this argument, the component disables any collectors not in the list.
Refer to the Collectors list for the default set.
Caution
To use any of the configuration blocks below, you must add the corresponding collector name to the
enabled_collectorslist. For example, to use thednsblock, you must include"dns"in yourenabled_collectorslist. A block has no effect unless you enable its collector.
Blocks
You can use the following blocks with prometheus.exporter.windows.
Each block only takes effect if you include its corresponding collector in enabled_collectors.
Caution
The
text_fileblock is deprecated as of Alloy v1.11.0. Use thetextfileblock to configure thetextfilecollector.
Note
The
msmqblock is deprecated as of Alloy v1.9.0. You can still include this block in your configuration files, but it has no effect.
dfsr
dns
exchange
filetime
iis
The component wraps user-supplied app_exclude, app_include, site_exclude, and site_include strings in a regular expression.
logical_disk
The collectors specified by enabled_list can include the following:
metricsbitlocker_status
The component includes volume names that match the regular expression specified by include and don’t match the regular expression specified by exclude.
The component wraps user-supplied exclude and include strings in a regular expression.
mscluster
The collectors specified by enabled_list can include the following:
clusternetworknoderesourceresourcegroup
For example, you can set enabled_list to ["cluster"].
mssql
net
The collectors specified by enabled_list can include the following:
metricsnic_info
The component includes NIC names that match the regular expression specified by include and don’t match the regular expression specified by exclude.
The component wraps user-supplied exclude and include strings in a regular expression.
network
The component includes NIC names that match the regular expression specified by include and don’t match the regular expression specified by exclude.
The component wraps user-supplied exclude and include strings in a regular expression.
netframework
The collectors specified by enabled_list can include the following:
clrexceptionsclrinteropclrjitclrloadingclrlocksandthreadsclrmemoryclrremotingclrsecurity
For example, you can set enabled_list to ["clrjit"].
performancecounter
The objects field accepts a YAML string that satisfies the schema in the exporter’s documentation for the performancecounter collector.
You can construct this directly in Alloy syntax with raw Alloy syntax strings, but the best way to configure this collector is to use a local.file component.
local.file "counters" {
filename = "/etc/alloy/performance_counters.yaml"
}
prometheus.exporter.windows "default" {
...
performancecounter {
objects = local.file.counters.content
}
...
}The performance_counters.yaml file should be a YAML file that represents an array of objects matching the schema in the documentation, like the example below.
# Monitor Memory performance counters
- name: memory
object: "Memory"
counters:
- name: "Cache Faults/sec"
type: "counter" # Use 'counter' for cumulative/rate metrics
- name: "Available Bytes"
type: "gauge" # Use 'gauge' for point-in-time values
# Monitor Processor performance counters
- name: processor
object: "Processor"
instances: ["_Total"] # Optional: filter to specific instances
counters:
- name: "% Processor Time"
type: "gauge"
- name: "Interrupts/sec"
type: "counter"physical_disk
The component wraps user-supplied exclude and include strings in a regular expression.
printer
The component includes printers that match the regular expression specified by include and don’t match the regular expression specified by exclude.
The component wraps user-supplied exclude and include strings in a regular expression.
process
The counter_version may be 0, 1, or 2.
- A value of
1uses the WindowsProcessperformance counters through the registry API. - A value of
2uses the WindowsProcess V2performance counters through the Performance Data Helper (PDH) API. These counters are available starting in Windows 11. - A value of
0checks ifProcess V2counters are available and falls back toProcesscounters if they aren’t.
The component includes processes that match the regular expression specified by include and don’t match the regular expression specified by exclude.
The component wraps user-supplied exclude and include strings in a regular expression.
The upstream collector warns that enable_iis_worker_process may leak memory. Use with caution.
scheduled_task
The component includes tasks that match the regular expression specified by include and don’t match the regular expression specified by exclude.
The component wraps user-supplied exclude and include strings in a regular expression.
service
The component includes services that match the regular expression specified by include and don’t match the regular expression specified by exclude.
The component wraps user-supplied exclude and include strings in a regular expression.
Note
The
use_api,where_clause, andenable_v2_collectorattributes are deprecated as of Alloy v1.9.0. You can still include these attributes in your configuration files, but they have no effect.
smb
The collectors specified by enabled_list can include the following:
ServerShares
For example, you can set enabled_list to ["ServerShares"].
smb_client
The collectors specified by enabled_list can include the following:
ClientShares
For example, you can set enabled_list to ["ClientShares"].
smtp
The component includes server names that match the regular expression specified by include and don’t match the regular expression specified by exclude.
The component wraps user-supplied exclude and include strings in a regular expression.
tcp
The collectors specified by enabled_list can include the following:
connections_statemetrics
For example, you can set enabled_list to ["metrics"].
textfile
By default, directories contains the textfile_inputs directory in the Alloy installation directory.
For example, if you install Alloy in C:\Program Files\GrafanaLabs\Alloy\, the default is ["C:\Program Files\GrafanaLabs\Alloy\textfile_inputs"].
The deprecated text_file_directory attribute accepts a comma-separated string of directories.
If you set both text_file_directory and directories, the component combines them into a single list.
For backwards compatibility, you can also use the deprecated text_file block to configure the textfile collector.
If you configure both blocks, the component combines the distinct directory values from each.
The component only reads files with the .prom extension inside the specified directories.
Note
The
.promfiles must end with an empty line feed for the component to recognize and read them.
text_file (Deprecated: use textfile instead)
This block is deprecated. Use the textfile block instead.
By default, directories contains the textfile_inputs directory in the Alloy installation directory.
For example, if you install Alloy in C:\Program Files\GrafanaLabs\Alloy\, the default is ["C:\Program Files\GrafanaLabs\Alloy\textfile_inputs"].
The deprecated text_file_directory attribute accepts a comma-separated string of directories.
If you set both text_file_directory and directories, the component combines them into a single list.
If you configure both text_file and textfile blocks, the component combines the distinct directory values from each.
The component only reads files with the .prom extension inside the specified directories.
Note
The
.promfiles must end with an empty line feed for the component to recognize and read them.
update
Exported fields
The following fields are exported and can be referenced by other components.
For example, the targets can either be passed to a discovery.relabel component to rewrite the targets’ label sets or to a prometheus.scrape component that collects the exposed metrics.
The exported targets use the configured in-memory traffic address specified by the run command.
Component health
prometheus.exporter.windows reports as unhealthy only when you provide an invalid configuration.
In those cases, exported fields retain their last healthy values.
Debug information
prometheus.exporter.windows doesn’t expose any component-specific
debug information.
Debug metrics
prometheus.exporter.windows doesn’t expose any component-specific
debug metrics.
Wrap regular expression strings
Some collector blocks such as scheduled_task accept a regular expression as a string argument.
prometheus.exporter.windows prefixes some regular expression string arguments with ^(?: and suffixes them with )$.
For example, if a user sets an exclude argument to ".*", Alloy sets it to "^(?:.*)$".
To find out if the component wraps a particular regular expression argument, refer to the collector block documentation.
Note
The wrapping may change the behaviour of your regular expression. For example, the
e.*regular expression would normally match both the “service” and “email” strings. However,^(?:e.*)$would only match “email”.
Collectors list
The following table lists the available collectors in windows_exporter.
Some collectors only work on specific operating systems. If you enable a collector that the host OS doesn’t support, it has no effect.
You can enable a subset of collectors to limit the amount of metrics that the prometheus.exporter.windows component exposes, or disable collectors that are expensive to run.
Refer to the linked documentation on each collector for more information on reported metrics, configuration settings and usage examples.
Caution
Certain collectors cause Alloy to crash if you use them without the required infrastructure. These include but aren’t limited to
mscluster,VMware,nps,dns,msmq,ad,hyperv, andscheduled_task.The
csandlogoncollectors are deprecated and removed from the exporter. You can still configure these collectors, but they have no effect.
Example
The following example uses a prometheus.scrape component to collect metrics from prometheus.exporter.windows:
prometheus.exporter.windows "default" { }
// Configure a prometheus.scrape component to collect windows metrics.
prometheus.scrape "example" {
targets = prometheus.exporter.windows.default.targets
forward_to = [prometheus.remote_write.demo.receiver]
}
prometheus.remote_write "demo" {
endpoint {
url = "<PROMETHEUS_REMOTE_WRITE_URL>"
basic_auth {
username = "<USERNAME>"
password = "<PASSWORD>"
}
}
}The following example shows you how to enable additional collectors and configure them:
prometheus.exporter.windows "advanced" {
// Enable additional collectors beyond the default set
enabled_collectors = [
"cpu", "logical_disk", "net", "os", "service", "system", // defaults
"dns", "iis", "process", "scheduled_task" // additional
]
// Configure DNS collector settings
dns {
enabled_list = ["metrics", "wmi_stats"]
}
// Configure IIS collector settings
iis {
site_include = "^(Default Web Site|Production)$"
app_exclude = "^$"
}
// Configure process collector settings
process {
include = "^(chrome|firefox|notepad).*"
exclude = "^$"
}
}
prometheus.scrape "advanced_example" {
targets = prometheus.exporter.windows.advanced.targets
forward_to = [prometheus.remote_write.demo.receiver]
}Replace the following:
<PROMETHEUS_REMOTE_WRITE_URL>: The URL of the Prometheusremote_writecompatible server to send metrics to.<USERNAME>: The username to use for authentication to theremote_writeAPI.<PASSWORD>: The password to use for authentication to theremote_writeAPI.
Compatible components
prometheus.exporter.windows has exports that can be consumed by the following components:
- Components that consume Targets
Note
Connecting some components may not be sensible or components may require further configuration to make the connection work correctly. Refer to the linked documentation for more details.



