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

如何配置Docker中的Prometheus容器拉取Azure服务监控指标?

配置Docker版Prometheus集成Azure Monitor Exporter监控Azure服务

1. 前置准备(Azure侧)

  • 创建Azure服务主体,授予Monitoring Reader角色(可选择订阅或资源组级别,按需分配)
  • 记录以下关键信息:
    • tenant_id:Azure租户ID
    • client_id:服务主体的应用ID
    • client_secret:服务主体的密钥
    • subscription_id:待监控资源所属的Azure订阅ID

2. 部署Azure Monitor Exporter(Docker编排方式)

推荐用docker-compose同时编排Prometheus和Azure Monitor Exporter,便于统一管理。

示例:docker-compose.yml配置

version: '3.8'
services:
  azure-monitor-exporter:
    image: quay.io/prometheuscommunity/azure-monitor-exporter:latest
    container_name: azure-monitor-exporter
    environment:
      - AZURE_TENANT_ID=<你的tenant_id>
      - AZURE_CLIENT_ID=<你的client_id>
      - AZURE_CLIENT_SECRET=<你的client_secret>
      - AZURE_SUBSCRIPTION_ID=<你的subscription_id>
    command:
      - '--config.file=/config/config.yml'
    volumes:
      - ./exporter-config.yml:/config/config.yml
    ports:
      - "9276:9276"

  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    ports:
      - "9090:9090"
    depends_on:
      - azure-monitor-exporter

编写Exporter指标配置文件(exporter-config.yml)

该文件定义需要拉取的Azure服务指标,以下是PostgreSQL和Blob Storage的示例:

metrics:
  - namespace: "Microsoft.DBforPostgreSQL/servers"
    name: "*"
    resources:
      - resource_group: "<PostgreSQL实例所在资源组>"
        resource_name: "<PostgreSQL实例名称>"
    aggregation:
      - average
      - total
    interval: "PT1M"

  - namespace: "Microsoft.Storage/storageAccounts"
    name: "*"
    resources:
      - resource_group: "<Blob存储账户所在资源组>"
        resource_name: "<存储账户名称>"
    aggregation:
      - average
      - total
    interval: "PT1M"
  • namespace:对应Azure服务的资源命名空间,可在Azure Monitor指标页面查询具体值
  • name: "*":拉取该服务下所有指标,也可指定具体指标名(如storage/BlobCapacity)减少负载
  • interval:指标拉取间隔,最小支持1分钟(PT1M)

3. 配置Prometheus拉取Exporter指标

修改prometheus.yml,添加针对Azure Monitor Exporter的scrape任务:

global:
  scrape_interval: 1m

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'azure-monitor-exporter'
    static_configs:
      - targets: ['azure-monitor-exporter:9276']
    scrape_interval: 1m

因处于同一Docker网络,直接使用容器名azure-monitor-exporter作为目标地址即可。

4. 启动服务并验证

  • 执行docker-compose up -d启动所有容器
  • 访问http://<你的主机IP>:9090/targets,检查azure-monitor-exporter的状态是否为UP
  • 在Prometheus的Graph页面查询指标,例如:
    • PostgreSQL连接数:azure_monitor_microsoft_dbforpostgresql_servers_connections_average
    • Blob存储容量:azure_monitor_microsoft_storage_storageaccounts_storage_blobcapacity_total

关键注意事项

  • 权限校验:确保服务主体拥有对应资源的Monitoring Reader权限,多订阅场景需在每个订阅单独授权
  • 指标精简:避免拉取所有指标,按需指定具体指标名可显著降低系统负载
  • 版本稳定性:优先选择Exporter的稳定版本,避免使用latest标签带来的兼容性问题
  • 日志排查:若Exporter状态异常,可通过docker logs azure-monitor-exporter查看日志,定位认证或配置错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 08:05:26