4.4. 使用 rate:mean 聚合时,使用 CPU 遥测值进行自动扩展阈值
当使用 OS::Heat::Autoscaling heat 编配模板 (HOT) 并为 CPU 设置阈值时,其代表以纳秒为单位的 CPU 时间,它是一个基于分配给实例工作负载虚拟 CPU 数量的动态值。在本参考指南中,我们将探索如何在使用 Gnocchi rate:mean aggregration 方法时以百分比的形式计算和表达 CPU nanosecond 值。
4.4.1. 将 CPU 遥测值计算为百分比 复制链接链接已复制到粘贴板!
CPU 遥测存储在 Gnocchi (OpenStack 时间序列数据存储)中,以纳秒为单位的 CPU 使用率。在使用 CPU 遥测定义自动扩展阈值时,将值表示为 CPU 使用率百分比时很有用,因为这在定义阈值时更为自然。当定义用作自动扩展组一部分的扩展策略时,我们可以取所需的阈值定义为百分比,并以纳秒为单位计算策略定义中使用的所需阈值。
| 值(ns) | granularity (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 遥测数据作为百分比,而不是实例的纳秒值。
先决条件
- 使用自动扩展组资源创建 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,为我们提供一个以百分比表示的值:
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 | standalone.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/ 中检查时间序列数据库服务的日志: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 measure show show命令检索一样)。然后,该值通过将 100 的倍数转换为一个百分比。最后,我们将总的值除以分配给实例的类别提供的 vCPU 数量,在本例中为 2 个 vCPU,为我们提供一个以百分比表示的值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow