windows_exporter部署

1、下载部署文件

https://github.com/prometheus-community/windows_exporteropen in new window

2、部署

windows_exporter-0.25.1-amd64.exe 拷贝到C盘根目录下

管理员方式运行CMD

sc create windows_exporter binpath= C:\windows_exporter-0.25.1-amd64.exe type= own start= auto displayname= windows_exporter

sc create的用法说明:

C:\Users\Administrator>sc create
描述:
        在注册表和服务数据库中创建服务项。
用法:
        sc <server> create [service name] [binPath= ] <option1> <option2>...
 
选项:
注意: 选项名称包括等号。
      等号和值之间需要一个空格。
 type= <own|share|interact|kernel|filesys|rec>
       (默认 = own)
 start= <boot|system|auto|demand|disabled|delayed-auto>
       (默认 = demand)
 error= <normal|severe|critical|ignore>
       (默认 = normal)
 binPath= <BinaryPathName>
 group= <LoadOrderGroup>
 tag= <yes|no>
 depend= <依存关系(以 / (斜杠) 分隔)>
 obj= <AccountName|ObjectName>
       (默认 = LocalSystem)
 DisplayName= <显示名称>
 password= <密码>

服务注册成功之后,我们可以在Windows服务列表里面看到我们注册的windows_exporter服务

选中服务,然后在右键菜单中点击属性,在属性对话框输入启动参数:

--telemetry.addr=10.0.0.1:端口

这里的IP地址,可以写虚拟机的实际IP地址

3、删除部署服务

如果想删除这个服务,只需要在服务列表里面将此服务停掉,然后服务启动设置为手动,最后在cmd命令行窗口输入下面的命令,即可删除服务。

sc delete windows_exporter

4、采集指标

名称说明是否默认开启
adActive Directory Domain Services×
adcsActive Directory Certificate Services×
adfsActive Directory Federation Services×
cacheCache metrics×
cpuCPU usage
cpu_infoCPU Information×
cs“Computer System” metrics(system properties, num cpu / total memory)
containerContainer metrics×
dfsrDFSR metrics×
dhcpDHCP Server×
dnsDNS Server×
exchangeExchange metrics×
hypervHyper-V hosts×
iisIIS sites and applications×
logical_diskLogical disks, disk I/O
logonUser logon sessions×
memoryMemory usage metrics×
msmqMSMQ queues×
mssqlSQL Server Performance Objects metrics×
netframework_clrexceptions.NET Framework CLR Exceptions×
netframework_clrinterop.NET Framework Interop Metrics×
netframework_clrjit.NET Framework JIT metrics×
netframework_clrloading.NET Framework CLR Loading metrics×
netframework_clrlocksandthreads.NET Framework locks and metrics threads×
netframework_clrmemory.NET Framework Memory metrics×
netframework_clrremoting.NET Framework Remoting metrics×
netframework_clrsecurity.NET Framework Security Check metrics×
netNetwork interface I/O
osOS metrics (memory, processes, users)
processPer-process metrics×
remote_fxRemoteFX protocol (RDP) metrics×
serviceService state metrics
smtpIIS SMTP Server×
systemSystem calls
tcpTCP connections×
timeWindows Time Service×
thermalzoneThermal information×
terminal_servicesTerminal services (RDS)×
textfileRead prometheus metrics from a text file
vmwarePerformance counters installed by the Vmware Guest agent×

5、配置其他指标

默认收集只收集了cpu,cs,logical_disk,net,os,service,system,textfile相关的指标,若要开启其他的,需配置—collectors.enabled

1.新增C:\config.yml文件

collectors:
  enabled: "[defaults],process,cpu_info,memory,remote_fx,tcp"
collector:
  service:
    services-where: "Name='windows_exporter'"
log:
  level: warn

2.修改windows启动参数

sc config   windows_exporter  binPath= "\"C:\windows_exporter-0.25.1-amd64.exe\" --config.file=\"C:\config.yml\" "

3.重启windows_exporter服务

sc stop windows_exporter
sc start windows_exporter

6、批处理安装脚本

@ECHO OFF
mode con cols=60 lines=20
setlocal EnableDelayedExpansion
color 0E
title windows_exporter配置
PUSHD %~DP0 & cd /d "%~dp0"
%1 %2
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :runas","","runas",1)(window.close)&goto :eof
:runas  
::上面是以管理员模式运行
::下面是填写自己的脚本
cls
::启动windows_exporter
set exporter=windows_exporter-0.25.1-amd64.exe
set port=9180
set serve=windows_exporter
set remote_ip=10.201.216.85

echo 设置windows_exporter为服务

sc create %serve% binPath= "\"C:\%exporter%\" --web.listen-address=:%port%" type= own start= auto displayname= %serve%

echo 启动服务
REM 检查服务是否已存在并尝试启动
sc query %serve% | findstr /I "RUNNING" > nul
if %errorlevel% NEQ 0 (
    REM 服务没有启动,正在启动中...
    net start %serve%
) else (
	REM 服务已经停止中.
	net stop %serve%
	sc config %serve% binPath= "\"C:\%exporter%\" --web.listen-address=:%port%" type= own start= auto displayname= %serve%
    REM 服务已经重新启动中.
    net start %serve%
)

::添加防火墙action=block禁止  allow允许
netsh advfirewall firewall delete rule name="%serve%"
echo 防火墙添加 远程端口%port% 成功
netsh advfirewall firewall add rule name="%serve%" dir=in action=allow protocol=tcp localport=%port% remoteip=%remote_ip% 
echo.
echo 部署完成按任意键关闭
pause >nul
del /f %~f0