菜单
开源

发现.openstack

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

用法

alloy
discovery.openstack "LABEL" {
  role   = "hypervisor"
  region = "us-east-1"
}

参数

以下参数被支持

名称类型描述默认值必需
role字符串已发现目标的角色。
region字符串OpenStack 区域。
identity_endpoint字符串指定与相应版本的 Identity API 一起工作的所需的 HTTP 终端。
username字符串OpenStack Identity V2 和 V3 API 的用户名。
userid字符串OpenStack Identity V2 和 V3 API 的用户 ID。
passwordsecretIdentity V2 和 V3 API 的密码。
domain_name字符串OpenStack Identity V2 和 V3 API 的域名称。
domain_id字符串OpenStack Identity V2 和 V3 API 的域 ID。
project_name字符串OpenStack Identity V2 和 V3 API 的项目名称。
project_id字符串OpenStack Identity V2 和 V3 API 的项目 ID。
application_credential_name字符串OpenStack Identity V2 和 V3 API 的应用程序凭证名称。
application_credential_id字符串OpenStack Identity V2 和 V3 API 的应用程序凭证 ID。
application_credential_secretsecretOpenStack Identity V2 和 V3 API 的应用程序凭证秘密。
all_tenants布尔值服务发现是否应列出所有项目的所有实例。
refresh_interval时间段重新读取实例列表的刷新间隔。60秒
port整数从其抓取度量值的端口。80
availability字符串要连接的端点的可用性。公共

role 必须是 hypervisorinstance 之一。

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

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

如果在使用应用程序凭证进行身份验证,则必须提供 application_credential_idapplication_credential_name 字段。一些提供程序允许您使用应用程序凭证进行认证,而不是密码。

如果使用应用程序凭证进行认证,则需要 application_credential_secret 字段。

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

availability 必须是 publicadmininternal 之一。

以下块在 discovery.openstack 定义内部被支持

分层描述必需
tls_configtls_configTLS配置,用于请求OpenStack API。

tls_config 块

名称类型描述默认值必需
ca_pem字符串用于验证服务器的CA PEM编码文本。
ca_file字符串用于验证服务器的CA证书。
cert_pem字符串用于客户端认证的PEM编码证书文本。
cert_file字符串用于客户端认证的证书文件。
insecure_skip_verify布尔值禁用服务器证书的验证。
key_file字符串客户端认证的密钥文件。
key_pemsecret用于客户端认证的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)

导出字段

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

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

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

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

  • __meta_openstack_address_pool:私有IP地址池。
  • __meta_openstack_instance_flavor:OpenStack实例的风味。
  • __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:用于远程_write API 认证的用户名。
  • PASSWORD:用于远程_write API 认证的密码。

兼容组件

discovery.openstack 有以下组件可以消费的导出

注意

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