Aetos 数据源

概要

Aetos 数据源允许 Watcher 使用 Aetos 反向代理服务器作为收集指标的来源,这些指标被 Watcher 决策引擎使用。Aetos 是一个多租户感知反向代理,位于 Prometheus 服务器的前面,并提供 Keystone 身份验证和基于角色的访问控制。Aetos 数据源使用 Keystone 服务发现来定位 Aetos 端点,并通过 Keystone 令牌进行身份验证。

需求

Aetos 数据源具有以下要求

  • 部署在 Prometheus 前面的 Aetos 反向代理服务器

  • 在 Keystone 中注册的 Aetos 服务,服务类型为 ‘metric-storage’

  • 具有管理员或服务角色的 Watcher 的有效 Keystone 凭证

  • 具有适当标签的 Prometheus 指标(与直接访问 Prometheus 相同)

与 Prometheus 数据源一样,Prometheus 指标需要包含一个标签来标识收集指标的导出器的主机名。这用于与 Watcher 集群模型 ComputeNode.hostname 匹配。此标签的默认值为 fqdn,在 prometheus 抓取配置中看起来像

scrape_configs:
- job_name: node
  static_configs:
 - targets: ['10.1.2.3:9100']
    labels:
      fqdn: "testbox.controlplane.domain"

如果部署者使用不同的标签来标识导出器主机(例如 hostnamehost,或任何其他标识主机的标签),则可以覆盖此默认值。

在内部,此标签用于创建 fqdn_instance_labels,其中包含分配给 Prometheus 目标的标签中的值的列表。生成的 fqdn_instance_labels 的元素应与 Watcher 决策引擎集群模型中使用的 ComputeNode.hostname 匹配。一个示例 fqdn_instance_labels 如下

[
 'ena.controlplane.domain',
 'dio.controlplane.domain',
 'tria.controlplane.domain',
]

对于实例指标,Prometheus 需要在每个相关指标中包含一个带有 OpenStack 实例 UUID 的标签。默认情况下,数据源将查找标签 resource。watcher.conf 中的 instance_uuid_label 配置选项允许部署者将其默认值覆盖为存储 uuid 的任何其他标签名称。

限制

Aetos 数据源与 Prometheus 数据源具有相同的限制

当前实现不支持 Watcher class DataSourceBasestatistic_series 函数。预计 statistic_aggregation 函数(已实现)足以提供集群中管理资源的 当前 状态。statistic_aggregation 函数默认查询过去 300 秒的数据,从当前时间开始(时间段是函数参数,可以设置为所需的值)。如果感兴趣的各方自愿提供必要的工作周期,可以随时重新访问实现 statistic_series

关于已实现 statistic_aggregation 函数的一个进一步说明。该函数定义了一个 granularity 参数,用于在查询 Watcher DataSourceBase 指标提供程序中的任何一个时使用。对于 Aetos(就像 Prometheus 一样),我们不会在指定的时间段内获取然后处理单个指标。相反,我们使用 PromQL 查询运算符和函数,以便服务器本身处理指定参数中的请求,然后返回结果。因此,granularity 参数是多余的,并且对于 Aetos 的 statistic_aggregation 实现而言未使用。Prometheus 服务器获取的数据粒度在配置中指定为服务器 scrape_interval(当前默认值为 15 秒)。

此外,与直接访问 Prometheus 相比,性能略有下降。由于 Aetos 作为 Prometheus 前面的反向代理,每个请求都需要一个额外的步骤,导致延迟略长。

配置

部署者必须将 datasources 参数设置为包含 aetos 在 watcher.conf 的 watcher_datasources 部分下(或者,如果需要,可以在特定策略下添加 aetos 在 datasources 中,例如在 [watcher_strategies.workload_stabilization] 部分下)。

注意

同时配置 Prometheus 和 Aetos 数据源不受支持,并将导致配置错误。如果确定了需求或适当的用例,可以在未来调查允许这样做。

watcher.conf 配置文件还用于设置 Watcher Aetos 数据源所需的参数值。配置可以添加到 [aetos_client] 部分,并且可用的选项如下所示,因为它们是自文档化的

cfg.StrOpt('interface',
           default='public',
           choices=['internal', 'public', 'admin'],
           help="Type of endpoint to use in keystoneclient."),
cfg.StrOpt('region_name',
           help="Region in Identity service catalog to use for "
                "communication with the OpenStack service."),
cfg.StrOpt('fqdn_label',
           default='fqdn',
           help="The label that Prometheus uses to store the fqdn of "
                "exporters. Defaults to 'fqdn'."),
cfg.StrOpt('instance_uuid_label',
           default='resource',
           help="The label that Prometheus uses to store the uuid of "
                "OpenStack instances. Defaults to 'resource'."),

身份验证和服务发现

与需要显式主机和端口配置的 Prometheus 数据源不同,Aetos 数据源使用 Keystone 服务发现自动定位 Aetos 端点。该数据源

  1. 使用配置的 Keystone 凭证进行身份验证

  2. 搜索服务目录中服务类型为 ‘metric-storage’ 的服务

  3. 使用发现的端点 URL 连接到 Aetos

  4. 将 Keystone 令牌附加到每个请求进行身份验证

如果 Aetos 服务未在 Keystone 中注册,则数据源将无法初始化,并阻止决策引擎启动。

因此,配置为使用 Aetos 数据源的示例 watcher.conf 如下

[watcher_datasources]

datasources = aetos

[aetos_client]

interface = public
region_name = RegionOne
fqdn_label = fqdn