菜单
开源

discovery.ec2

discovery.ec2 允许您从 EC2 实例检索刮取目标。默认使用私有 IP 地址,但您可以通过重命名更改为公共 IP 地址。

用于发现刮取目标的 IAM 凭据必须具有 ec2:DescribeInstances 许可,并且可能可选地具有 ec2:DescribeAvailabilityZones 许可以将可用区 ID 显示为标签。

用法

alloy
discovery.ec2 "LABEL" {
}

参数

以下参数被支持

名称类型描述默认值必需
endpoint字符串要使用的自定义端点。
region字符串AWS 区域。如果您留空,则使用实例元数据中的区域。
access_key字符串AWS API 密钥 ID。如果您为空,则使用环境变量 AWS_ACCESS_KEY_ID
secret_key字符串AWS API 密钥秘密。如果您为空,则使用环境变量 AWS_SECRET_ACCESS_KEY
profile字符串用于连接 API 的命名 AWS 配置文件。
role_arn字符串AWS 角色Amazon资源名称 (ARN),这是使用 AWS API 密钥的替代方案。
refresh_interval字符串刷新间隔以重新读取实例列表。60s
port整数从 scraping 统计量获取的端口。如果使用公共 IP 地址,此值必须在重命名规则中指定。80
bearer_token_file字符串包含用于身份验证的载体令牌的文件。
bearer_token秘密用于身份验证的载体令牌。
enable_http2布尔值是否支持 HTTP2 用于请求。true
follow_redirects布尔值服务器返回的重定向是否应被遵循。true
proxy_url字符串HTTP 代理,将通过该代理发送请求。
no_proxy字符串逗号分隔的 IP 地址、CIDR 表示法和域名列表,以排除代理。
proxy_from_environment布尔值使用环境变量指示的代理 URL。false
proxy_connect_headermap(list(secret))指定在连接请求期间发送到代理的头。

以下选项之一最多只能提供一项

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

proxy_from_environment 使用环境变量 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY(或其小写版本)。请求使用与其方案匹配的环境变量中的代理,除非被 NO_PROXY 排除。proxy_urlno_proxy 必须在配置 proxy_from_environment 时设置。

proxy_connect_header 应仅当配置了 proxy_urlproxy_from_environment 时配置。

以下块在 discovery.ec2 的定义内受支持:

层次结构描述必需
basic_authbasic_auth为访问端点配置基本认证。
authorizationauthorization配置对端点的通用认证。
filterfilter过滤器可发现资源。
oauth2oauth2为访问端点配置 OAuth2。
oauth2 > tls_configtls_config为连接到端点配置 TLS 设置。
tls_configtls_config为连接到端点配置 TLS 设置。

basic_auth 块

名称类型描述默认值必需
password_file字符串包含基本认证密码的文件。
password秘密基本认证密码。
username字符串基本认证用户名。

passwordpassword_file 是互斥的,并且只能在一个 basic_auth 块内提供。

authorization 块

名称类型描述默认值必需
credentials_file字符串包含秘密值的文件。
credentials秘密秘密值。
type字符串认证类型,例如,“Bearer”。

credentialcredentials_file 是互斥的,并且只能在 authorization 块内提供其中一个。

filter 块

可以使用过滤器可选地根据其他标准过滤实例列表。可用的筛选标准可以在Amazon EC2 文档中找到。

名称类型描述默认值必需
name字符串要使用的筛选器名称。yes
valueslist(string)要传递给过滤器的值。yes

有关支持的筛选器和它们的描述列表,请参阅Filter API AWS EC2 文档

oauth2 块

名称类型描述默认值必需
client_id字符串OAuth2 客户端 ID。
client_secret_file字符串包含 OAuth2 客户端秘密的文件。
client_secret秘密OAuth2 客户端秘密。
endpoint_paramsmap(string)要附加到令牌 URL 的可选参数。
proxy_url字符串HTTP 代理,将通过该代理发送请求。
no_proxy字符串逗号分隔的 IP 地址、CIDR 表示法和域名列表,以排除代理。
proxy_from_environment布尔值使用环境变量指示的代理 URL。false
proxy_connect_headermap(list(secret))指定在连接请求期间发送到代理的头。
scopeslist(string)要验证的权限列表。
token_url字符串从其中获取令牌的 URL。

client_secretclient_secret_file 是互斥的,并且只能在 oauth2 块内提供其中一个。

oauth2 块还可以包含单独的 tls_config 子块。

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

proxy_from_environment 使用环境变量 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY(或其小写版本)。请求使用与其方案匹配的环境变量中的代理,除非被 NO_PROXY 排除。proxy_urlno_proxy 必须在配置 proxy_from_environment 时设置。

proxy_connect_header 应仅当配置了 proxy_urlproxy_from_environment 时配置。

tls_config 块

名称类型描述默认值必需
ca_pem字符串用于验证服务器的 CA PEM 编码文本。
ca_file字符串用于验证服务器的 CA 证书。
cert_pem字符串用于客户端认证的证书 PEM 编码文本。
cert_file字符串用于客户端认证的证书文件。
insecure_skip_verify布尔值禁用服务器证书的验证。
key_file字符串用于客户端认证的密钥文件。
key_pem秘密用于客户端认证的密钥 PEM 编码文本。
min_version字符串最小可接受的 TLS 版本。
server_name字符串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))发现的一批 EC2 目标。

每个目标包含以下标签

  • __meta_ec2_ami:EC2 亚马逊机器镜像。
  • __meta_ec2_architecture:实例的架构。
  • __meta_ec2_availability_zone: instance 运行的可用区。
  • __meta_ec2_availability_zone_id:instance 运行的可用区 ID(需要 ec2:DescribeAvailabilityZones)。
  • __meta_ec2_instance_id:EC2 实例 ID。
  • __meta_ec2_instance_lifecycle:EC2 实例的生命周期,仅在“spot”或“scheduled”实例上设置,否则为空。
  • __meta_ec2_instance_state:EC2 实例的状态。
  • __meta_ec2_instance_type:EC2 实例的类型。
  • __meta_ec2_ipv6_addresses:如果存在,则为实例的网络接口分配的 IPv6 地址的逗号分隔列表。
  • __meta_ec2_owner_id:拥有 EC2 实例的 AWS 账户 ID。
  • __meta_ec2_platform:操作系统平台,Windows 服务器上设置为‘windows’,否则为空。
  • __meta_ec2_primary_subnet_id:如果可用,为主网络接口的子网 ID。
  • __meta_ec2_private_dns_name:如果可用,实例的私有 DNS 名称。
  • __meta_ec2_private_ip:如果存在,实例的私有 IP 地址。
  • __meta_ec2_public_dns_name:如果可用,实例的公共 DNS 名称。
  • __meta_ec2_public_ip:如果存在,实例的公共 IP 地址。
  • __meta_ec2_region:实例所在的区域。
  • __meta_ec2_subnet_id:如果可用,实例正在运行的子网 ID 的逗号分隔列表。
  • __meta_ec2_tag_<tagkey>:实例的每个标签值。
  • __meta_ec2_vpc_id:如果可用,实例正在运行的 VPC 的 ID。

组件健康

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

调试信息

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

调试指标

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

示例

alloy
discovery.ec2 "ec2" {
  region = "us-east-1"
}

prometheus.scrape "demo" {
  targets    = discovery.ec2.ec2.targets
  forward_to = [prometheus.remote_write.demo.receiver]
}

prometheus.remote_write "demo" {
  endpoint {
    url = PROMETHEUS_REMOTE_WRITE_URL

    basic_auth {
      username = USERNAME
      password = PASSWORD
    }
  }
}

替换以下内容

  • PROMETHEUS_REMOTE_WRITE_URL:要发送.metrics 的 Prometheus remote_write 兼容服务器的 URL。
  • USERNAME:用于远程_write API 认证的用户名。
  • PASSWORD:用于远程_write API 认证的密码。

兼容组件

discovery.ec2 导出的内容可以被以下组件消费

注意

连接某些组件可能不合理,或者组件可能需要进一步的配置才能正确连接。请参阅链接文档获取更多详情。