菜单
正式发布 (GA)

discovery.openstack

discovery.openstack 发现 OpenStack Nova 实例,并将它们公开为 targets。

用法

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

参数

您可以将以下参数与 discovery.openstack 一起使用

名称类型描述默认值必需
regionstringOpenStack 区域。
rolestring已发现 targets 的角色。
all_tenantsbool服务发现是否应列出所有项目的所有实例。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 应用程序凭证密钥。
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重新读取实例列表的刷新间隔。60秒
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用于验证服务器的 CA PEM 编码文本。
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 发现的 targets 集合。

hypervisor 角色

hypervisor 角色为每个 Nova hypervisor 节点发现一个 target。target 地址默认为 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 实例的每个网络接口发现一个 target。target 地址默认为网络接口的私有 IP 地址。

  • __meta_openstack_address_pool: 私有 IP 的池。
  • __meta_openstack_instance_flavor: OpenStack 实例的 flavor。
  • __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: 拥有此实例的项目(租户)。
  • __meta_openstack_public_ip: OpenStack 实例的公有 IP。
  • __meta_openstack_tag_<tagkey>: 实例的每个标签值。
  • __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 具有以下组件可以使用的导出

注意

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