prometheus.exporter.azure
prometheus.exporter.azure
组件集成了 azure-metrics-exporter
,以从 Azure Monitor 收集指标。
导出器支持 Azure Monitor 定义的 所有指标。您可以在 Azure Monitor 文档 中找到可用的指标完整列表。默认情况下,通过模板 azure_{type}_{metric}_{aggregation}_{unit}
在此集成中公开指标。例如,BlobService 的出口指标将导出为 azure_microsoft_storage_storageaccounts_blobservices_egress_total_bytes
。
导出器提供以下两种收集指标的方式。
- (默认) 使用一个 Azure Resource Graph 查询来识别收集指标的资源。
- 此查询将为每个识别的资源调用一个 API 。
- 有合理数量资源的订阅可能会达到 Azure 施加的 每小时 12000 请求速率限制。
- 设置收集指标的地理位置,并获取这些地理位置中所有资源的指标。
- 此选项将为每个订阅调用一个 API,大大减少了 API 调用次数。
- 这种方法不一定适用于所有资源类型,Azure 也没有记录哪些资源类型是或不是有效的。
- 不支持的资源类型会产生类似
Resource type: microsoft.containerservice/managedclusters not enabled for Cross Resource metrics
的错误。 - 如果您遇到这些错误之一,您必须使用基于默认 Azure Resource Graph 的选项来收集指标。
身份验证
Alloy 必须运行在一个可以访问 Azure 的环境中。导出器使用 Azure SDK for go,并支持 身份验证。
Alloy 使用的账户需要
- 在使用 Azure Resource Graph 查询时,读取 Resource Graph 将要查询的资源 的权限。
- 调用 Microsoft.Insights Metrics API 的权限,应具有
Microsoft.Insights/Metrics/Read
权限。
用法
prometheus.exporter.azure LABEL {
subscriptions = [
SUB_ID_1,
SUB_ID_2,
...
]
resource_type = RESOURCE_TYPE
metrics = [
METRIC_1,
METRIC_2,
...
]
}
参数
您可以使用以下参数配置导出器的行为。省略的字段将采用其默认值。
名称 | 类型 | 描述 | 默认 | 必需 |
---|---|---|---|---|
订阅 | list(string) | 要从其抓取指标的订阅列表。 | 是 | |
resource_type | string | 要抓取指标的 Azure 资源类型。 | 是 | |
metrics | list(string) | 要从资源抓取的指标。 | 是 | |
resource_graph_query_filter | string | Kusto 查询过滤器,在搜索资源时应用。如果设置了 regions ,则不能使用。 | 否 | |
regions | list(string) | 用于收集指标的区域列表。启用后,可收集订阅中所有资源的指标。如果设置了 resource_graph_query_filter ,则不能使用。 | 否 | |
metric_aggregations | list(string) | 应用于生成的指标的计算。 | 否 | |
timespan | string | ISO8601 持续时间,在这个时间段内查询指标。 | "PT1M" (1分钟) | 否 |
included_dimensions | list(string) | 要在最终指标中包含的维度列表。 | 否 | |
included_resource_tags | list(string) | 要在最终指标中包含的资源标签列表。 | ["owner"] | 否 |
metric_namespace | string | 为具有多个级别指标的 resource_type 指定的名称空间。 | 否 | |
azure_cloud_environment | string | 要连接的云环境名称。 | "azurecloud" | 否 |
metric_name_template | string | 用于公开指标的指标模板。 | "azure_{type}_{metric}_{aggregation}_{unit}" | 否 |
metric_help_template | string | 指标的描述。 | "Azure 指标 {metric},针对 {type},聚合 {aggregation},单位 {unit}" | 否 |
validate_dimensions | bool | 在 azure sdk 中启用维度验证。 | false | 否 |
可用的 resource_type
值及其对应的 metrics
列表可以在 Azure Monitor 详解 中找到。
您订阅中可用的 regions
列表可以通过运行 azure CLI 命令 az account list-locations --query '[].name'
查找。
resource_graph_query_filter
可以嵌入到模板查询中,例如 Resources | where type =~ "<resource_type>" <resource_graph_query_filter> | project id, tags
。
metric_aggregations
的有效值为 minimum
、maximum
、average
、total
和 count
。如果没有指定聚合,则从指标中检索值。
例如,Microsoft.ClassicStorage/storageAccounts 中指标 Availability
的聚合值是 average
。
每个指标都有自己的维度集。
例如,Microsoft.ClassicStorage/storageAccounts 中指标 Availability
的维度是 GeoType
、ApiName
和 Authentication
。
如果请求单个维度,则该维度的名称为 dimension
。如果请求多个维度,它们将具有名称 dimension<dimension_name>
。
included_resource_tags
中的标签将作为具有名称 tag_<tag_name>
的标签添加。
azure_cloud_environment
的有效值为 azurecloud
、azurechinacloud
、azuregovernmentcloud
和 azurepprivatecloud
。
validate_dimensions
默认禁用,以减少当 resource_type
有维尺度的指标时所需的 Azure 导出实例数量。当启用 validate_dimensions
时,您将需要为每个指标+维度组合都需要一个导出实例,这更多需要维护。
导出字段
以下字段将被导出,并可供其他组件引用。
名称 | 类型 | 描述 |
---|---|---|
targets | list(map(string)) | 可以用于收集导出指标的目标。 |
例如,可以将 targets
传递给 discovery.relabel
组件来重写目标的标签集,或者传递给 prometheus.scrape
组件来收集暴露的指标。
导出的目标使用由 内存流量地址 指定的配置,该地址由 运行命令 指定。
组件健康状态
prometheus.exporter.azure
只在遇到无效配置时才会被报告为不健康。在这种情况下,导出的字段保留其最后一个健康值。
调试信息
prometheus.exporter.azure
不暴露任何特定于组件的调试信息。
调试指标
prometheus.exporter.azure
不暴露任何特定于组件的调试指标。
示例
prometheus.exporter.azure "example" {
subscriptions = SUBSCRIPTIONS
resource_type = "Microsoft.Storage/storageAccounts"
regions = [
"westeurope",
]
metric_namespace = "Microsoft.Storage/storageAccounts/blobServices"
metrics = [
"Availability",
"BlobCapacity",
"BlobCount",
"ContainerCount",
"Egress",
"IndexCapacity",
"Ingress",
"SuccessE2ELatency",
"SuccessServerLatency",
"Transactions",
]
included_dimensions = [
"ApiName",
"TransactionType",
]
timespan = "PT1H"
}
// Configure a prometheus.scrape component to send metrics to.
prometheus.scrape "demo" {
targets = prometheus.exporter.azure.example.targets
forward_to = [prometheus.remote_write.demo.receiver]
}
prometheus.remote_write "demo" {
endpoint {
url = PROMETHEUS_REMOTE_WRITE_URL
basic_auth {
username = USERNAME
password = PASSWORD
}
}
}
替换以下内容
SUBSCRIPTIONS
:包含您感兴趣资源的 Azure 订阅 ID。PROMETHEUS_REMOTE_WRITE_URL
:将指标发送到兼容 Prometheus remote_write 服务器 的 URL。USERNAME
:用于对远程_write API 进行身份验证的用户名。PASSWORD
:用于对远程_write API 进行身份验证的密码。
兼容组件
prometheus.exporter.azure
有可以由以下组件消费的导出内容
- 消费 目标 的组件
注意
连接某些组件可能不合理,或者组件可能需要进一步的配置以正确连接。请参阅相关文档以获取更多详细信息。