系列文章目录
第一章:超详细 CentOS7安装部署Prometheus及其简单使用(exporter、探针、告警)
第二章:超详细 Centos7下Prometheus Alertmanager配置钉钉告警与邮箱告警(已亲手验证)
第三章:CentOS7中Prometheus PushGateway的使用
第四章:Prometheus结合Consul实现自助服务发现
第五章:CentOS7中使用Prometheus 集成 mtail 实现错误日志采集
扩展:CentOS7中使用Prometheus Process-exporter监控进程状态
扩展(当前):CentOS7中使用Prometheus监控Windows主机
一、简介
windows_exporter 由 Prometheus Community 维护windows_exporter是一个采集Windows 机器指标的采集器。支持 Windows Server 2008R2 以上版本和 Windows 7 以上版本。
windows_exporter 官网
https://githubfast.com/prometheus-community/windows_exporter
二、步骤
前置准备:一定要先关闭windows的防火墙!!!
前置准备:一定要先关闭windows的防火墙!!!
前置准备:一定要先关闭windows的防火墙!!!
1、下载windows_exporter-0.20.0-amd64.exe
在虚拟机中下载
wget https://githubfast.com/prometheus-community/windows_exporter/releases/download/v0.20.0/windows_exporter-0.20.0-amd64.exe
下载好后将其移动到你的windows主机上,并将其放在D盘根目录
2、cmd 下将windows_exporter注册为Windows系统服务
win+s搜索cmd,使用管理员身份打开命令提示符
执行下面命令将其注册为系统服务
sc create windows_exporter binpath=D:\windows_exporter-0.20.0-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_exporter服务注册成功Windows服务列表查看windows_exporter服务
选中windows_exporter服务,右键菜单中点击属性,在属性对话框输入启动参数:
--telemetry.addr=0.0.0.0:9182
删除 windows_exporter 服务的命令
sc delete windows_exporter
3、查看 windows_exporter metrics 采集指标
windows_exporter默认端口是9182
http://127.0.0.1:9182/metrics
4、Prometheus 添加 windows_exporter 节点监控
vim /usr/local/prometheus/prometheus.yml
注意下面的地址填写VMnet8的IPv4地址,在windows的cmd中使用ipconfig命令查看
- job_name: "windows-node"
scrape_interval: 60s
static_configs:
- targets: ['VMnet8的IPv4地址:9182']
labels:
project: windows_node_exporter
relabel_configs:
- source_labels: [__address__]
target_label: instance
5、检查Prometheus配置文件
/usr/local/prometheus/promtool check config /usr/local/prometheus/prometheus.yml
6、Prometheus 热加载配置
curl -X POST http://127.0.0.1:9090/-/reload
7、查看Prometheus的web界面
三、Prometheus Windows 指标查询
CPU利用率
100 - (avg by (instance,job) (irate(windows_cpu_time_total{mode="idle"}[2m])) * 100)
剩余内存
windows_os_physical_memory_free_bytes /1024/1024/1024
内存利用率
100 - 100 * windows_os_physical_memory_free_bytes / windows_cs_physical_memory_bytes
硬盘使用率
100- 100 * (windows_logical_disk_free_bytes / windows_logical_disk_size_bytes)
预测硬盘使用天数
100 * (windows_logical_disk_free_bytes / windows_logical_disk_size_bytes) < 15 and predict_linear(windows_logical_disk_free_bytes[6h], 4 * 24 * 3600)
网卡sent速率
((sum(rate (windows_net_bytes_sent_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (instance,job)) / 100)
网卡received速率
((sum(rate (windows_net_bytes_received_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (instance,job)) / 100)
四、Prometheus Windows Rule 告警规则
1、创建告警rule
vim /usr/local/prometheus/rules/windows_node_exporter.yml
groups:
- name: Windows服务器资源监控
rules:
- alert: CPU高负荷
expr: 100 - (avg by (instance,job) (irate(windows_cpu_time_total{mode="idle"}[2m])) * 100) > 30
for: 5m
labels:
severity: critical
annotations:
summary: "{{$labels.instance}} CPU使用率过高,请尽快处理!"
description: "{{$labels.instance}} CPU使用大于90%,当前使用率{{ $value }}%. "
- alert: 内存使用率过高
expr: 100 - 100 * windows_os_physical_memory_free_bytes / windows_cs_physical_memory_bytes > 30
for: 5m
labels:
severity: critical
annotations:
summary: "{{ $labels.instance }} 内存使用率过高,请尽快处理!"
description: "{{ $labels.instance }}内存使用率超过30%,当前使用率{{ $value }}%."
- alert: 服务器宕机
expr: up{project=~"windows_node_exporter"} == 0
for: 3m
labels:
severity: critical
annotations:
summary: "{{$labels.instance}} 服务器宕机,请尽快处理!"
description: "{{$labels.instance}} 服务器延时超过3分钟,当前状态{{ $value }}. "
- alert: VNC 服务异常
expr: windows_service_state{name=~"vncserver",state="running"} == 0
for: 3m
labels:
severity: critical
annotations:
summary: "Service {{ $labels.name }} down"
description: "Service [{{ $labels.name }}] on instance {{ $labels.instance }} has been down for more than 3 minutes."
- alert: 网络流入received
expr: ((sum(rate (windows_net_bytes_received_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (instance,job)) / 100) > 10240
for: 5m
labels:
severity: critical
annotations:
summary: "{{$labels.instance}} 流入网络带宽过高,请尽快处理!"
description: "{{$labels.instance}} 流入网络带宽持续5分钟高于10M. RX带宽使用量{{$value}}."
- alert: 网络流出sent
expr: ((sum(rate (windows_net_bytes_sent_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (instance,job)) / 100) > 10240
for: 5m
labels:
severity: critical
annotations:
summary: "{{$labels.instance}} 流出网络带宽过高,请尽快处理!"
description: "{{$labels.instance}} 流出网络带宽持续5分钟高于10M. RX带宽使用量{{ $value }}."
- alert: 磁盘容量
expr: 100 - 100 * (windows_logical_disk_free_bytes{volume=~"C:|D:|E:|F:"} / windows_logical_disk_size_bytes{volume=~"C:|D:|E:|F:"}) > 80
for: 1m
labels:
severity: critical
annotations:
summary: "{{$labels.mountpoint}} 磁盘分区使用率过高,请尽快处理!"
description: "{{$labels.instance}} {{$labels.volume}} 磁盘分区使用大于80%,当前使用率{{ $value }}%."
2、检查rule文件格式
/usr/local/prometheus/promtool check rules /usr/local/prometheus/rules/windows_node_exporter.yml
3、Prometheus热加载配置文件
curl -X POST http://127.0.0.1:9090/-/reload