菜单
开源

Azure 发现

discovery.azure 发现 Azure 虚拟机并将它们作为目标公开。

用法

alloy
discovery.azure "<LABEL>" {
}

参数

支持以下参数

名称类型描述默认值是否必填
环境字符串Azure 环境。"AzurePublicCloud"
端口数字要附加到每个目标的 __address__ 标签的端口。80
订阅ID字符串Azure 订阅 ID。
刷新间隔持续时间刷新目标列表的间隔。5m
代理URL字符串要通过其发送请求的 HTTP 代理。
不使用代理字符串要从代理中排除的 IP 地址、CIDR 表示法和域名,以逗号分隔。
从环境变量获取代理布尔值使用环境变量指示的代理 URL。false
代理连接头map(list(secret))指定在 CONNECT 请求期间发送到代理的标头。
跟随重定向布尔值服务器返回的重定向是否应被跟随。true
启用HTTP2布尔值请求是否支持 HTTP2。true

no_proxy 可以包含 IP、CIDR 表示法和域名。IP 和域名可以包含端口号。如果配置了 no_proxy,则必须配置 proxy_url

proxy_from_environment 使用环境变量 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY(或其小写版本)。请求使用与它们的方案匹配的环境变量中的代理,除非被 NO_PROXY 排除。如果配置了 proxy_from_environment,则不得配置 proxy_urlno_proxy

只有在配置了 proxy_urlproxy_from_environment 时,才应配置 proxy_connect_header

discovery.azure 的定义内支持以下块

层级结构描述是否必填
oauthoauthAzure API 的 OAuth 配置。
托管身份托管身份Azure API 的托管身份配置。
tls_configtls_config对 Azure API 的请求的 TLS 配置。

必须指定 oauthmanaged_identity 块中的一个。

oauth 块

oauth 块配置 Azure API 的 OAuth 身份验证。

名称类型描述默认值是否必填
客户端ID字符串OAuth 客户端 ID。
客户端密钥字符串OAuth 客户端密钥。
租户ID字符串OAuth 租户 ID。

托管身份块

managed_identity 块配置 Azure API 的托管身份验证。

名称类型描述默认值是否必填
客户端ID字符串托管身份客户端 ID。

tls_config 块

名称类型描述默认值是否必填
ca_pem字符串用于验证服务器的 CA PEM 编码文本。
ca_file字符串用于验证服务器的 CA 证书。
cert_pem字符串用于客户端身份验证的证书 PEM 编码文本。
cert_file字符串用于客户端身份验证的证书文件。
不安全跳过验证布尔值禁用服务器证书的验证。
key_file字符串用于客户端身份验证的密钥文件。
key_pem密钥用于客户端身份验证的密钥 PEM 编码文本。
最小版本字符串可接受的最小 TLS 版本。
服务器名称字符串ServerName 扩展,用于指示服务器的名称。

以下参数对是互斥的,不能同时设置

  • ca_pemca_file
  • cert_pemcert_file
  • key_pemkey_file

配置客户端身份验证时,必须提供客户端证书(使用 cert_pemcert_file)和客户端密钥(使用 key_pemkey_file)。

当未提供 min_version 时,可接受的最小 TLS 版本继承自 Go 的默认最小版本 TLS 1.2。如果提供了 min_version,则必须将其设置为以下字符串之一

  • "TLS10"(TLS 1.0)
  • "TLS11"(TLS 1.1)
  • "TLS12"(TLS 1.2)
  • "TLS13"(TLS 1.3)

导出字段

以下字段已导出,其他组件可以引用它们

名称类型描述
目标list(map(string))从 Azure API 发现的目标集。

每个目标包含以下标签

  • __meta_azure_subscription_id:Azure 订阅 ID。
  • __meta_azure_tenant_id:Azure 租户 ID。
  • __meta_azure_machine_id:Azure VM 的 UUID。
  • __meta_azure_machine_resource_group:VM 所在资源组的名称。
  • __meta_azure_machine_name:VM 的名称。
  • __meta_azure_machine_computer_name:VM 的主机操作系统名称。
  • __meta_azure_machine_os_type:VM 正在运行的操作系统(LinuxWindows)。
  • __meta_azure_machine_location:VM 所在的区域。
  • __meta_azure_machine_private_ip:VM 的私有 IP 地址。
  • __meta_azure_machine_public_ip:VM 的公共 IP 地址。
  • __meta_azure_machine_tag_*:VM 上的标签。每个标签将有一个标签。
  • __meta_azure_machine_scale_set:VM 所在的规模集的名称。
  • __meta_azure_machine_size:VM 的大小。

每个发现的 VM 映射到一个目标。__address__ 标签设置为 VM 的 private_ip:port(如果私有 IP 是 IPv6 地址,则为 [private_ip]:port)。

组件健康状况

只有在给定无效配置时,discovery.azure 才会报告为不健康。在这些情况下,导出字段保留其上次的健康值。

调试信息

discovery.azure 不公开任何特定于组件的调试信息。

调试指标

discovery.azure 不公开任何特定于组件的调试指标。

示例

alloy
discovery.azure "example" {
  port = 80
  subscription_id = <AZURE_SUBSCRIPTION_ID>
  oauth {
      client_id = <AZURE_CLIENT_ID>
      client_secret = <AZURE_CLIENT_SECRET>
      tenant_id = <AZURE_TENANT_ID>
  }
}

prometheus.scrape "demo" {
  targets    = discovery.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>
    }
  }
}

替换以下内容

  • <AZURE_SUBSCRIPTION_ID>:您的 Azure 订阅 ID。
  • <AZURE_CLIENT_ID>:您的 Azure 客户端 ID。
  • <AZURE_CLIENT_SECRET>:您的 Azure 客户端密钥。
  • <AZURE_TENANT_ID>:您的 Azure 租户 ID。
  • <PROMETHEUS_REMOTE_WRITE_URL>:要将指标发送到的 Prometheus 远程写入兼容服务器的 URL。
  • <USERNAME>:用于对远程写入 API 进行身份验证的用户名。
  • <PASSWORD>:用于对远程写入 API 进行身份验证的密码。

兼容组件

discovery.azure 具有可以被以下组件使用的导出项

注意

连接某些组件可能没有意义,或者组件可能需要进一步配置才能使连接正常工作。有关更多详细信息,请参阅链接的文档。