windows_exporter
适用于Windows机器的Prometheus导出器。
收集器
名称 | 描述 | 默认启用 |
---|---|---|
ad | Active Directory 域服务 | |
adcs | Active Directory 证书服务 | |
adfs | Active Directory 联合身份验证服务 | |
cache | 缓存指标 | |
cpu | CPU 使用率 | ✓ |
cpu_info | CPU 信息 | |
cs | "计算机系统"指标(系统属性、CPU数量/总内存) | ✓ |
container | 容器指标 | |
diskdrive | 磁盘驱动器指标 | |
dfsr | DFSR 指标 | |
dhcp | DHCP 服务器 | |
dns | DNS 服务器 | |
exchange | Exchange 指标 | |
fsrmquota | Microsoft 文件服务器资源管理器 (FSRM) 配额收集器 | |
hyperv | Hyper-V 主机 | |
iis | IIS 站点和应用程序 | |
license | Windows 许可状态 | |
logical_disk | 逻辑磁盘、磁盘 I/O | ✓ |
logon | 用户登录会话 | |
memory | 内存使用指标 | |
mscluster_cluster | MSCluster 集群指标 | |
mscluster_network | MSCluster 网络指标 | |
mscluster_node | MSCluster 节点指标 | |
mscluster_resource | MSCluster 资源指标 | |
mscluster_resourcegroup | MSCluster 资源组指标 | |
msmq | MSMQ 队列 | |
mssql | SQL Server 性能对象指标 | |
netframework_clrexceptions | .NET Framework CLR 异常 | |
netframework_clrinterop | .NET Framework 互操作指标 | |
netframework_clrjit | .NET Framework JIT 指标 | |
netframework_clrloading | .NET Framework CLR 加载指标 | |
netframework_clrlocksandthreads | .NET Framework 锁和线程指标 | |
netframework_clrmemory | .NET Framework 内存指标 | |
netframework_clrremoting | .NET Framework 远程处理指标 | |
netframework_clrsecurity | .NET Framework 安全检查指标 | |
net | 网络接口 I/O | ✓ |
os | 操作系统指标(内存、进程、用户) | ✓ |
physical_disk | 物理磁盘指标 | ✓ |
printer | 打印机指标 | |
process | 每个进程的指标 | |
remote_fx | RemoteFX 协议 (RDP) 指标 | |
scheduled_task | 计划任务指标 | |
service | 服务状态指标 | ✓ |
smb | SMB 服务器 | |
smbclient | SMB 客户端 | |
smtp | IIS SMTP 服务器 | |
system | 系统调用 | ✓ |
tcp | TCP 连接 | |
teradici_pcoip | Teradici PCoIP 会话指标 | |
time | Windows 时间服务 | |
[thermalzone](https://github.com/prometheus-community/windows_exporter/blob/master/docs/collector.thermalzone.md | 热区信息 | |
[terminal_services](https://github.com/prometheus-community/windows_exporter/blob/master/docs/collector.terminal_services.md | 终端服务(RDS) | |
[textfile](https://github.com/prometheus-community/windows_exporter/blob/master/docs/collector.textfile.md | 从文本文件读取Prometheus指标 | |
[vmware_blast](https://github.com/prometheus-community/windows_exporter/blob/master/docs/collector.vmware_blast.md | VMware Blast会话指标 | |
[vmware](https://github.com/prometheus-community/windows_exporter/blob/master/docs/collector.vmware.md | VMware客户端代理安装的性能计数器 | |
查看每个收集器的链接文档以获取更多关于报告指标、配置设置和使用示例的信息。 |
过滤启用的收集器
默认情况下,windows_exporter
将公开所有启用收集器的指标。这是收集指标的推荐方式,以避免在比较不同系列的指标时出现错误。
对于高级用途,可以向 windows_exporter
传递一个可选的收集器列表来过滤指标。collect[]
参数可以多次使用。在 Prometheus 配置中,您可以在 抓取配置 下使用此语法。
params:
collect[]:
- foo
- bar
这对于让不同的 Prometheus 服务器从节点收集特定指标很有用。
标志
windows_exporter 接受用于配置某些行为的标志。下面列出了配置导出器全局行为的标志,而特定于收集器的标志则在上面相应的收集器文档中有所说明。
标志 | 描述 | 默认值 |
---|---|---|
--web.listen-address | 导出器的主机:端口。 | :9182 |
--telemetry.path | 用于公开收集的指标的 URL 路径。 | /metrics |
--telemetry.max-requests | 最大并发请求数。0 表示禁用。 | 5 |
--collectors.enabled | 逗号分隔的要使用的收集器列表。使用 [defaults] 作为占位符,它会展开包含所有默认启用的收集器。 | [defaults] |
--collectors.print | 如果为真,打印可用的收集器并退出。 | |
--scrape.timeout-margin | 从客户端允许的超时时间中减去的秒数。调整以允许开销或高负载。 | 0.5 |
--web.config.file | 用于设置 TLS 和身份验证的 web 配置 | 无 |
--config.file | 使用配置文件 从路径或 URL | 无 |
--config.file.insecure-skip-verify | 从 URL 加载配置文件时跳过 TLS | false |
安装
可以从 releases 页面 下载最新版本。
每个版本都提供一个 .msi 安装程序。安装程序将把 windows_exporter 设置为 Windows 服务,并在 Windows 防火墙中创建一个例外。
如果安装程序在没有任何参数的情况下运行,导出器将使用默认设置运行,包括启用的收集器、端口等。以下参数可用:
名称 | 描述 |
---|---|
ENABLED_COLLECTORS | 与 --collectors.enabled 标志相同,提供逗号分隔的启用收集器列表 |
LISTEN_ADDR | 要绑定的 IP 地址。默认为空字符串(任何本地地址) |
LISTEN_PORT | 要绑定的端口。默认为 9182 |
METRICS_PATH | 提供指标的路径。默认为 /metrics |
TEXTFILE_DIRS | 使用 --collector.textfile.directories 标志指定一个或多个目录,用逗号分隔,收集器应该在这些目录中读取包含指标的文本文件 |
REMOTE_ADDR | 允许为 Windows 防火墙例外(允许列表)设置逗号分隔的远程 IP 地址。默认为空字符串(任何远程地址) |
EXTRA_FLAGS | 允许传递完整的 CLI 标志。默认为空字符串 |
ADD_FIREWALL_EXCEPTION | 为 windows_exporter 设置防火墙例外。默认为 yes |
ENABLE_V1_PERFORMANCE_COUNTERS | 在现代系统上启用 V1 性能计数器。默认为 yes |
参数通过 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,textfile,thermalzone" TEXTFILE_DIRS="C:\custom_metrics\"
要安装导出器并创建防火墙例外,请使用以下命令:
msiexec /i <path-to-msi-file> ADD_FIREWALL_EXCEPTION=yes
要修复安装,例如强制重新创建 Windows 服务:
msiexec /fa <path-to-msi-file>
Powershell 7.3 及以上版本在使用 --% EXTRA_FLAGS
时需要将 PSNativeCommandArgumentPassing 设置为 Legacy
:
$PSNativeCommandArgumentPassing = 'Legacy'
msiexec /i <path-to-msi-file> ENABLED_COLLECTORS=os,service --% EXTRA_FLAGS="--collector.service.services-where ""Name LIKE 'sql%'"""
Docker 实现
windows_exporter 可以作为 Docker 容器运行。Docker 镜像可在以下位置获取:
- Docker Hub:
docker.io/prometheuscommunity/windows-exporter
- GitHub Container Registry:
ghcr.io/prometheus-community/windows-exporter
标签
Docker 镜像使用导出器的版本进行标记。latest
标签也可用,指向最新版本。
此外,带有 -hostprocess
后缀的 hostprocess
风格基于 https://github.com/microsoft/windows-host-process-containers-base-image,
设计用于作为 Windows 主机进程容器运行。该镜像的大小比默认镜像小。
Kubernetes 实现
有关在 Windows Kubernetes 上安装的详细步骤,请参见此处。
支持的版本
windows_exporter
支持 Windows Server 2016 及更高版本,以及桌面版 Windows 10 和 11(21H2 或更高版本)。
Windows Server 2012 和 2012R2 仅作为尽力而为的支持,不保证可以工作。
使用方法
go get -u github.com/prometheus/promu
go get -u github.com/prometheus-community/windows_exporter
cd $env:GOPATH/src/github.com/prometheus-community/windows_exporter
promu build -v
.\windows_exporter.exe
Prometheus指标将在localhost:9182上公开
示例
仅启用服务收集器并指定自定义查询
.\windows_exporter.exe --collectors.enabled "service" --collector.service.services-where "Name='windows_exporter'"
仅启用进程收集器并指定自定义查询
.\windows_exporter.exe --collectors.enabled "process" --collector.process.include="firefox.+"
当有多个同名进程时,WMI会将第一个实例之后的进程表示为process-name#index
。因此,要获取所有进程而不仅仅是第一个,正则表达式必须使用.+
。更多信息请参阅process。
将[defaults]与--collectors.enabled
参数一起使用
将[defaults]
与--collectors.enabled
参数一起使用,该参数会扩展为所有默认收集器。
.\windows_exporter.exe --collectors.enabled "[defaults],process,container"
这会在默认收集器之上额外启用进程和容器收集器。
使用配置文件
可以使用--config.file
标志指定YAML配置文件。例如:.\windows_exporter.exe --config.file=config.yml
。如果使用绝对路径,请确保用引号括起路径,例如:.\windows_exporter.exe --config.file="C:\Program Files\windows_exporter\config.yml"
也可以从URL加载配置。例如:.\windows_exporter.exe --config.file="https://example.com/config.yml"
如果需要跳过TLS验证,可以使用--config.file.insecure-skip-verify
标志。例如:.\windows_exporter.exe --config.file="https://example.com/config.yml" --config.file.insecure-skip-verify
collectors:
enabled: cpu,cs,net,service
collector:
service:
services-where: "Name='windows_exporter'"
log:
level: warn
一个示例配置文件可以在这里找到。
配置文件注意事项
配置文件值可以与CLI标志混合使用。例如:
.\windows_exporter.exe --collectors.enabled=cpu,logon
log:
level: debug
CLI标志的优先级高于配置文件中指定的值。
许可证
基于MIT