You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prometheus如何通过azure_service_discovery采集Azure VM多端口暴露的指标

方案解答

多端口扫描实现方式

单条azure_sd_configs配置中仅支持指定1个port参数,无法直接在单个服务发现配置中填写多个端口,可通过两种方式实现多端口指标采集:

  • 方式一:创建多个独立采集Job,每个Job对应一个服务的指标端口,各自的azure_sd_configs配置中的port参数填写对应端口即可。该方案优势是每个Job可独立配置采集间隔、指标过滤规则,维护成本低,示例配置如下:
# 采集node_exporter指标的Job
- job_name: "azure-vm-node-exporter"
  azure_sd_configs:
    - authentication_method: "OAuth"
      subscription_id: AZURE_SUBSCRIPTION_ID
      tenant_id: AZURE_TENANT_ID
      client_id: AZURE_CLIENT_ID
      client_secret: AZURE_CLIENT_SECRET
      port: 9100
      refresh_interval: 300s

# 采集自定义业务服务指标的Job
- job_name: "azure-vm-custom-service"
  azure_sd_configs:
    - authentication_method: "OAuth"
      subscription_id: AZURE_SUBSCRIPTION_ID
      tenant_id: AZURE_TENANT_ID
      client_id: AZURE_CLIENT_ID
      client_secret: AZURE_CLIENT_SECRET
      port: 8080 # 替换为实际业务服务的指标暴露端口
      refresh_interval: 300s
  • 方式二:单个Job配合重标记动态生成多端口目标。如果所有端口的采集规则统一,可以在单个Job的azure_sd_configs中随便填写一个占位端口,再通过relabel_configs批量修改目标端口,生成多个端口的采集目标,示例配置如下:
- job_name: "azure-vm-multi-port"
  azure_sd_configs:
    - authentication_method: "OAuth"
      subscription_id: AZURE_SUBSCRIPTION_ID
      tenant_id: AZURE_TENANT_ID
      client_id: AZURE_CLIENT_ID
      client_secret: AZURE_CLIENT_SECRET
      port: 9100 # 占位端口,后续会被重标记覆盖
      refresh_interval: 300s
  relabel_configs:
    # 生成端口为8080的采集目标
    - source_labels: [__address__]
      regex: (.*):\d+
      replacement: $1:8080
      target_label: __address__
      action: replace
    # 可按相同格式添加更多重标记规则,生成其他端口的采集目标

单端口聚合指标实现方式

如果希望Prometheus仅请求一个端口就能采集到VM上所有服务的指标,可选用以下三种成熟方案:

  • 方案A:使用node_exporter的textfile collector。在VM上把所有服务的指标输出到指定目录下的.prom格式文件中,开启node_exporter的textfile collector后,它会自动读取目录下所有指标文件内容,和自身的指标合并后统一暴露在9100端口,原有采集Job无需修改即可获取所有指标,适合自定义业务指标、脚本生成指标的聚合场景。
  • 方案B:使用反向代理映射多路径。在VM上部署Nginx等反向代理服务,把不同服务的指标接口映射到同一端口的不同路径下,比如http://VM_IP:9099/node转发到本地127.0.0.1:9100/metrics,http://VM_IP:9099/service转发到本地127.0.0.1:8080/metrics,Prometheus侧仅需要在SD配置中填写统一的9099端口,配合重标记指定不同路径即可完成采集。
  • 方案C:使用exporter聚合工具。部署exporter_exporter、prometheus-aggregate-exporter这类专用聚合工具,在配置中填写所有需要聚合的后端exporter地址,工具会自动拉取所有后端指标合并后在单一端口暴露,无需修改原有服务的指标输出逻辑,适合多开源exporter的聚合场景。

内容的提问来源于stack exchange,提问作者gm08

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:36:03