应用场景
当某个区域内的exporter比较少时,在该区域安装prometheus节点,再通过联邦集群方式传递给中心节点的架构会造成资源浪费。可考虑使用以下方案,通过nginx反向代理的方式将各个exporter监控指标传递出来,再由中心节点或者级联节点进行采集。这里以windows_exporter为例。
部署流程
1 Windows Exporter 配置
config.yml配置
collectors:
enabled: cpu,os,cs,net,service,process,system,logical_disk
collector:
service:
services-where: "Name='windows_exporter'"
process:
whitelist: ".*"
blacklist: "system"
web:
listen-address: ":29182"
log:
level: warn
telemetry:
path: "/test-metrics"
- 配置说明:
-
- 端口为29182
-
- 配置windows_exporter暴露的路径为/test-metrics
-
2 配置 Nginx 进行转发
nginx.conf配置
http {
....
server {
listen 29600;
server_name localhost;
....
location /test-metrics {
# 限制IP访问
allow 127.0.0.1;
deny all;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:29182/test-metrics;
}
}
}
- 配置说明:
-
- nginx转发路径与windows_exporter暴露的路径一致
-
- 限制只允许级联prometheus的IP进行采集
-
3 级联 Prometheus 采集配置
prometheus.yml
- job_name: 'Windows-test'
scrape_interval: 60s
metrics_path: '/test-metrics'
static_configs:
- targets: ['公网IP:端口']
labels:
hostname: 测试服务器
instance: "172.16.0.1:29182"
- 配置说明:
-
- 指定metrics路径,不指定时默认为:/metrics
-
- 采集地址为nginx的公网IP+端口
-
- 添加instance标签对原有标签进行覆盖。当nginx转发多个exporter时,由于统一使用nginx进行转发,会造成instance标签重复,导致后续编写的grafana图表出现异常,这里使用内网IP覆盖原有的instance标签。
-