Windows Exporter
上一篇我们聊到了 Node Exporter ,这次我们看看在 Windows 下使用的 Exporter 。
Windows Exporter 由 Prometheus Community 维护,官方地址是:https://github.com/prometheus-community/windows_exporter 。 当前版本是 v0.16.0 ,发行于 2021.02.25 。
Windows Exporter 是一个采集 Windows 机器指标的采集器。支持 Windows Server 2008R2 以上版本或者 Windows 7 以上版本。
安装
Windows Exporter 在发布的是时候提供了两种格式的文件,分别是 *.exe
和 *.msi
。
MSI (Microsoft Installers)是 Windows 的包管理器,类似于 Linux 的 rpm 。
Windows Exporter 每个版本都提供一个 .msi
安装程序。安装程序将 windows_exporter
设置为 Windows 服务,并在 Windows 防火墙中创建一个异常。
我们在使用的时候可以选择任意一种格式来进行安装。
使用 MSI 不进行任何参数的指定的时候,他会安装在 C:\Program Files\windows_exporter\
,启动参数是 C:\Program Files\windows_exporter\windows_exporter.exe" --log.format logger:eventlog?name=windows_exporter --telemetry.addr :9182
对于 Windows ,我们不建议这样部署。建议的部署方式是通过 msiexec 将参数发送到安装程序,比如像下边这样。
msiexec /i <path-to-msi-file> ENABLED_COLLECTORS=os,iis LISTEN_PORT=5000
带有自定义查询的服务指标收集部署示例。
msiexec /i <path-to-msi-file> ENABLED_COLLECTORS=os,service --% EXTRA_FLAGS="--collector.service.services-where ""Name LIKE 'sql%'"""
在一些旧版本的Windows上,可能需要用双引号包围参数值,才可以让正确的安装命令发送到安装程序:
msiexec /i C:\Users\Administrator\Downloads\windows_exporter.msi ENABLED_COLLECTORS="ad,iis,logon,memory,process,tcp,thermalzone" TEXTFILE_DIR="C:\custom_metrics\"
如果你下载了 *.exe 包,也可以在放到指定目录以后通过如下命令将 windows_exporter 添加到 Windows 服务。
sc create windows_exporter binpath= "C:\Program Files\windows_exporter\windows_exporter.exe" --log.format logger:eventlog?name=windows_exporter --telemetry.addr :9182" displayname= "windows_exporter" start= auto
只启用服务采集并指定自定义查询
.\windows_exporter.exe --collectors.enabled "service" --collector.service.services-where "Name='windows_exporter'"
只启用进程采集并指定自定义查询
.\windows_exporter.exe --collectors.enabled "process" --collector.process.whitelist="firefox.+"
使用 --collectors.enabled
参数打开默认采集选项
.\windows_exporter.exe --collectors.enabled "[defaults],process,container"
启动参数
windows_exporter 通过配置参数来决定启动后的行为。下面列出了Exporter 配置以后会全局剩下的一些参数以及默认值,而收集器特定的收集器在上面各自的收集器文档中进行了记录。
Flag | Description | Default value |
---|---|---|
--telemetry.addr | host:port for exporter. | :9182 |
--telemetry.path | URL path for surfacing collected metrics. / | metrics |
--telemetry.max-requests | Maximum number of concurrent requests. 0 to disable. | 5 |
--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] |
--collectors.print | If true, print available collectors and exit. | |
--scrape.timeout-margin | Seconds to subtract from the timeout allowed by the client. Tune to allow for overhead or high loads. | 0.5 |
--web.config.file | A web config for setting up TLS and Auth | None |
如果安装程序在没有任何参数的情况下运行,导出程序将使用启用的收集器、端口等的默认设置运行。可配置的参数如下
Name | Description |
---|---|
ENABLED_COLLECTORS | As the --collectors.enabled flag, provide a comma-separated list of enabled collectors |
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 |
TEXTFILE_DIR | As the --collector.textfile.directory flag, provide a directory to read text files with metrics from |
REMOTE_ADDR | Allows setting comma separated remote IP addresses for the Windows Firewall exception (whitelist). Defaults to an empty string (any remote address). |
EXTRA_FLAGS | Allows passing full CLI flags. Defaults to an empty string. |
当使用 MSI 包安装的时候我们使用全部大写的参数,当使用 exe 包安装的时候,我们使用 --
开头的参数来指定 windows_exporter 启动后的行为。
采集的指标
这个列表是 Windows Exporter 支持采集的指标,有一些指标是启动后缺省会打开的,有一些是需要手动打开的。 https://github.com/prometheus-community/windows_exporter#
默认情况下,windows_exporter 将暴露所有已采集的指标。这是收集指标的推荐方法,以避免在比较不同系列指标时出现错误。
对于高级使用,可以向 windows_exporter 传递一个可选的收集器列表来过滤指标。collect[]
参数可能被多次使用。在 Prometheus 配置中,可以在 scrape config
下使用此语法。
params:
collect[]:
- foo
- bar
使用配置文件
Windows Exporter 支持使用 --config.file 参数来指定一个 YAML 格式的文件作为配置文件来启动,比如: .\windows_exporter.exe --config.file=config.yml
.
这个配置文件支持配置要采集的指标类型、日志、 TLS 认证等内容。
collectors:
enabled: cpu,cs,net,service
collector:
service:
services-where: "Name='windows_exporter'"
log:
level: warn
# TLS and basic authentication configuration example.
#
# Additionally, a certificate and a key file are needed.
tls_server_config:
cert_file: server.crt
key_file: server.key
# Usernames and passwords required to connect.
# Passwords are hashed with bcrypt: https://github.com/prometheus/exporter-toolkit/blob/master/docs/web-configuration.md#about-bcrypt.
basic_auth_users:
alice: $2y$10$mDwo.lAisC94iLAyP81MCesa29IzH37oigHC/42V2pdJlUprsJPze
bob: $2y$10$hLqFl9jSjoAAy95Z/zw8Ye8wkdMBM8c5Bn1ptYqP/AXyV0.oy0S8m
更详细的配置可以参考 Web configuration
建议
在部署的时候建议使用 MSI 来部署方便一些,另外建议打开 textfile,并且使用 TEXTFILE_DIR
或者 --collector.textfile.directory
参数指定好目录,这样方便后期自定义指标的采集。另外建议使用配置文件启动,这样后期在增加监控项的时候可以不用重新修改 Windows 服务。