
webdevops/azure-metrics-exporterAzure Insights metrics exporter 是一款 Prometheus 导出器,用于按需抓取 Azure Insights 指标。支持通过单次抓取从所有资源获取指标(自动服务发现),并支持指标维度,配置完全通过 Prometheus 完成,无需单独的配置文件。
Microsoft.Cache/Redis、Microsoft.Network/virtualNetworkGateways 等)| 参数名称 | 命令行选项 | 默认值 | 环境变量 | 描述 |
|---|---|---|---|---|
| 调试模式 | --debug | 禁用 | DEBUG | 启用调试模式 |
| 详细模式 | -v, --verbose | 禁用 | VERBOSE | 启用详细日志输出 |
| JSON 日志格式 | --log.json | 禁用 | LOG_JSON | 将日志输出切换为 JSON 格式 |
| Azure 环境名称 | --azure-environment | AZUREPUBLICCLOUD | AZURE_ENVIRONMENT | Azure 环境名称(如 Azure 中国云为 AZURECHINACLOUD) |
| 订阅并发数 | --concurrency.subscription | 5 | CONCURRENCY_SUBSCRIPTION | 并发订阅抓取数 |
| 资源并发数 | --concurrency.subscription.resource | 10 | CONCURRENCY_SUBSCRIPTION_RESOURCE | 每个订阅内的并发资源请求数 |
| 启用缓存 | --enable-caching | 禁用 | ENABLE_CACHING | 启用内部指标缓存 |
| 服务绑定地址 | --bind | :8080 | SERVER_BIND | 导出器服务绑定地址(格式:IP:端口) |
通过环境变量配置 Azure API 认证,支持 Azure SDK for Go 提供的所有认证方式,详情参考 Azure SDK for Go 认证文档。常用认证环境变量:
AZURE_CLIENT_ID:服务主体客户端 IDAZURE_CLIENT_SECRET:服务主体客户端密钥AZURE_TENANT_ID:Azure 租户 IDAZURE_SUBSCRIPTION_ID:目标 Azure 订阅 ID| 指标名称 | 描述 |
|---|---|
azurerm_stats_metric_collecttime | 导出器通用统计信息(如抓取耗时) |
azurerm_stats_metric_requests | 资源指标请求计数器(包含结果标签:error/success) |
azurerm_resource_metric | 探测端点导出的资源指标(可通过 name 参数自定义指标名称) |
azurerm_loganalytics_query_result | LogAnalytics 查询结果导出的指标(按行计数) |
| 端点路径 | 描述 |
|---|---|
/metrics | 默认 Prometheus Go 运行时指标(如内存、CPU 使用率) |
/probe/metrics/resource | 单资源指标探测端点(对应 azurerm_resource_metric) |
/probe/metrics/list | 资源列表指标探测端点(对应 azurerm_resource_metric) |
/probe/metrics/scrape | 基于资源标签配置的指标探测端点(对应 azurerm_resource_metric) |
/probe/loganalytics/query | LogAnalytics 查询结果探测端点(对应 azurerm_loganalytics_query_result) |
/probe/metrics/resource 参数| GET 参数 | 默认值 | 是否必填 | 支持多值 | 描述 |
|---|---|---|---|---|
subscription | - | 是 | 是 | Azure 订阅 ID |
target | - | 是 | 是 | Azure 资源 URI(如 /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Cache/Redis/{name}) |
timespan | PT1M | 否 | 否 | 指标时间范围(如 PT5M 表示过去 5 分钟) |
interval | - | 否 | 否 | 指标采样间隔 |
metric | - | 否 | 是 | 指标名称(可指定多个,用逗号分隔或重复参数) |
aggregation | - | 否 | 是 | 指标聚合方式(支持 minimum/maximum/average/total/count,可指定多个) |
name | azurerm_resource_metric | 否 | 否 | Prometheus 指标名称 |
metricFilter | - | 否 | 否 | 指标维度筛选器(如 ConnectionName eq 'my-connection') |
metricTop | - | 否 | 否 | 维度结果数量限制(整数) |
metricOrderBy | - | 否 | 否 | 维度结果排序字段(如 avg(value) desc) |
cache | 与 timespan 相同 | 否 | 否 | 缓存有效期 |
/probe/metrics/list 参数| GET 参数 | 默认值 | 是否必填 | 支持多值 | 描述 |
|---|---|---|---|---|
subscription | - | 是 | 是 | Azure 订阅 ID(可指定多个,用逗号分隔或重复参数) |
filter | - | 是 | 否 | Azure 资源筛选器(遵循 Azure 资源列表 API 筛选语法) |
timespan | PT1M | 否 | 否 | 指标时间范围 |
interval | - | 否 | 否 | 指标采样间隔 |
metric | - | 否 | 是 | 指标名称(可指定多个) |
aggregation | - | 否 | 是 | 指标聚合方式(支持多个) |
name | azurerm_resource_metric | 否 | 否 | Prometheus 指标名称 |
metricFilter | - | 否 | 否 | 指标维度筛选器 |
metricTop | - | 否 | 否 | 维度结果数量限制 |
metricOrderBy | - | 否 | 否 | 维度结果排序字段 |
cache | 与 timespan 相同 | 否 | 否 | 缓存有效期 |
/probe/metrics/scrape 参数| GET 参数 | 默认值 | 是否必填 | 支持多值 | 描述 |
|---|---|---|---|---|
subscription | - | 是 | 是 | Azure 订阅 ID(可指定多个) |
filter | - | 是 | 否 | Azure 资源筛选器(遵循 Azure 资源列表 API 语法) |
metricTagName | - | 是 | 否 | 资源标签名称,用于从标签值获取指标列表 |
aggregationTagName | - | 是 | 否 | 资源标签名称,用于从标签值获取聚合方式列表 |
timespan | PT1M | 否 | 否 | 指标时间范围 |
interval | - | 否 | 否 | 指标采样间隔 |
metric | - | 否 | 是 | 指标名称(可指定多个) |
aggregation | - | 否 | 是 | 指标聚合方式(支持多个) |
name | azurerm_resource_metric | 否 | 否 | Prometheus 指标名称 |
metricFilter | - | 否 | 否 | 指标维度筛选器 |
metricTop | - | 否 | 否 | 维度结果数量限制(整数) |
metricOrderBy | - | 否 | 否 | 维度结果排序字段 |
cache | 与 timespan 相同 | 否 | 否 | 缓存有效期 |
/probe/loganalytics/query 参数| GET 参数 | 默认值 | 是否必填 | 描述 |
|---|---|---|---|
workspace | - | 是 | Azure LogAnalytics 工作区 ID |
query | - | 是 | LogAnalytics 查询语句(如 `AzureMetrics |
timespan | - | 是 | 查询时间范围(如 PT1H 表示过去 1 小时) |
docker run 命令示例bashdocker run -d \ --name azure-metrics-exporter \ -p 8080:8080 \ -e AZURE_CLIENT_ID="your-client-id" \ -e AZURE_CLIENT_SECRET="your-client-secret" \ -e AZURE_TENANT_ID="your-tenant-id" \ -e SERVER_BIND=":8080" \ -e CONCURRENCY_SUBSCRIPTION="5" \ -e ENABLE_CACHING="true" \ webdevops/azure-metrics-exporter
yamlversion: '3' services: azure-metrics-exporter: image: webdevops/azure-metrics-exporter container_name: azure-metrics-exporter ports: - "8080:8080" environment: - AZURE_CLIENT_ID=your-client-id - AZURE_CLIENT_SECRET=your-client-secret - AZURE_TENANT_ID=your-tenant-id - AZURE_ENVIRONMENT=AZUREPUBLICCLOUD # 如使用中国云,改为 AZURECHINACLOUD - SERVER_BIND=:8080 - CONCURRENCY_SUBSCRIPTION=5 - CONCURRENCY_SUBSCRIPTION_RESOURCE=10 - ENABLE_CACHING=true - LOG_JSON=false # 如需 JSON 日志,设为 true restart: unless-stopped
yaml- job_name: azure-metrics-redis scrape_interval: 1m metrics_path: /probe/metrics/list params: name: ["my_redis_metric"] # 自定义指标名称 subscription: - xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx # 替换为实际订阅 ID filter: ["resourceType eq 'Microsoft.Cache/Redis'"] # 筛选 Redis 资源 metric: - connectedclients # 连接客户端数 - totalcommandsprocessed # 总命令处理数 - cachehits # 缓存命中数 - cachemisses # 缓存未命中数 - usedmemory # 内存使用量 - usedmemorypercentage # 内存使用率 interval: ["PT1M"] # 采样间隔:1 分钟 timespan: ["PT1M"] # 时间范围:过去 1 分钟 aggregation: - average # 平均值 - total # 总和 static_configs: - targets: ["azure-metrics-exporter:8080"] # 导出器服务地址
yaml- job_name: azure-metrics-virtualNetworkGateways scrape_interval: 1m metrics_path: /probe/metrics/list params: name: ["my_vng_metric"] # 自定义指标名称 subscription: - xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx # 替换为实际订阅 ID filter: ["resourceType eq 'Microsoft.Network/virtualNetworkGateways'"] # 筛选虚拟网络网关 metric: - AverageBandwidth # 平均带宽 - P2SBandwidth # P2S 带宽 - P2SConnectionCount # P2S 连接数 - TunnelAverageBandwidth # 隧道平均带宽 - TunnelEgressBytes # 隧道出口字节数 - TunnelIngressBytes # 隧道入口字节数 interval: ["PT5M"] # 采样间隔:5 分钟 timespan: ["PT5M"] # 时间范围:过去 5 分钟 aggregation: - average # 平均值 - total # 总和 static_configs: - targets: ["azure-metrics-exporter:8080"] # 导出器服务地址
yaml- job_name: azure-metrics-virtualNetworkGateways-connections scrape_interval:1m metrics_path: /probe/metrics/list params: name: ["my_vng_connection_metric"] # 自定义指标名称 subscription: - xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx # 替换为实际订阅 ID filter: ["resourceType eq 'Microsoft.Network/virtualNetworkGateways'"] # 筛选虚拟网络网关 metric: - TunnelAverageBandwidth # 隧道平均带宽 - TunnelEgressBytes # 隧道出口字节数 - TunnelIngressBytes # 隧道入口字节数 interval: ["PT5M"] # 采样间隔:5 分钟 timespan: ["PT5M"] # 时间范围:过去 5 分钟 aggregation: - average # 平均值 - total # 总和 metricFilter: ["ConnectionName eq '*'"] # 筛选所有连接 metricTop: ["10"] # 最多返回 10 个连接的维度结果 static_configs: - targets: ["azure-metrics-exporter:8080"] # 导出器服务地址
注:所有示例中的订阅 ID、资源筛选器、指标名称等需根据实际 Azure 环境替换。支持的 Azure 指标列表可参考 Azure 指标支持文档。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务