如何配置Docker中的Prometheus容器拉取Azure服务监控指标?
配置Docker版Prometheus集成Azure Monitor Exporter监控Azure服务
1. 前置准备(Azure侧)
- 创建Azure服务主体,授予Monitoring Reader角色(可选择订阅或资源组级别,按需分配)
- 记录以下关键信息:
tenant_id:Azure租户IDclient_id:服务主体的应用IDclient_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
- PostgreSQL连接数:
关键注意事项
- 权限校验:确保服务主体拥有对应资源的Monitoring Reader权限,多订阅场景需在每个订阅单独授权
- 指标精简:避免拉取所有指标,按需指定具体指标名可显著降低系统负载
- 版本稳定性:优先选择Exporter的稳定版本,避免使用
latest标签带来的兼容性问题 - 日志排查:若Exporter状态异常,可通过
docker logs azure-monitor-exporter查看日志,定位认证或配置错误
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

