菜单
正式可用 (GA) 开源

discovery.openstack

discovery.openstack 组件发现 OpenStack Nova 实例并将它们暴露为目标。

用法

alloy
discovery.openstack "<LABEL>" {
  role   = "<OPENSTACK_ROLE>"
  region = "<OPENSTACK_REGION>"
}

参数

您可以在 discovery.openstack 中使用以下参数

名称类型描述默认值必需
regionstringOpenStack 区域。
rolestring发现目标的角色。
instancebool服务发现是否应该列出所有项目的所有实例。false
application_credential_idstring用于 Identity V2 和 V3 API 的 OpenStack 应用程序凭据 ID。
application_credential_namestring用于 Identity V2 和 V3 API 的 OpenStack 应用程序凭据名称。
application_credential_secretsecret用于 Identity V2 和 V3 API 的 OpenStack 应用程序凭据 Secret。
availabilitystring要连接的端点的可用性。public
domain_idstring用于 Identity V2 和 V3 API 的 OpenStack 域 ID。
domain_namestring用于 Identity V2 和 V3 API 的 OpenStack 域名。
identity_endpointstring指定与相应版本 Identity API 一起工作所需的 HTTP 端点
passwordsecret用于 Identity V2 和 V3 API 的密码。
portint用于抓取指标的端口。80
project_idstring用于 Identity V2 和 V3 API 的 OpenStack 项目 ID。
project_namestring用于 Identity V2 和 V3 API 的 OpenStack 项目名称。
refresh_intervalduration刷新实例列表的时间间隔。60s
useridstring用于 Identity V2 和 V3 API 的 OpenStack 用户 ID。
usernamestring用于 Identity V2 和 V3 API 的 OpenStack 用户名。

role 必须是 hypervisorinstance 之一。

all_tenants 仅与 instance 角色相关,通常需要管理员权限。

如果使用应用程序凭据进行身份验证,则 application_credential_idapplication_credential_name 字段是必需的。一些提供商允许您创建应用程序凭据进行身份验证,而不是使用密码。

如果使用应用程序凭据进行身份验证,则 application_credential_secret 字段是必需的。

availability 必须是 publicadmininternal 之一。

project_idproject_name 字段对于 Identity V2 API 是可选的。一些提供商允许您指定 project_name 而不是 project_id,而有些则两者都需要。

如果使用 Identity V2 API,则 username 是必需的。在 Identity V3 中,需要 useridusernamedomain_iddomain_name 的组合。

您可以在 discovery.openstack 中使用以下块

描述必需
tls_config用于向 OpenStack API 发出请求的 TLS 配置。

tls_config

名称类型描述默认值必需
ca_pemstring用于验证服务器的 PEM 编码的 CA 文本。
ca_filestring用于验证服务器的 CA 证书文件。
cert_pemstring用于客户端身份验证的 PEM 编码的证书文本。
cert_filestring用于客户端身份验证的证书文件。
insecure_skip_verifybool禁用服务器证书验证。
key_filestring用于客户端身份验证的密钥文件。
key_pemsecret用于客户端身份验证的 PEM 编码的密钥文本。
min_versionstring最低可接受的 TLS 版本。
server_namestringServerName 扩展,用于指示服务器名称。

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

  • 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)

导出字段

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

名称类型描述
targetslist(map(string))从 OpenStack API 发现的目标集合。

hypervisor 角色

hypervisor 角色为每个 Nova hypervisor 节点发现一个目标。目标地址默认为 hypervisor 的 host_ip 属性。

  • __meta_openstack_hypervisor_host_ip:hypervisor 节点的 IP 地址。
  • __meta_openstack_hypervisor_hostname:hypervisor 节点的名称。
  • __meta_openstack_hypervisor_id:hypervisor 节点的 ID。
  • __meta_openstack_hypervisor_state:hypervisor 节点的状态。
  • __meta_openstack_hypervisor_status:hypervisor 节点的状态。
  • __meta_openstack_hypervisor_type:hypervisor 节点的类型。

instance 角色

instance 角色为每个 Nova 实例的网络接口发现一个目标。目标地址默认为网络接口的私有 IP 地址。

  • __meta_openstack_address_pool:私有 IP 的地址池。
  • __meta_openstack_instance_flavor:OpenStack 实例的 flavor,如果 flavor 名称不可用,则为 flavor ID。
  • __meta_openstack_instance_id:OpenStack 实例 ID。
  • __meta_openstack_instance_image:OpenStack 实例使用的镜像 ID。
  • __meta_openstack_instance_name:OpenStack 实例名称。
  • __meta_openstack_instance_status:OpenStack 实例的状态。
  • __meta_openstack_private_ip:OpenStack 实例的私有 IP。
  • __meta_openstack_project_id:拥有此实例的项目 (tenant)。
  • __meta_openstack_public_ip:OpenStack 实例的公有 IP。
  • __meta_openstack_tag_<key>:实例的每个元数据项,任何不支持的字符都会转换为下划线。
  • __meta_openstack_user_id:拥有租户的用户账户。

组件健康状态

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

调试信息

discovery.openstack 不暴露任何组件特定的调试信息。

调试指标

discovery.openstack 不暴露任何组件特定的调试指标。

示例

alloy
discovery.openstack "example" {
  role   = "<OPENSTACK_ROLE>"
  region = "<OPENSTACK_REGION>"
}

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

替换以下内容

  • <OPENSTACK_ROLE>:您的 OpenStack 角色。
  • <OPENSTACK_REGION>:您的 OpenStack 区域。
  • <PROMETHEUS_REMOTE_WRITE_URL>:将指标发送到的 Prometheus remote_write 兼容服务器的 URL。
  • <USERNAME>:用于 remote_write API 身份验证的用户名。
  • <PASSWORD>:用于 remote_write API 身份验证的密码。

兼容组件

discovery.openstack 导出的数据可由以下组件使用

注意

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