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"
如果部署者使用不同的标签来标识导出器主机(例如 hostname 或 host,或任何其他标识主机的标签),则可以覆盖此默认值。
在内部,此标签用于创建 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 DataSourceBase 的 statistic_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 端点。该数据源
使用配置的 Keystone 凭证进行身份验证
搜索服务目录中服务类型为 ‘metric-storage’ 的服务
使用发现的端点 URL 连接到 Aetos
将 Keystone 令牌附加到每个请求进行身份验证
如果 Aetos 服务未在 Keystone 中注册,则数据源将无法初始化,并阻止决策引擎启动。
因此,配置为使用 Aetos 数据源的示例 watcher.conf 如下
[watcher_datasources]
datasources = aetos
[aetos_client]
interface = public
region_name = RegionOne
fqdn_label = fqdn