菜单
开源

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

导出器提供以下两种收集指标的方式。

  1. (默认) 使用一个 Azure Resource Graph 查询来识别收集指标的资源。
    1. 此查询将为每个识别的资源调用一个 API 。
    2. 有合理数量资源的订阅可能会达到 Azure 施加的 每小时 12000 请求速率限制
  2. 设置收集指标的地理位置,并获取这些地理位置中所有资源的指标。
    1. 此选项将为每个订阅调用一个 API,大大减少了 API 调用次数。
    2. 这种方法不一定适用于所有资源类型,Azure 也没有记录哪些资源类型是或不是有效的。
    3. 不支持的资源类型会产生类似 Resource type: microsoft.containerservice/managedclusters not enabled for Cross Resource metrics 的错误。
    4. 如果您遇到这些错误之一,您必须使用基于默认 Azure Resource Graph 的选项来收集指标。

身份验证

Alloy 必须运行在一个可以访问 Azure 的环境中。导出器使用 Azure SDK for go,并支持 身份验证

Alloy 使用的账户需要

用法

alloy
prometheus.exporter.azure LABEL {
        subscriptions = [
                SUB_ID_1,
                SUB_ID_2,
                ...
        ]

        resource_type = RESOURCE_TYPE

        metrics = [
                METRIC_1,
                METRIC_2,
                ...
        ]
}

参数

您可以使用以下参数配置导出器的行为。省略的字段将采用其默认值。

名称类型描述默认必需
订阅list(string)要从其抓取指标的订阅列表。
resource_typestring要抓取指标的 Azure 资源类型。
metricslist(string)要从资源抓取的指标。
resource_graph_query_filterstringKusto 查询过滤器,在搜索资源时应用。如果设置了 regions,则不能使用。
regionslist(string)用于收集指标的区域列表。启用后,可收集订阅中所有资源的指标。如果设置了 resource_graph_query_filter,则不能使用。
metric_aggregationslist(string)应用于生成的指标的计算。
timespanstringISO8601 持续时间,在这个时间段内查询指标。"PT1M"(1分钟)
included_dimensionslist(string)要在最终指标中包含的维度列表。
included_resource_tagslist(string)要在最终指标中包含的资源标签列表。["owner"]
metric_namespacestring为具有多个级别指标的 resource_type 指定的名称空间。
azure_cloud_environmentstring要连接的云环境名称。"azurecloud"
metric_name_templatestring用于公开指标的指标模板。"azure_{type}_{metric}_{aggregation}_{unit}"
metric_help_templatestring指标的描述。"Azure 指标 {metric},针对 {type},聚合 {aggregation},单位 {unit}"
validate_dimensionsbool在 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 的有效值为 minimummaximumaveragetotalcount。如果没有指定聚合,则从指标中检索值。

例如,Microsoft.ClassicStorage/storageAccounts 中指标 Availability 的聚合值是 average

每个指标都有自己的维度集。

例如,Microsoft.ClassicStorage/storageAccounts 中指标 Availability 的维度是 GeoTypeApiNameAuthentication

如果请求单个维度,则该维度的名称为 dimension。如果请求多个维度,它们将具有名称 dimension<dimension_name>

included_resource_tags 中的标签将作为具有名称 tag_<tag_name> 的标签添加。

azure_cloud_environment 的有效值为 azurecloudazurechinacloudazuregovernmentcloudazurepprivatecloud

validate_dimensions 默认禁用,以减少当 resource_type 有维尺度的指标时所需的 Azure 导出实例数量。当启用 validate_dimensions 时,您将需要为每个指标+维度组合都需要一个导出实例,这更多需要维护。

导出字段

以下字段将被导出,并可供其他组件引用。

名称类型描述
targetslist(map(string))可以用于收集导出指标的目标。

例如,可以将 targets 传递给 discovery.relabel 组件来重写目标的标签集,或者传递给 prometheus.scrape 组件来收集暴露的指标。

导出的目标使用由 内存流量地址 指定的配置,该地址由 运行命令 指定。

组件健康状态

prometheus.exporter.azure 只在遇到无效配置时才会被报告为不健康。在这种情况下,导出的字段保留其最后一个健康值。

调试信息

prometheus.exporter.azure 不暴露任何特定于组件的调试信息。

调试指标

prometheus.exporter.azure 不暴露任何特定于组件的调试指标。

示例

alloy
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 有可以由以下组件消费的导出内容

注意

连接某些组件可能不合理,或者组件可能需要进一步的配置以正确连接。请参阅相关文档以获取更多详细信息。