2020-05-24 18:47:16 +00:00
# windows_exporter
2016-08-26 09:08:12 +00:00
2022-01-02 17:59:32 +00:00
![Build Status ](https://github.com/prometheus-community/windows_exporter/workflows/windows_exporter%20CI/CD/badge.svg )
2016-08-27 10:59:57 +00:00
2020-05-24 18:47:16 +00:00
A Prometheus exporter for Windows machines.
2016-08-26 09:08:12 +00:00
## Collectors
2016-10-14 08:19:57 +00:00
Name | Description | Enabled by default
---------|-------------|--------------------
2018-11-18 21:26:38 +00:00
[ad ](docs/collector.ad.md ) | Active Directory Domain Services |
2022-01-04 15:51:49 +00:00
[adcs ](docs/collector.adcs.md ) | Active Directory Certificate Services |
2019-09-17 11:39:48 +00:00
[adfs ](docs/collector.adfs.md ) | Active Directory Federation Services |
2020-01-17 20:06:45 +00:00
[cache ](docs/collector.cache.md ) | Cache metrics |
2018-11-18 21:26:38 +00:00
[cpu ](docs/collector.cpu.md ) | CPU usage | ✓
2021-02-16 00:30:56 +00:00
[cpu_info ](docs/collector.cpu_info.md ) | CPU Information |
2018-11-18 21:26:38 +00:00
[cs ](docs/collector.cs.md ) | "Computer System" metrics (system properties, num cpus/total memory) | ✓
2019-07-20 16:19:40 +00:00
[container ](docs/collector.container.md ) | Container metrics |
2020-11-26 11:45:55 +00:00
[dfsr ](docs/collector.dfsr.md ) | DFSR metrics |
2020-07-03 17:21:28 +00:00
[dhcp ](docs/collector.dhcp.md ) | DHCP Server |
2018-11-18 21:26:38 +00:00
[dns ](docs/collector.dns.md ) | DNS Server |
2020-05-24 16:05:27 +00:00
[exchange ](docs/collector.exchange.md ) | Exchange metrics |
2020-06-07 15:40:55 +00:00
[fsrmquota ](docs/collector.fsrmquota.md ) | Microsoft File Server Resource Manager (FSRM) Quotas collector |
2018-11-18 21:26:38 +00:00
[hyperv ](docs/collector.hyperv.md ) | Hyper-V hosts |
[iis ](docs/collector.iis.md ) | IIS sites and applications |
[logical_disk ](docs/collector.logical_disk.md ) | Logical disks, disk I/O | ✓
2019-08-20 12:26:43 +00:00
[logon ](docs/collector.logon.md ) | User logon sessions |
2018-11-18 17:24:58 +00:00
[memory ](docs/collector.memory.md ) | Memory usage metrics |
2022-01-11 20:46:54 +00:00
[mscluster_cluster ](docs/collector.mscluster_cluster.md ) | MSCluster cluster metrics |
[mscluster_network ](docs/collector.mscluster_network.md ) | MSCluster network metrics |
[mscluster_node ](docs/collector.mscluster_node.md ) | MSCluster Node metrics |
[mscluster_resource ](docs/collector.mscluster_resource.md ) | MSCluster Resource metrics |
[mscluster_resourcegroup ](docs/collector.mscluster_resourcegroup.md ) | MSCluster ResourceGroup metrics |
2018-11-18 21:26:38 +00:00
[msmq ](docs/collector.msmq.md ) | MSMQ queues |
[mssql ](docs/collector.mssql.md ) | [SQL Server Performance Objects ](https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/use-sql-server-objects#SQLServerPOs ) metrics |
2018-12-05 00:48:23 +00:00
[netframework_clrexceptions ](docs/collector.netframework_clrexceptions.md ) | .NET Framework CLR Exceptions |
[netframework_clrinterop ](docs/collector.netframework_clrinterop.md ) | .NET Framework Interop Metrics |
[netframework_clrjit ](docs/collector.netframework_clrjit.md ) | .NET Framework JIT metrics |
[netframework_clrloading ](docs/collector.netframework_clrloading.md ) | .NET Framework CLR Loading metrics |
[netframework_clrlocksandthreads ](docs/collector.netframework_clrlocksandthreads.md ) | .NET Framework locks and metrics threads |
[netframework_clrmemory ](docs/collector.netframework_clrmemory.md ) | .NET Framework Memory metrics |
[netframework_clrremoting ](docs/collector.netframework_clrremoting.md ) | .NET Framework Remoting metrics |
[netframework_clrsecurity ](docs/collector.netframework_clrsecurity.md ) | .NET Framework Security Check metrics |
2018-12-05 00:42:30 +00:00
[net ](docs/collector.net.md ) | Network interface I/O | ✓
2018-11-18 21:26:38 +00:00
[os ](docs/collector.os.md ) | OS metrics (memory, processes, users) | ✓
[process ](docs/collector.process.md ) | Per-process metrics |
2020-04-23 10:17:17 +00:00
[remote_fx ](docs/collector.remote_fx.md ) | RemoteFX protocol (RDP) metrics |
2021-07-20 07:59:54 +00:00
[scheduled_task ](docs/collector.scheduled_task.md ) | Scheduled Tasks metrics |
2018-11-18 16:05:37 +00:00
[service ](docs/collector.service.md ) | Service state metrics | ✓
2023-11-28 08:22:58 +00:00
[smb ](docs/collector.smb.md ) | SMB Server |
2020-11-08 05:49:59 +00:00
[smtp ](docs/collector.smtp.md ) | IIS SMTP Server |
2018-11-18 21:26:38 +00:00
[system ](docs/collector.system.md ) | System calls | ✓
[tcp ](docs/collector.tcp.md ) | TCP connections |
2022-03-30 08:45:02 +00:00
[teradici_pcoip ](docs/collector.teradici_pcoip.md ) | [Teradici PCoIP ](https://www.teradici.com/web-help/pcoip_wmi_specs/ ) session metrics |
2020-10-25 08:03:05 +00:00
[time ](docs/collector.time.md ) | Windows Time Service |
2019-07-12 18:54:20 +00:00
[thermalzone ](docs/collector.thermalzone.md ) | Thermal information
2020-04-23 10:17:17 +00:00
[terminal_services ](docs/collector.terminal_services.md ) | Terminal services (RDS)
2018-11-18 16:05:37 +00:00
[textfile ](docs/collector.textfile.md ) | Read prometheus metrics from a text file | ✓
2022-03-30 08:45:02 +00:00
[vmware_blast ](docs/collector.vmware_blast.md ) | VMware Blast session metrics |
2018-11-18 16:05:37 +00:00
[vmware ](docs/collector.vmware.md ) | 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.
2016-08-26 09:08:12 +00:00
2020-10-26 13:07:34 +00:00
### 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 ](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#<scrape_config> ).
```
params:
collect[]:
- foo
- bar
```
This can be useful for having different Prometheus servers collect specific metrics from nodes.
2020-07-10 11:52:24 +00:00
## 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
---------|-------------|--------------------
2023-03-02 03:12:46 +00:00
`--web.listen-address` | host:port for exporter. | `:9182`
2020-07-10 11:52:24 +00:00
`--telemetry.path` | URL path for surfacing collected metrics. | `/metrics`
`--telemetry.max-requests` | Maximum number of concurrent requests. 0 to disable. | `5`
2021-01-14 16:44:22 +00:00
`--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]`
2021-07-20 07:59:54 +00:00
`--collectors.print` | If true, print available collectors and exit. |
2020-07-10 11:52:24 +00:00
`--scrape.timeout-margin` | Seconds to subtract from the timeout allowed by the client. Tune to allow for overhead or high loads. | `0.5`
2021-02-23 23:23:38 +00:00
`--web.config.file` | A [web config][web_config] for setting up TLS and Auth | None
2023-07-13 08:22:52 +00:00
`--config.file` | [Using a config file ](#using-a-configuration-file ) from path or URL | None
`--config.file.insecure-skip-verify` | Skip TLS when loading config file from URL | false
2020-07-10 11:52:24 +00:00
2016-09-16 06:36:58 +00:00
## Installation
2020-05-24 18:47:16 +00:00
The latest release can be downloaded from the [releases page ](https://github.com/prometheus-community/windows_exporter/releases ).
2017-05-22 17:17:31 +00:00
2020-05-24 18:47:16 +00:00
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.
2016-09-16 06:36:58 +00:00
If the installer is run without any parameters, the exporter will run with default settings for enabled collectors, ports, etc. The following parameters are available:
Name | Description
-----|------------
2017-08-12 06:56:09 +00:00
`ENABLED_COLLECTORS` | As the `--collectors.enabled` flag, provide a comma-separated list of enabled collectors
2016-09-16 06:36:58 +00:00
`LISTEN_ADDR` | The IP address to bind to. Defaults to 0.0.0.0
`LISTEN_PORT` | The port to bind to. Defaults to 9182.
`METRICS_PATH` | The path at which to serve metrics. Defaults to `/metrics`
2018-04-03 19:37:10 +00:00
`TEXTFILE_DIR` | As the `--collector.textfile.directory` flag, provide a directory to read text files with metrics from
2023-04-01 07:48:23 +00:00
`REMOTE_ADDR` | Allows setting comma separated remote IP addresses for the Windows Firewall exception (allow list). Defaults to an empty string (any remote address).
2018-11-29 19:14:37 +00:00
`EXTRA_FLAGS` | Allows passing full CLI flags. Defaults to an empty string.
2016-09-16 06:36:58 +00:00
2018-11-29 19:14:37 +00:00
Parameters are sent to the installer via `msiexec` . Example invocations:
2016-09-16 06:36:58 +00:00
```powershell
msiexec /i < path-to-msi-file > ENABLED_COLLECTORS=os,iis LISTEN_PORT=5000
```
2016-08-26 09:08:12 +00:00
2018-11-29 19:14:37 +00:00
Example service collector with a custom query.
```powershell
msiexec /i < path-to-msi-file > ENABLED_COLLECTORS=os,service --% EXTRA_FLAGS="--collector.service.services-where ""Name LIKE 'sql%'"""
```
2019-09-25 19:48:36 +00:00
On some older versions of Windows you may need to surround parameter values with double quotes to get the install command parsing properly:
```powershell
2023-11-20 09:58:54 +00:00
msiexec /i C:\Users\Administrator\Downloads\windows_exporter.msi ENABLED_COLLECTORS="ad,iis,logon,memory,process,tcp,textfile,thermalzone" TEXTFILE_DIR="C:\custom_metrics\"
2019-09-25 19:48:36 +00:00
```
2023-07-09 03:41:41 +00:00
Powershell versions 7.3 and above require [PSNativeCommandArgumentPassing ](https://learn.microsoft.com/en-us/powershell/scripting/learn/experimental-features?view=powershell-7.3 ) to be set to `Legacy` when using `--% EXTRA_FLAGS` :
```powershell
$PSNativeCommandArgumentPassing = 'Legacy'
msiexec /i < path-to-msi-file > ENABLED_COLLECTORS=os,service --% EXTRA_FLAGS="--collector.service.services-where ""Name LIKE 'sql%'"""
```
2020-07-30 23:36:58 +00:00
## Kubernetes Implementation
See detailed steps to install on Windows Kubernetes [here ](./kubernetes/kubernetes.md ).
2020-10-10 18:36:55 +00:00
## Supported versions
2016-08-26 09:35:31 +00:00
2020-10-10 18:36:55 +00:00
windows_exporter supports Windows Server versions 2008R2 and later, and desktop Windows version 7 and later.
2016-08-26 13:06:10 +00:00
2016-08-27 09:39:21 +00:00
## Usage
2017-08-10 00:14:06 +00:00
go get -u github.com/prometheus/promu
2020-05-24 18:47:16 +00:00
go get -u github.com/prometheus-community/windows_exporter
cd $env:GOPATH/src/github.com/prometheus-community/windows_exporter
2020-07-05 22:17:02 +00:00
promu build -v
2020-05-24 18:47:16 +00:00
.\windows_exporter.exe
2016-08-27 09:39:21 +00:00
2016-08-27 12:49:34 +00:00
The prometheus metrics will be exposed on [localhost:9182 ](http://localhost:9182 )
2016-08-27 09:39:21 +00:00
2017-08-10 22:31:39 +00:00
## Examples
### Enable only service collector and specify a custom query
2020-05-24 18:47:16 +00:00
.\windows_exporter.exe --collectors.enabled "service" --collector.service.services-where "Name='windows_exporter'"
2017-08-10 00:07:52 +00:00
### Enable only process collector and specify a custom query
2023-04-01 07:48:23 +00:00
.\windows_exporter.exe --collectors.enabled "process" --collector.process.include="firefox.+"
2017-08-12 06:56:09 +00:00
2020-04-03 18:49:11 +00:00
When there are multiple processes with the same name, WMI represents those after the first instance as `process-name#index` . So to get them all, rather than just the first one, the [regular expression ](https://en.wikipedia.org/wiki/Regular_expression ) must use `.+` . See [process ](docs/collector.process.md ) for more information.
2018-08-28 06:58:08 +00:00
2021-01-14 16:44:22 +00:00
### Using [defaults] with `--collectors.enabled` argument
Using `[defaults]` with `--collectors.enabled` argument which gets expanded with all default collectors.
.\windows_exporter.exe --collectors.enabled "[defaults],process,container"
2021-07-20 07:59:54 +00:00
2021-01-14 16:44:22 +00:00
This enables the additional process and container collectors on top of the defaults.
2020-10-26 09:05:46 +00:00
### Using a configuration file
2023-02-15 15:40:22 +00:00
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"`
2020-10-26 09:05:46 +00:00
2023-07-10 19:05:01 +00:00
It is also possible to load the configuration from a URL. e.g. `.\windows_exporter.exe --config.file="https://example.com/config.yml"`
2023-07-11 05:38:42 +00:00
If you need to skip TLS verification, you can use the `--config.file.insecure-skip-verify` flag. e.g. `.\windows_exporter.exe --config.file="https://example.com/config.yml" --config.file.insecure-skip-verify`
2020-10-26 09:05:46 +00:00
```yaml
collectors:
enabled: cpu,cs,net,service
collector:
service:
services-where: "Name='windows_exporter'"
log:
level: warn
```
An example configuration file can be found [here ](docs/example_config.yml ).
#### Configuration file notes
Configuration file values can be mixed with CLI flags. E.G.
`.\windows_exporter.exe --collectors.enabled=cpu,logon`
```yaml
log:
level: debug
```
CLI flags enjoy a higher priority over values specified in the configuration file.
2017-08-10 00:07:52 +00:00
2016-08-26 09:08:12 +00:00
## License
Under [MIT ](LICENSE )
2021-01-03 14:54:32 +00:00
[web_config]: https://github.com/prometheus/exporter-toolkit/blob/master/docs/web-configuration.md