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'"
$ 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 openstack flavor show 692533fe-0912-417e-b706-5d085449db53 -c vcpus -f value
$ 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