菜单
本页目录

应用场景

当某个区域内的exporter比较少时,在该区域安装prometheus节点,再通过联邦集群方式传递给中心节点的架构会造成资源浪费。可考虑使用以下方案,通过nginx反向代理的方式将各个exporter监控指标传递出来,再由中心节点或者级联节点进行采集。这里以windows_exporter为例。 无标题-2023-11-30-1132.png


部署流程

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"
  • 配置说明:
      1. 端口为29182
      1. 配置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;
		    }
    }
}
  • 配置说明:
      1. nginx转发路径与windows_exporter暴露的路径一致
      1. 限制只允许级联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"
  • 配置说明:
      1. 指定metrics路径,不指定时默认为:/metrics
      1. 采集地址为nginx的公网IP+端口
      1. 添加instance标签对原有标签进行覆盖。当nginx转发多个exporter时,由于统一使用nginx进行转发,会造成instance标签重复,导致后续编写的grafana图表出现异常,这里使用内网IP覆盖原有的instance标签。