自动扩展实例
在 Red Hat OpenStack Platform 中配置自动扩展
摘要
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
我们感谢您对文档提供反馈信息。与我们分享您的成功秘诀。
在 JIRA 中提供文档反馈
使用 Create Issue 表单在 OpenShift (RHOSO)或更早版本的 Red Hat OpenStack Platform (RHOSP)上提供有关 Red Hat OpenStack Services 文档的反馈。当您为 RHOSO 或 RHOSP 文档创建问题时,这个问题将在 RHOSO Jira 项目中记录,您可以在其中跟踪您的反馈的进度。
要完成 Create Issue 表单,请确保您已登录到 JIRA。如果您没有红帽 JIRA 帐户,您可以在 https://issues.redhat.com 创建一个帐户。
- 点击以下链接打开 Create Issue 页面: Create Issue
- 完成 Summary 和 Description 字段。在 Description 字段中,包含文档 URL、章节或章节号以及问题的详细描述。不要修改表单中的任何其他字段。
- 点 Create。
第 1 章 自动扩展组件简介 复制链接链接已复制到粘贴板!
使用遥测组件收集有关 Red Hat OpenStack Platform (RHOSP)环境的数据,如 CPU、存储和内存用量。您可以启动和扩展实例,以响应工作负载需求和资源可用性。您可以定义遥测数据的上限和下限,以控制编排服务(heat)模板中的实例扩展。
使用以下遥测组件控制自动实例扩展:
- 数据收集 :Telemetry 使用数据收集服务(Ceilometer)来收集指标和事件数据。
- 存储 :Telemetry 将指标数据存储在时间序列数据库服务(gnocchi)中。
- 警报 :Telemetry 使用 Alarming 服务(aodh)根据规则针对 Ceilometer 收集的指标或事件数据触发操作。
1.1. 用于自动扩展的数据收集服务(Ceilometer) 复制链接链接已复制到粘贴板!
您可以使用 Ceilometer 收集 Red Hat OpenStack Platform (RHOSP)组件的计量和事件信息的数据。
Ceilometer 服务使用三个代理从 RHOSP 组件收集数据:
- 计算代理(ceilometer-agent-compute) :在每个 Compute 节点上运行并轮询资源使用统计数据。
- 中央代理(ceilometer-agent-central) :在 Controller 节点上运行轮询,以轮询资源使用不是由 Compute 节点提供的资源的统计数据。
- 通知代理(ceilometer-agent-notification) :在 Controller 节点上运行,并使用来自消息队列的消息来构建事件和计量数据。
Ceilometer 代理使用发布者将数据发送到对应的端点,如时间序列数据库服务(gnocchi)。
其他资源
- overcloud 可观察性指南中的 Ceilometer.
1.1.1. Publishers 复制链接链接已复制到粘贴板!
在 Red Hat OpenStack Platform (RHOSP)中,您可以使用多种传输方法将收集的数据传送到存储或外部系统中,如 Service Telemetry Framework (STF)。
当您启用 gnocchi publisher 时,测量和资源信息会存储为时间序列数据。
1.2. 用于自动扩展的时间序列数据库服务(gnocchi) 复制链接链接已复制到粘贴板!
Gnocchi 是一个时间序列数据库,可用于将指标存储在 SQL 中。警报服务(aodh)和编排服务(heat)使用存储在 gnocchi 中的数据进行自动扩展。
其他资源
1.3. 警报服务(aodh) 复制链接链接已复制到粘贴板!
您可以配置 Alarming 服务(aodh),以基于针对 Ceilometer 收集的指标数据的规则触发操作,并存储在 gnocchi 中。警报可以处于以下状态之一:
- OK :指标或事件处于可接受的状态。
-
trigger :指标或事件不在定义的
Ok状态之外。 - 数据不足 :警报状态未知,例如,没有请求粒度的数据,或者检查尚未执行,以此类推。
1.4. 用于自动扩展的编排服务(heat) 复制链接链接已复制到粘贴板!
director 使用编排服务(heat)模板作为 overcloud 部署的模板格式。Heat 模板通常以 YAML 格式表示。模板的目的是定义和创建堆栈,这是 heat 创建的资源集合,以及资源的配置。资源是 Red Hat OpenStack Platform (RHOSP)中的对象,可以包含计算资源、网络配置、安全组、扩展规则和自定义资源。
第 2 章 配置和部署 overcloud 进行自动扩展 复制链接链接已复制到粘贴板!
您必须为 overcloud 上的服务配置模板来启用自动扩展。
流程
- 在部署 overcloud 进行自动扩展前,为自动扩展服务创建环境模板和资源 registry。如需更多信息,请参阅 第 2.1 节 “配置 overcloud 进行自动扩展”。
- 部署 overcloud。如需更多信息,请参阅 第 2.2 节 “部署 overcloud 进行自动扩展”。
2.1. 配置 overcloud 进行自动扩展 复制链接链接已复制到粘贴板!
创建部署提供自动扩展的服务所需的环境模板和资源 registry。
流程
-
使用您的 overcloud 管理员凭据登录 undercloud 主机,如
overcloudrc。 为自动扩展配置文件创建目录:
mkdir -p $HOME/templates/autoscaling/
$ mkdir -p $HOME/templates/autoscaling/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为服务自动扩展所需的定义创建资源 registry 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建环境模板来配置自动扩展所需的服务:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您使用 Red Hat Ceph Storage 作为时间序列数据库服务的数据存储后端,请在
parameters-autoscaling.yaml文件中添加以下参数:parameter_defaults: GnocchiRbdPoolName: 'metrics' GnocchiBackend: 'rbd'
parameter_defaults: GnocchiRbdPoolName: 'metrics' GnocchiBackend: 'rbd'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您必须先创建定义的归档策略
通用,然后才能存储指标。您可以在部署后定义此归档策略。如需更多信息,请参阅 第 3.1 节 “创建用于自动扩展的通用归档策略”。-
设置
polling_interval参数,例如 60 秒。polling_interval参数的值必须与您在创建归档策略时定义的 gnocchi granularity 值匹配。如需更多信息,请参阅 第 3.1 节 “创建用于自动扩展的通用归档策略”。 - 部署 overcloud。如需更多信息,请参阅 第 2.2 节 “部署 overcloud 进行自动扩展”。
2.2. 部署 overcloud 进行自动扩展 复制链接链接已复制到粘贴板!
您可以使用 director 部署 overcloud 进行自动扩展。
先决条件
- 您已创建了环境模板,以部署提供自动扩展功能的服务。如需更多信息,请参阅 第 2.1 节 “配置 overcloud 进行自动扩展”。
2.2.1. 使用 director 部署 overcloud 进行自动扩展 复制链接链接已复制到粘贴板!
使用 director 部署 overcloud。
先决条件
- 已部署 undercloud。有关更多信息,请参阅在 undercloud 上安装 director。
流程
-
以
stack用户身份登录 undercloud。 查找
stackrcundercloud 凭证文件:source ~/stackrc
[stack@director ~]$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用其他环境文件将自动扩展环境文件添加到堆栈中,并部署 overcloud:
openstack overcloud deploy --templates \ -e [your environment files] \ -e $HOME/templates/autoscaling/parameters-autoscaling.yaml \ -e $HOME/templates/autoscaling/resources-autoscaling.yaml
(undercloud)$ openstack overcloud deploy --templates \ -e [your environment files] \ -e $HOME/templates/autoscaling/parameters-autoscaling.yaml \ -e $HOME/templates/autoscaling/resources-autoscaling.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. 验证 overcloud 部署以进行自动扩展 复制链接链接已复制到粘贴板!
验证自动扩展服务是否已部署并已启用。验证输出示例可能与您的用例不同。
先决条件
- 您已使用 director 在现有 overcloud 中部署了自动扩展服务。如需更多信息,请参阅 第 2.2 节 “部署 overcloud 进行自动扩展”。
流程
-
以
stack用户身份登录您的环境。 对于 director 环境,提供
overcloudrcovercloud 凭据文件:source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证部署是否成功,并确保自动扩展的服务 API 端点可用:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 overcloud 凭证检查 heat 服务:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证服务是否在 overcloud 上运行:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证时间序列数据库服务是否可用:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 3 章 使用 heat 服务进行自动扩展 复制链接链接已复制到粘贴板!
在部署 overcloud 中提供自动扩展所需的服务后,您必须配置 overcloud 环境,以便编排服务(heat)可以管理实例以进行自动扩展。
先决条件
- 已部署 overcloud。如需更多信息,请参阅 第 2.2 节 “部署 overcloud 进行自动扩展”。
3.1. 创建用于自动扩展的通用归档策略 复制链接链接已复制到粘贴板!
在 overcloud 中部署用于自动扩展的服务后,您必须配置 overcloud 环境,以便编排服务(heat)能够管理用于自动扩展的实例。
先决条件
- 您已部署了具有自动扩展服务的 overcloud。如需更多信息,请参阅 第 2.1 节 “配置 overcloud 进行自动扩展”。
流程
-
以
stack用户身份登录您的环境。 对于 director 环境,提供
overcloudrcovercloud 凭据文件:source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
$HOME/templates/autoscaling/parameters-autoscaling.yaml中定义的归档策略:openstack metric archive-policy create generic \ --back-window 0 \ --definition timespan:'4:00:00',granularity:'0:01:00',points:240 \ --aggregation-method 'rate:mean' \ --aggregation-method 'mean'
$ openstack metric archive-policy create generic \ --back-window 0 \ --definition timespan:'4:00:00',granularity:'0:01:00',points:240 \ --aggregation-method 'rate:mean' \ --aggregation-method 'mean'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证是否已创建归档策略:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2. 为自动扩展实例配置 heat 模板 复制链接链接已复制到粘贴板!
您可以配置编排服务(heat)模板来创建实例,并配置在触发时创建和扩展实例的警报。
此流程使用示例值,您必须更改为适合您的环境。
先决条件
- 您已使用自动扩展服务部署了 overcloud。如需更多信息,请参阅 第 2.2 节 “部署 overcloud 进行自动扩展”。
- 您已为 overcloud 配置了一个用于自动扩展遥测存储的归档策略。如需更多信息,请参阅 第 3.1 节 “创建用于自动扩展的通用归档策略”。
流程
以
stack用户身份登录您的环境。source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建存放自动扩展组实例配置的目录:
mkdir -p $HOME/templates/autoscaling/vnf/
$ mkdir -p $HOME/templates/autoscaling/vnf/Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
创建实例配置模板,如
$HOME/templates/autoscaling/vnf/instance.yaml。 在
instance.yaml文件中添加以下配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
parameters参数为此新资源定义自定义参数。 -
resources参数的vnf子参数定义了在OS::Heat::AutoScalingGroup中引用的自定义子资源的名称,例如OS::Nova::Server::VNF。
-
创建要在 heat 模板中引用的资源:
$ cat <<EOF > $HOME/templates/autoscaling/vnf/resources.yaml resource_registry: "OS::Nova::Server::VNF": $HOME/templates/autoscaling/vnf/instance.yaml EOF
$ cat <<EOF > $HOME/templates/autoscaling/vnf/resources.yaml resource_registry: "OS::Nova::Server::VNF": $HOME/templates/autoscaling/vnf/instance.yaml EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为 heat 创建部署模板以控制实例扩展:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意堆栈上的输出是信息性的,在 ScalingPolicy 或 AutoScalingGroup 中不引用。要查看输出,请使用
openstack stack show <stack_name>命令。
3.3. 创建用于自动扩展的堆栈部署 复制链接链接已复制到粘贴板!
为工作的 VNF 自动扩展示例创建堆栈部署。
流程
使用您的 overcloud 管理员凭证登录 undercloud 主机,如
overcloudrc:source ~/overcloudrc
(undercloud)$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您必须首先启动临时 Heat 进程才能使用
openstack stack命令:openstack tripleo launch heat --heat-dir /home/stack/overcloud-deploy/overcloud/heat-launcher --restore-db export OS_CLOUD=heat
(undercloud)$ openstack tripleo launch heat --heat-dir /home/stack/overcloud-deploy/overcloud/heat-launcher --restore-db (undercloud)$ export OS_CLOUD=heatCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建堆栈:
openstack stack create \ -t $HOME/templates/autoscaling/vnf/template.yaml \ -e $HOME/templates/autoscaling/vnf/resources.yaml \ vnf
$ openstack stack create \ -t $HOME/templates/autoscaling/vnf/template.yaml \ -e $HOME/templates/autoscaling/vnf/resources.yaml \ vnfCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证堆栈是否已成功创建:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证堆栈资源是否已创建,包括警报、扩展策略和自动扩展组:
export STACK_ID=$(openstack stack show vnf -c id -f value)
$ export STACK_ID=$(openstack stack show vnf -c id -f value)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过堆栈创建验证实例是否已启动:
openstack server list --long | grep $STACK_ID | 62e1b27c-8d9d-44a5-a0f0-80e7e6d437c7 | vn-dvaxcqb-6bqh2qd2fpif-hicmkm5dzjug-vnf-ywrydc5wqjjc | ACTIVE | None | Running | private=192.168.100.61, 192.168.25.99 | fedora36 | a6aa7b11-1b99-4c62-a43b-d0b7c77f4b72 | m1.small | 5cd46fec-50c2-43d5-89e8-ed3fa7660852 | nova | host-80.localdomain | metering.server_group='cb082cbd-535e-4779-84b0-98925e103f5e' |
$ openstack server list --long | grep $STACK_ID | 62e1b27c-8d9d-44a5-a0f0-80e7e6d437c7 | vn-dvaxcqb-6bqh2qd2fpif-hicmkm5dzjug-vnf-ywrydc5wqjjc | ACTIVE | None | Running | private=192.168.100.61, 192.168.25.99 | fedora36 | a6aa7b11-1b99-4c62-a43b-d0b7c77f4b72 | m1.small | 5cd46fec-50c2-43d5-89e8-ed3fa7660852 | nova | host-80.localdomain | metering.server_group='cb082cbd-535e-4779-84b0-98925e103f5e' |Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证是否为堆栈创建了警报:
列出警报 ID。在一段时间内,警报的状态可能位于
数据不足的状态。最短的时间是数据收集和数据存储粒度设置的轮询间隔:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出堆栈的资源,并记录下
cpu_alarm_high和cpu_alarm_low资源的physical_resource_id值。Copy to Clipboard Copied! Toggle word wrap Toggle overflow physical_resource_id的值必须与openstack alarm list命令的输出中的alarm_id匹配。
验证堆栈是否存在指标资源。将
server_group查询的值设置为堆栈 ID:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证通过堆栈创建的实例资源是否存在测量:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 undercloud 中删除临时 Heat 进程:
openstack tripleo launch heat --kill
(undercloud)$ openstack tripleo launch heat --killCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 4 章 测试和故障排除自动扩展 复制链接链接已复制到粘贴板!
使用编排服务(heat)根据阈值定义自动扩展实例。要排除您的环境,您可以在日志文件和历史记录记录中查找错误。
4.1. 测试自动扩展实例 复制链接链接已复制到粘贴板!
您可以使用编排服务(heat)根据 cpu_ alarm_high 阈值定义自动扩展实例。当 CPU 使用达到 threshold 参数中定义的值时,另一个实例会启动以平衡负载。template.yaml 文件中的 阈值 设置为 80%。
流程
-
以
stack用户身份登录主机环境。 对于 director 环境,提供
overcloudrc文件:source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 登录到实例:
ssh -i ~/mykey.pem cirros@192.168.122.8
$ ssh -i ~/mykey.pem cirros@192.168.122.8Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行多个
dd命令来生成负载:sudo dd if=/dev/zero of=/dev/null & sudo dd if=/dev/zero of=/dev/null & sudo dd if=/dev/zero of=/dev/null &
[instance ~]$ sudo dd if=/dev/zero of=/dev/null & [instance ~]$ sudo dd if=/dev/zero of=/dev/null & [instance ~]$ sudo dd if=/dev/zero of=/dev/null &Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 从正在运行的实例退出,再返回到主机。
运行
dd命令后,您可以预期在实例中使用 100% CPU。验证警报是否已触发:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 大约 60 秒后,编排将启动另一个实例并将它添加到组中。要验证实例是否已创建,请输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在另一个短时间内,观察编排服务已自动缩放到三个实例。该配置设置为最多三个实例。验证有三个实例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2. 测试自动缩减实例 复制链接链接已复制到粘贴板!
您可以使用编排服务(heat)根据 cpu_ alarm_low 阈值自动扩展实例。在本例中,当 CPU 使用率低于 5% 时,实例将缩减。
流程
从工作负载实例中,终止正在运行的
dd进程,并观察编排开始缩减实例。killall dd
$ killall ddCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
以
stack用户身份登录主机环境。 对于 director 环境,提供
overcloudrc文件:source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 当您停止
dd进程时,这将触发cpu_alarm_low 事件警报。因此,编排开始缩减和删除实例。验证对应的警报是否已触发:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 几分钟后,编排持续将实例数量减少到
scaleup_group定义的min_size参数中定义的最小值。在这种情况下,min_size参数设置为1。
4.3. 自动扩展故障排除 复制链接链接已复制到粘贴板!
如果您的环境无法正常工作,您可以在日志文件和历史记录记录中查找错误。
流程
-
以
stack用户身份登录主机环境。 对于 director 环境,提供
overcloudrc文件:source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您必须首先启动临时 Heat 进程才能使用
openstack stack命令:openstack tripleo launch heat --heat-dir /home/stack/overcloud-deploy/overcloud/heat-launcher --restore-db export OS_CLOUD=heat
(undercloud)$ openstack tripleo launch heat --heat-dir /home/stack/overcloud-deploy/overcloud/heat-launcher --restore-db (undercloud)$ export OS_CLOUD=heatCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要检索有关状态转换的信息,请列出堆栈事件记录:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 读取警报历史记录日志:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要查看 heat 为现有堆栈收集的横向扩展或缩减操作的记录,您可以使用
awk命令解析heat-engine.log:awk '/Stack UPDATE started/,/Stack CREATE completed successfully/ {print $0}' /var/log/containers/heat/heat-engine.log$ awk '/Stack UPDATE started/,/Stack CREATE completed successfully/ {print $0}' /var/log/containers/heat/heat-engine.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要查看 aodh 相关信息,请检查
aodh-evaluator.log:sudo grep -i alarm /var/log/containers/aodh/aodh-evaluator.log | grep -i transition
$ sudo grep -i alarm /var/log/containers/aodh/aodh-evaluator.log | grep -i transitionCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从 undercloud 中删除临时 Heat 进程:
openstack tripleo launch heat --kill
(undercloud)$ openstack tripleo launch heat --killCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4. 使用 rate:mean 聚合时,使用 CPU 遥测值进行自动扩展阈值 复制链接链接已复制到粘贴板!
当使用 OS::Heat::Autoscaling heat 编配模板 (HOT) 并为 CPU 设置阈值时,其代表以纳秒为单位的 CPU 时间,它是一个基于分配给实例工作负载虚拟 CPU 数量的动态值。在本参考指南中,我们将探索如何在使用 Gnocchi rate:mean aggregration 方法时,将如何计算和表达 CPU 纳秒值作为百分比。
4.4.1. 计算 CPU 遥测值的百分比 复制链接链接已复制到粘贴板!
CPU 遥测存储在 Gnocchi (OpenStack 时间序列数据存储中),以纳秒为单位的 CPU 使用率。当使用 CPU 遥测来定义自动扩展阈值时,将值表示为 CPU 使用率百分比,因为定义阈值时更自然。当定义用作自动扩展组的扩展策略时,我们可以取所需的阈值定义为百分比,并在策略定义中计算所需的阈值(以纳秒为单位)。
| value (ns) | 粒度(s) | 百分比 |
|---|---|---|
| 60000000000 | 60 | 100 |
| 54000000000 | 60 | 90 |
| 48000000000 | 60 | 80 |
| 42000000000 | 60 | 70 |
| 36000000000 | 60 | 60 |
| 30000000000 | 60 | 50 |
| 24000000000 | 60 | 40 |
| 18000000000 | 60 | 30 |
| 12000000000 | 60 | 20 |
| 6000000000 | 60 | 10 |
4.4.2. 以百分比的形式显示实例工作负载 vCPU 复制链接链接已复制到粘贴板!
您可以使用 openstack metric aggregates 命令显示 gnocchi-stored CPU 遥测数据作为百分比而不是实例的 nanosecond 值。
先决条件
- 使用自动扩展组资源创建 heat 堆栈,导致实例工作负载。
流程
- 以云管理员身份登录到您的 OpenStack 环境。
检索自动扩展组 heat 堆栈的 ID:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将堆栈 ID 的值设置为环境变量:
export STACK_ID=$(openstack stack show vnf -c id -f value)
$ export STACK_ID=$(openstack stack show vnf -c id -f value)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 按资源类型实例(服务器 ID)将指标返回为聚合,其值计算为百分比。聚合返回为 CPU 时间的纳秒值。我们将该数量除以 1000000000,以获得以秒为单位的值。然后,我们按我们的粒度来划分值,本例中为 60 秒。然后,该值将通过 100 乘以一个百分比。最后,我们将总值除以分配给实例的类别提供的 vCPU 数量,在本示例中,值为 2 vCPU,从而以 CPU 时间百分比表示的值:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.3. 为实例工作负载检索可用的遥测 复制链接链接已复制到粘贴板!
检索实例工作负载的可用遥测,并以百分比表示 vCPU 使用率。
先决条件
- 使用自动扩展组资源创建 heat 堆栈,导致实例工作负载。
流程
- 以云管理员身份登录到您的 OpenStack 环境。
检索自动扩展组 heat 堆栈的 ID:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将堆栈 ID 的值设置为环境变量:
export STACK_ID=$(openstack stack show vnf -c id -f value)
$ export STACK_ID=$(openstack stack show vnf -c id -f value)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检索您要返回数据的工作负载实例的 ID。我们使用服务器列表长表单和过滤属于自动扩展组的实例:
openstack server list --long --fit-width | grep "metering.server_group='$STACK_ID'" | bc1811de-48ed-44c1-ae22-c01f36d6cb02 | vn-xlfb4jb-yhbq6fkk2kec-qsu2lr47zigs-vnf-y27wuo25ce4e | ACTIVE | None | Running | private=192.168.100.139, 192.168.25.179 | fedora36 | d21f1aaa-0077-4313-8a46-266c39b705c1 | m1.small | 692533fe-0912-417e-b706-5d085449db53 | nova | host.localdomain | metering.server_group='e0a15cee-34d1-418a-ac79-74ad07585730' |
$ openstack server list --long --fit-width | grep "metering.server_group='$STACK_ID'" | bc1811de-48ed-44c1-ae22-c01f36d6cb02 | vn-xlfb4jb-yhbq6fkk2kec-qsu2lr47zigs-vnf-y27wuo25ce4e | ACTIVE | None | Running | private=192.168.100.139, 192.168.25.179 | fedora36 | d21f1aaa-0077-4313-8a46-266c39b705c1 | m1.small | 692533fe-0912-417e-b706-5d085449db53 | nova | host.localdomain | metering.server_group='e0a15cee-34d1-418a-ac79-74ad07585730' |Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为返回的实例工作负载名称设置实例 ID:
INSTANCE_NAME='vn-xlfb4jb-yhbq6fkk2kec-qsu2lr47zigs-vnf-y27wuo25ce4e' ; export INSTANCE_ID=$(openstack server list --name $INSTANCE_NAME -c ID -f value)
$ INSTANCE_NAME='vn-xlfb4jb-yhbq6fkk2kec-qsu2lr47zigs-vnf-y27wuo25ce4e' ; export INSTANCE_ID=$(openstack server list --name $INSTANCE_NAME -c ID -f value)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证已经为实例资源 ID 存储了指标。如果没有可用的指标,则自实例创建后,可能没有足够的时间。如果有足够的时间,您可以检查
/var/log/containers/ceilometer/中数据收集服务的日志,并在/var/log/containers/gnocchi/中检查时间序列数据库服务 gnocchi 的日志:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证资源指标是否有可用的测量结果,并记录粒度值,因为我们在运行
openstack metric aggregates命令时使用它:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过查看实例工作负载的配置类别来检索应用到工作负载实例的 vCPU 内核数:
openstack server show $INSTANCE_ID -cflavor -f value m1.small (692533fe-0912-417e-b706-5d085449db53) openstack flavor show 692533fe-0912-417e-b706-5d085449db53 -c vcpus -f value 2
$ openstack server show $INSTANCE_ID -cflavor -f value m1.small (692533fe-0912-417e-b706-5d085449db53) $ openstack flavor show 692533fe-0912-417e-b706-5d085449db53 -c vcpus -f value 2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 按资源类型实例(服务器 ID)将指标返回为聚合,其值计算为百分比。聚合返回为 CPU 时间的纳秒值。我们将该数量除以 1000000000,以获得以秒为单位的值。然后,我们按我们的粒度划分值,本例中为 60 秒(之前使用
openstack metric measures show命令检索)。然后,该值将通过 100 乘以一个百分比。最后,我们将总值除以分配给实例的类别提供的 vCPU 数量,在本示例中,值为 2 vCPU,从而以 CPU 时间百分比表示的值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow