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 available for backwards compatibility but are deprecated. Theincludeandexcludearguments are preferred going forward.
Usage
prometheus.exporter.windows "<LABEL>" {
}Arguments
You can use the following arguments with prometheus.exporter.windows:
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
enabled_collectors | list(string) | List of collectors to enable. | ["cpu","logical_disk","net","os","service","system"] | no |
enabled_collectors defines a hand-picked list of enabled-by-default collectors.
If set, anything not provided in that list is disabled by default.
Refer to the Collectors list for the default set.
Blocks
You can use the following blocks with prometheus.exporter.windows:
| Name | Description | Required |
|---|---|---|
dfsr | Configures the dfsr collector. | no |
dns | Configures the dns collector. | no |
exchange | Configures the exchange collector. | no |
filetime | Configures the filetime collector. | no |
iis | Configures the iis collector. | no |
logical_disk | Configures the logical_disk collector. | no |
mscluster | Configures the mscluster collector. | no |
mssql | Configures the mssql collector. | no |
netframework | Configures the netframework collector. | no |
net | Configures the net collector. | no |
network | Configures the network collector. | no |
performancecounter | Configures the performancecounter collector. | no |
physical_disk | Configures the physical_disk collector. | no |
printer | Configures the printer collector. | no |
process | Configures the process collector. | no |
scheduled_task | Configures the scheduled_task collector. | no |
service | Configures the service collector. | no |
smb_client | Configures the smb_client collector. | no |
smb | Configures the smb collector. | no |
smtp | Configures the smtp collector. | no |
tcp | Configures the tcp collector. | no |
textfile | Configures the textfile collector. | no |
[text_file][text_file] | (Deprecated: use textfile instead) Configures the textfile collector. | no |
update | Configures the update collector. | no |
Caution
Starting with v1.11.0, the
text_fileblock is deprecated. It will be removed in a future release. Use thetextfileblock to configure thetextfilecollector.
Note
Starting with release 1.9.0, the
msmqblock is deprecated. It will be removed in a future release. You can still include this block in your configuration files. However, its usage is now a no-op.
dfsr
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
source_enabled | list(string) | A list of DFSR Perflib sources to use. | ["connection","folder","volume"] | no |
dns
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
enabled_list | list(string) | A list of collectors to use. | ["metrics", "wmi_stats"] | no |
exchange
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
enabled_list | list(string) | A list of collectors to use. | ["ADAccessProcesses", "TransportQueues", "HttpProxy", "ActiveSync", "AvailabilityService", "OutlookWebAccess", "Autodiscover", "WorkloadManagement", "RpcClientAccess", "MapiHttpEmsmdb"] | no |
filetime
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
file_patterns | list(string) | A list of glob patterns matching files to be monitored. | [] | no |
iis
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
app_exclude | string | Regular expression of applications to ignore. | "^$" | no |
app_include | string | Regular expression of applications to report on. | "^.+$" | no |
site_exclude | string | Regular expression of sites to ignore. | "^$" | no |
site_include | string | Regular expression of sites to report on. | "^.+$" | no |
User-supplied app_exclude, app_include, site_exclude and site_include strings are wrapped in a regular expression.
logical_disk
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
enabled_list | list(string) | A list of collectors to use. | ["metrics"] | no |
exclude | string | Regular expression of volumes to exclude. | "^$" | no |
include | string | Regular expression of volumes to include. | "^.+$" | no |
The collectors specified by enabled_list can include the following:
metricsbitlocker_status
Volume names must match the regular expression specified by include and must not match the regular expression specified by exclude to be included.
User-supplied exclude and include strings are wrapped in a regular expression.
mscluster
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
enabled_list | list(string) | A list of collectors to use. | ["cluster","network","node","resource","resourcegroup"] | no |
The collectors specified by enabled_list can include the following:
clusternetworknoderesourceresouregroup
For example, you can set enabled_list to ["cluster"].
mssql
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
enabled_classes | list(string) | A list of MSSQL WMI classes to use. | ["accessmethods", "availreplica", "bufman", "databases", "dbreplica", "genstats", "info", "locks", "memmgr", "sqlerrors", "sqlstats", "transactions", "waitstats"] | no |
net
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
enabled_list | list(string) | A list of collectors to use. | ["metrics", "nic_info"] | no |
exclude | string | Regular expression of NICs to exclude. | "^$" | no |
include | string | Regular expression of NICs to include. | "^.+$" | no |
The collectors specified by enabled_list can include the following:
metricsnic_info
NIC names must match the regular expression specified by include and must not match the regular expression specified by exclude to be included.
User-supplied exclude and include strings are wrapped in a regular expression.
network
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
exclude | string | Regular expression of NICs to exclude. | "^$" | no |
include | string | Regular expression of NICs to include. | "^.+$" | no |
NIC names must match the regular expression specified by include and must not match the regular expression specified by exclude to be included.
User-supplied exclude and include strings are wrapped in a regular expression.
netframework
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
enabled_list | list(string) | A list of collectors to use. | ["clrexceptions","clrinterop","clrjit","clrloading","clrlocksandthreads","clrmemory","clrremoting","clrsecurity"] | no |
The collectors specified by enabled_list can include the following:
clrexceptionsclrinteropclrjitclrloadingclrlocksandthreadsclrmemoryclrremotingclrsecurity
For example, you can set enabled_list to ["clrjit"].
performancecounter
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
objects | string | YAML string representing the counters to monitor. | "" | no |
The objects field should contain a YAML file as a string that satisfies the schema shown in the exporter’s documentation for the performancecounter collector.
While there are ways to construct this directly in Alloy syntax using raw Alloy syntax strings for example, the best way to configure
this collector will be using 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.
- name: memory
object: "Memory"
counters:
- name: "Cache Faults/sec"
type: "counter" # optionalphysical_disk
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
exclude | string | Regular expression of physical disk to exclude. | "^$" | no |
include | string | Regular expression of physical disk to include. | "^.+$" | no |
User-supplied exclude and include strings are wrapped in a regular expression.
printer
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
exclude | string | Regular expression of printer to exclude. | "^$" | no |
include | string | Regular expression of printer to include. | "^.+$" | no |
Printer must match the regular expression specified by include and must not match the regular expression specified by exclude to be included.
User-supplied exclude and include strings are wrapped in a regular expression.
process
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
counter_version | int | Version of the process collector to use. | 0 | no |
enable_iis_worker_process | string | Enable IIS collectWorker process name queries. | false | no |
exclude | string | Regular expression of processes to exclude. | "^$" | no |
include | string | Regular expression of processes to include. | "^.+$" | no |
The counter_version may be 0, 1, or 2.
- A value of
1uses the WindowsProcessperformance counters via the registry API. - A value of
2uses the WindowsProcess V2performance counters via the pdh API. These are available starting in Windows 11. - A value of
0checks to see ifProcess V2counters are available, and falls back toProcesscounters if they are not available.
Processes must match the regular expression specified by include and must not match the regular expression specified by exclude to be included.
User-supplied exclude and include strings are wrapped in a regular expression.
There is a warning in the upstream collector that use of enable_iis_worker_process may leak memory. Use with caution.
scheduled_task
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
exclude | string | Regular expression of tasks to exclude. | "^$" | no |
include | string | Regular expression of tasks to include. | "^.+$" | no |
For a task to be included, it must match the regular expression specified by include and must not match the regular expression specified by exclude.
User-supplied exclude and include strings are wrapped in a regular expression.
service
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
exclude | string | Regular expression of services to exclude. | "^$" | no |
include | string | Regular expression of services to include. | "^.+$" | no |
For a service to be included, it must match the regular expression specified by include and must not match the regular expression specified by exclude.
User-supplied exclude and include strings are wrapped in a regular expression.
Note
Starting with release 1.9.0, the
use_api,where_clause, andenable_v2_collectorattributes are deprecated. They will be removed in a future release. You can still include these attributes in your configuration files. However, their usage is now a no-op.
smb
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
enabled_list | list(string) | Deprecated (no-op), a list of collectors to use. | [] | no |
The collectors specified by enabled_list can include the following:
ServerShares
For example, enabled_list may be set to ["ServerShares"].
smb_client
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
enabled_list | list(string) | Deprecated (no-op), a list of collectors to use. | [] | no |
The collectors specified by enabled_list can include the following:
ClientShares
For example, enabled_list may be set to ["ClientShares"].
smtp
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
exclude | string | Regular expression of virtual servers to ignore. | "^$" | no |
include | string | Regular expression of virtual servers to include. | "^.+$" | no |
For a server name to be included, it must match the regular expression specified by include and must not match the regular expression specified by exclude.
User-supplied exclude and include strings are wrapped in a regular expression.
tcp
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
enabled_list | list(string) | A list of collectors to use. | ["metrics","connections_state"] | no |
The collectors specified by enabled_list can include the following:
connections_statemetrics
For example, you can set enabled_list to ["metrics"].
textfile
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
directories | list(string) | The list of directories containing the files to be ingested. | see below | no |
text_file_directory | string | Deprecated. The directory containing the files to be ingested. | no |
For backwards compatibility, the textfile collector can also be configured with the deprecated text_file block.
If both text_file and textfile are configured, the distinct values from each will be concatenated.
The text_file_directory will be split by , and appended to the list provided in directories if they are both configured.
Until the deprecated field is removed, the default value will be left in text_file_directory to ensure backward compatibility.
The default value for directories is relative to the location of the Alloy executable.
By default, directories contains the textfile_inputs directory in the installation directory of Alloy.
For example, if Alloy is installed in C:\Program Files\GrafanaLabs\Alloy\, the default is ["C:\Program Files\GrafanaLabs\Alloy\textfile_inputs"].
Only files with the extension .prom inside the specified directories are read.
Note
The
.promfiles must end with an empty line feed for the component to recognize and read them.
text_file (Deprecated: use textfile instead)
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
directories | list(string) | The list of directories containing the files to be ingested. | see below | no |
text_file_directory | string | Deprecated. The directory containing the files to be ingested. | no |
For backwards compatibility, the textfile collector can also be configured with the deprecated text_file block.
If both text_file and textfile are configured, the distinct values from each will be concatenated.
The text_file_directory will be split by , and appended to the list provided in directories if they are both configured.
Until the deprecated field is removed, the default value will be left in text_file_directory to ensure backward compatibility.
The default value for directories is relative to the location of the Alloy executable.
By default, directories contains the textfile_inputs directory in the installation directory of Alloy.
For example, if Alloy is installed in C:\Program Files\GrafanaLabs\Alloy\, the default is ["C:\Program Files\GrafanaLabs\Alloy\textfile_inputs"].
Only files with the extension .prom inside the specified directories are read.
Note
The
.promfiles must end with an empty line feed for the component to recognize and read them.
update
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
online | bool | Whether to search for updates online. | false | no |
scrape_interval | duration | How frequently to scrape Windows Update information. | 6h | no |
Exported fields
The following fields are exported and can be referenced by other components.
| Name | Type | Description |
|---|---|---|
targets | list(map(string)) | The targets that can be used to collect exporter metrics. |
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 is only reported as unhealthy if given 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 a particular regular expression argument will be wrapped, 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, enabling a collector that’s not supported by the host OS where Alloy is running is a no-op.
Users can choose to enable a subset of collectors to limit the amount of metrics exposed by the prometheus.exporter.windows component, or disable collectors that are expensive to run.
| Name | Description | Enabled by default |
|---|---|---|
ad | Active Directory Domain Services | |
adcs | Active Directory Certificate Services | |
adfs | Active Directory Federation Services | |
cache | Cache metrics | |
cpu | CPU usage | Yes |
cpu_info | CPU Information | |
container | Container metrics | |
dfsr | DFSR metrics | |
dhcp | DHCP Server | |
dns | DNS Server | |
exchange | Exchange metrics | |
filetime | File modification time metrics | |
fsrmquota | Microsoft File Server Resource Manager (FSRM) Quotas collector | |
gpu | GPU usage and memory consumption | |
hyperv | Hyper-V hosts | |
iis | IIS sites and applications | |
logical_disk | Logical disks, disk I/O | Yes |
memory | Memory usage metrics | |
mscluster | MSCluster metrics | |
msmq | MSMQ queues | |
mssql | SQL Server Performance Objects metrics | |
netframework | .NET Framework metrics | |
net | Network interface I/O | Yes |
os | OS metrics (memory, processes, users) | Yes |
pagefile | Pagefile metrics | |
performancecounter | Performance Counter metrics | |
physical_disk | Physical disks | |
printer | Printer metrics | |
process | Per-process metrics | |
remote_fx | RemoteFX protocol (RDP) metrics | |
scheduled_task | Scheduled Tasks metrics | |
service | Service state metrics | Yes |
smb | IIS SMTP Server | |
smb_client | IIS SMTP Server | |
smtp | IIS SMTP Server | |
system | System calls | Yes |
tcp | TCP connections | |
time | Windows Time Service | |
thermalzone | Thermal information | |
terminal_services | Terminal services (RDS) | |
textfile | Read Prometheus metrics from a text file | |
udp | UDP connections | |
update | Windows Update service metrics | |
vmware | Performance counters installed by the VMware Guest agent |
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 those collectors are used and the required infrastructure isn’t installed. These include but aren’t limited to
mscluster,vmware,nps,dns,msmq,ad,hyperv, andscheduled_task.The
csandlogoncollectors are deprecated and have been removed from the exporter. You can continue to use the configuration for these collectors, however this option will be removed in the future.
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>"
}
}
}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.



