菜单
开源

发现OpenStack

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

用法

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

参数

以下参数受支持

名称类型描述默认值必需
role字符串发现目标的角色。yes
region字符串OpenStack 区域。yes
identity_endpoint字符串指定与相应版本的 Identity API 一起工作的 HTTP 终端。no
username字符串OpenStack 的 Identity V2 和 V3 API 的用户名。no
userid字符串OpenStack 的 Identity V2 和 V3 API 的用户 ID。no
passwordsecretIdentity V2 和 V3 API 的密码。no
domain_name字符串Identity V2 和 V3 API 的 OpenStack 域名。no
domain_id字符串Identity V2 和 V3 API 的 OpenStack 域 ID。no
project_name字符串Identity V2 和 V3 API 的 OpenStack 项目名称。no
project_id字符串Identity V2 和 V3 API 的 OpenStack 项目 ID。no
application_credential_name字符串Identity V2 和 V3 API 的 OpenStack 应用凭证名称。no
application_credential_id字符串Identity V2 和 V3 API 的 OpenStack 应用凭证 ID。no
application_credential_secretsecretIdentity V2 和 V3 API 的 OpenStack 应用凭证秘密。no
all_tenantsbool服务发现是否应列出所有项目的所有实例。falseno
refresh_intervalduration刷新间隔,用于重新读取实例列表。60秒no
端口整数用于抓取指标的端口。80no
可用性字符串连接到的端点的可用性。公共的no

role 必须是 hypervisorinstance 之一。

使用 Identity V2 API 时需要 username。在 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_configOpenStack API 请求的 TLS 配置。no

tls_config 块

名称类型描述默认值必需
ca_pem字符串用于验证服务器的 CA PEM 编码文本。no
ca_file字符串用于验证服务器的 CA 证书。no
cert_pem字符串用于客户端身份验证的证书 PEM 编码文本。no
cert_file字符串用于客户端身份验证的证书文件。no
insecure_skip_verifybool禁用服务器证书的验证。no
key_file字符串客户端身份验证的密钥文件。no
key_pemsecret用于客户端身份验证的密钥 PEM 编码文本。no
min_version字符串可接受的最小 TLS 版本。no
server_name字符串ServerName 扩展,用于指示服务器名称。no

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

  • 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 虚拟节点上发现一个目标。目标地址默认为虚拟节点的 host_ip 属性。

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

instance

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导出可以被以下组件消费的数据

注意

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