Windows机器的Prometheus指标导出器

作者:Sec-Labs | 发布时间:

项目地址

https://github.com/prometheus-community/windows_exporter

小编推荐

Windows_exporter是一个用于Windows机器的Prometheus出口程序。

相关技术点

  • Prometheus指标
  • Windows性能计数器
  • WMI

项目用途

该项目用于收集Windows机器的各种性能指标,并将这些指标以Prometheus格式提供给监控系统。它包含多个收集器,可以收集不同的指标,例如CPU使用率、内存使用率、磁盘I/O、网络I/O等。用户可以根据需要启用或禁用这些收集器。Windows_exporter使用WMI和Windows性能计数器来收集数据,并将其转换为Prometheus格式。用户可以使用Prometheus和Grafana等工具可视化和分析这些指标,以监控Windows机器的性能和健康状况。

windows_exporter

用于 Windows 机器的 Prometheus exporter。

Collectors

名称 描述 默认启用
ad Active Directory Domain Services  
adcs Active Directory Certificate Services  
adfs Active Directory Federation Services  
cache 缓存指标  
cpu CPU 使用率
cpu_info CPU 信息  
cs "计算机系统" 指标(系统属性、CPU 数量/总内存)
container 容器指标  
dfsr DFSR 指标  
dhcp DHCP 服务器  
dns DNS 服务器  
exchange Exchange 指标  
fsrmquota Microsoft 文件服务器资源管理器(FSRM) 配额采集器  
hyperv Hyper-V 主机  
iis IIS 站点和应用程序  
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 操作系统指标(内存、进程、用户)
process 每个进程的指标  
remote_fx RemoteFX 协议(RDP)指标  
scheduled_task 计划任务指标  
service 服务状态指标
smtp IIS SMTP 服务器  
system 系统调用指标
tcp TCP 连接  
teradici_pcoip Teradici PCoIP 会话指标  
time Windows 时间服务  
thermalzone 温度信息  
terminal_services 终端服务(RDS)  
textfile 从文本文件中读取 Prometheus 指标
vmware_blast VMware Blast 会话指标  
vmware Vmware Guest 代理安装的性能计数器  

有关每个收集器报告的指标、配置设置和使用示例的更多信息,请参见每个收集器的链接文档。### 筛选启用的收集器

默认情况下,windows_exporter将公开启用收集器的所有指标。这是收集指标的推荐方式,以避免比较不同族列的指标时出现错误。

对于高级用途,可以将可选的收集器列表传递给windows_exporter以筛选指标。 collect [] 参数可以多次使用。在Prometheus配置中,您可以在scrape config下使用此语法。

  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 如果为true,则打印可用的收集器并退出。  
--scrape.timeout-margin 客户端允许的超时时间减去的秒数。调整以允许考虑开销或高负载。 0.5
--web.config.file 用于设置TLS和Auth的[Web配置][web_config]

安装

最新版本可以从发布页面下载。

每个版本提供一个.msi安装程序。安装程序将设置windows_exporter作为Windows服务,并在Windows防火墙中创建一个例外。

如果在没有任何参数的情况下运行安装程序,则导出器将使用启用的收集器、端口等默认设置运行。以下参数可用:

名称 描述
ENABLED_COLLECTORS --collectors.enabled标志相同,提供启用的收集器的逗号分隔列表
LISTEN_ADDR 要绑定到的IP地址。默认为0.0.0.0
LISTEN_PORT 要绑定到的端口。默认为9182。
METRICS_PATH 用于服务指标的路径。默认为/metrics
TEXTFILE_DIR --collector.textfile.directory标志相同,提供一个目录,从中读取指标的文本文件
REMOTE_ADDR 允许设置逗号分隔的远程IP地址以用于Windows防火墙例外(允许列表)。默认为空字符串(任何远程地址)。
EXTRA_FLAGS 允许传递完整的CLI标志。默认为空字符串。

通过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\"

Kubernetes实现

在Windows Kubernetes上安装的详细步骤请参见此处

支持的版本

windows_exporter支持Windows Server 2008R2及更高版本和桌面Windows 7及更高版本。

用法

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

使用 --collectors.enabled 参数的 [defaults]

使用 [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"

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 发布。

标签:工具分享