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 使用率百分比时很有用,因为这在定义阈值时更为自然。当定义用作自动扩展组一部分的扩展策略时,我们可以取所需的阈值定义为百分比,并以纳秒为单位计算策略定义中使用的所需阈值。

Expand
值(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 堆栈,以产生实例工作负载。

流程

  1. 以云管理员身份登录到您的 OpenStack 环境。
  2. 检索自动扩展组 heat 堆栈的 ID:

    $ openstack stack show vnf -c id -c stack_status
    +--------------+--------------------------------------+
    | Field        | Value                                |
    +--------------+--------------------------------------+
    | id           | e0a15cee-34d1-418a-ac79-74ad07585730 |
    | stack_status | CREATE_COMPLETE                      |
    +--------------+--------------------------------------+
    Copy to Clipboard Toggle word wrap
  3. 将堆栈 ID 的值设置为环境变量:

    $ export STACK_ID=$(openstack stack show vnf -c id -f value)
    Copy to Clipboard Toggle word wrap
  4. 将指标作为资源类型实例(服务器 ID)的聚合返回,其值计算为百分比。聚合返回为 CPU 时间的纳秒值。我们将这个数字分成 1000000000,以获得数值(以秒为单位)。然后,我们将值除以粒度,本例中为 60 秒。然后,该值通过将 100 的倍数转换为一个百分比。最后,我们将总的值除以分配给实例的类别提供的 vCPU 数量,在本例中为 2 个 vCPU,为我们提供一个以百分比表示的值:

    $ openstack metric aggregates --resource-type instance --sort-column timestamp --sort-descending '(/ (* (/ (/ (metric cpu rate:mean) 1000000000) 60) 100) 2)' server_group="$STACK_ID"
    +----------------------------------------------------+---------------------------+-------------+--------------------+
    | name                                               | timestamp                 | granularity |              value |
    +----------------------------------------------------+---------------------------+-------------+--------------------+
    | 61bfb555-9efb-46f1-8559-08dec90f94ed/cpu/rate:mean | 2022-11-07T21:03:00+00:00 |        60.0 |  3.158333333333333 |
    | 61bfb555-9efb-46f1-8559-08dec90f94ed/cpu/rate:mean | 2022-11-07T21:02:00+00:00 |        60.0 | 2.6333333333333333 |
    | 199b0cb9-6ed6-4410-9073-0fb2e7842b65/cpu/rate:mean | 2022-11-07T21:02:00+00:00 |        60.0 |  2.533333333333333 |
    | 61bfb555-9efb-46f1-8559-08dec90f94ed/cpu/rate:mean | 2022-11-07T21:01:00+00:00 |        60.0 |  2.833333333333333 |
    | 199b0cb9-6ed6-4410-9073-0fb2e7842b65/cpu/rate:mean | 2022-11-07T21:01:00+00:00 |        60.0 | 3.0833333333333335 |
    | 61bfb555-9efb-46f1-8559-08dec90f94ed/cpu/rate:mean | 2022-11-07T21:00:00+00:00 |        60.0 | 13.450000000000001 |
    | a95ab818-fbe8-4acd-9f7b-58e24ade6393/cpu/rate:mean | 2022-11-07T21:00:00+00:00 |        60.0 |               2.45 |
    | 199b0cb9-6ed6-4410-9073-0fb2e7842b65/cpu/rate:mean | 2022-11-07T21:00:00+00:00 |        60.0 | 2.6166666666666667 |
    | 61bfb555-9efb-46f1-8559-08dec90f94ed/cpu/rate:mean | 2022-11-07T20:59:00+00:00 |        60.0 | 60.583333333333336 |
    | a95ab818-fbe8-4acd-9f7b-58e24ade6393/cpu/rate:mean | 2022-11-07T20:59:00+00:00 |        60.0 |               2.35 |
    | 199b0cb9-6ed6-4410-9073-0fb2e7842b65/cpu/rate:mean | 2022-11-07T20:59:00+00:00 |        60.0 |              2.525 |
    | 61bfb555-9efb-46f1-8559-08dec90f94ed/cpu/rate:mean | 2022-11-07T20:58:00+00:00 |        60.0 |  71.35833333333333 |
    | a95ab818-fbe8-4acd-9f7b-58e24ade6393/cpu/rate:mean | 2022-11-07T20:58:00+00:00 |        60.0 |              3.025 |
    | 199b0cb9-6ed6-4410-9073-0fb2e7842b65/cpu/rate:mean | 2022-11-07T20:58:00+00:00 |        60.0 |                9.3 |
    | 61bfb555-9efb-46f1-8559-08dec90f94ed/cpu/rate:mean | 2022-11-07T20:57:00+00:00 |        60.0 |  66.19166666666668 |
    | a95ab818-fbe8-4acd-9f7b-58e24ade6393/cpu/rate:mean | 2022-11-07T20:57:00+00:00 |        60.0 |              2.275 |
    | 199b0cb9-6ed6-4410-9073-0fb2e7842b65/cpu/rate:mean | 2022-11-07T20:57:00+00:00 |        60.0 |  56.31666666666667 |
    | 61bfb555-9efb-46f1-8559-08dec90f94ed/cpu/rate:mean | 2022-11-07T20:56:00+00:00 |        60.0 |  59.50833333333333 |
    | a95ab818-fbe8-4acd-9f7b-58e24ade6393/cpu/rate:mean | 2022-11-07T20:56:00+00:00 |        60.0 |              2.375 |
    | 199b0cb9-6ed6-4410-9073-0fb2e7842b65/cpu/rate:mean | 2022-11-07T20:56:00+00:00 |        60.0 | 63.949999999999996 |
    | a95ab818-fbe8-4acd-9f7b-58e24ade6393/cpu/rate:mean | 2022-11-07T20:55:00+00:00 |        60.0 | 15.558333333333335 |
    | 199b0cb9-6ed6-4410-9073-0fb2e7842b65/cpu/rate:mean | 2022-11-07T20:55:00+00:00 |        60.0 |              93.85 |
    | a95ab818-fbe8-4acd-9f7b-58e24ade6393/cpu/rate:mean | 2022-11-07T20:54:00+00:00 |        60.0 |  59.54999999999999 |
    | 199b0cb9-6ed6-4410-9073-0fb2e7842b65/cpu/rate:mean | 2022-11-07T20:54:00+00:00 |        60.0 |  61.23333333333334 |
    | a95ab818-fbe8-4acd-9f7b-58e24ade6393/cpu/rate:mean | 2022-11-07T20:53:00+00:00 |        60.0 |  74.73333333333333 |
    | a95ab818-fbe8-4acd-9f7b-58e24ade6393/cpu/rate:mean | 2022-11-07T20:52:00+00:00 |        60.0 |  57.86666666666667 |
    | a95ab818-fbe8-4acd-9f7b-58e24ade6393/cpu/rate:mean | 2022-11-07T20:51:00+00:00 |        60.0 | 60.416666666666664 |
    +----------------------------------------------------+---------------------------+-------------+--------------------+
    Copy to Clipboard Toggle word wrap

4.4.3. 为实例工作负载检索可用的遥测

检索实例工作负载的可用遥测,并以百分比表示 vCPU 使用率。

先决条件

  • 使用自动扩展组资源创建 heat 堆栈,以产生实例工作负载。

流程

  1. 以云管理员身份登录到您的 OpenStack 环境。
  2. 检索自动扩展组 heat 堆栈的 ID:

    $ openstack stack show vnf -c id -c stack_status
    +--------------+--------------------------------------+
    | Field        | Value                                |
    +--------------+--------------------------------------+
    | id           | e0a15cee-34d1-418a-ac79-74ad07585730 |
    | stack_status | CREATE_COMPLETE                      |
    +--------------+--------------------------------------+
    Copy to Clipboard Toggle word wrap
  3. 将堆栈 ID 的值设置为环境变量:

    $ export STACK_ID=$(openstack stack show vnf -c id -f value)
    Copy to Clipboard Toggle word wrap
  4. 检索您要返回数据的工作负载实例的 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 Toggle word wrap
  5. 为其中一个返回的实例工作负载名称设置实例 ID:

    $ INSTANCE_NAME='vn-xlfb4jb-yhbq6fkk2kec-qsu2lr47zigs-vnf-y27wuo25ce4e' ; export INSTANCE_ID=$(openstack server list --name $INSTANCE_NAME -c ID -f value)
    Copy to Clipboard Toggle word wrap
  6. 验证已存储了实例资源 ID 的指标。如果没有可用的指标,则自实例创建以来,可能没有足够的时间。如果已经足够时间,您可以在 /var/log/containers/ceilometer/ 中检查数据收集服务的日志,并在 / var/log/containers/gnocchi/ 中检查 时间序列数据库服务的日志:

    $ openstack metric resource show --column metrics $INSTANCE_ID
    +---------+---------------------------------------------------------------------+
    | Field   | Value                                                               |
    +---------+---------------------------------------------------------------------+
    | metrics | compute.instance.booting.time: 57ca241d-764b-4c58-aa32-35760d720b08 |
    |         | cpu: d7767d7f-b10c-4124-8893-679b2e5d2ccd                           |
    |         | disk.ephemeral.size: 038b11db-0598-4cfd-9f8d-4ba6b725375b           |
    |         | disk.root.size: 843f8998-e644-41f6-8635-e7c99e28859e                |
    |         | memory.usage: 1e554370-05ac-4107-98d8-9330265db750                  |
    |         | memory: fbd50c0e-90fa-4ad9-b0df-f7361ceb4e38                        |
    |         | vcpus: 0629743e-6baa-4e22-ae93-512dc16bac85                         |
    +---------+---------------------------------------------------------------------+
    Copy to Clipboard Toggle word wrap
  7. 验证资源指标是否有可用的测量结果,并记录粒度值,因为在运行 openstack metric aggregates 命令时会使用它:

    $ openstack metric measures show --resource-id $INSTANCE_ID --aggregation rate:mean cpu
    +---------------------------+-------------+---------------+
    | timestamp                 | granularity |         value |
    +---------------------------+-------------+---------------+
    | 2022-11-08T14:12:00+00:00 |        60.0 | 71920000000.0 |
    | 2022-11-08T14:13:00+00:00 |        60.0 | 88920000000.0 |
    | 2022-11-08T14:14:00+00:00 |        60.0 | 76130000000.0 |
    | 2022-11-08T14:15:00+00:00 |        60.0 | 17640000000.0 |
    | 2022-11-08T14:16:00+00:00 |        60.0 |  3330000000.0 |
    | 2022-11-08T14:17:00+00:00 |        60.0 |  2450000000.0 |
    ...
    Copy to Clipboard Toggle word wrap
  8. 通过查看实例工作负载的已配置类别,检索应用到工作负载实例的 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
    Copy to Clipboard Toggle word wrap
  9. 将指标作为资源类型实例(服务器 ID)的聚合返回,其值计算为百分比。聚合返回为 CPU 时间的纳秒值。我们将这个数字分成 1000000000,以获得数值(以秒为单位)。然后,我们将值按粒度划分,在这个示例中为 60 秒(与前面通过 openstack metric measure show show 命令检索一样)。然后,该值通过将 100 的倍数转换为一个百分比。最后,我们将总的值除以分配给实例的类别提供的 vCPU 数量,在本例中为 2 个 vCPU,为我们提供一个以百分比表示的值:

    $ openstack metric aggregates --resource-type instance --sort-column timestamp --sort-descending '(/ (* (/ (/ (metric cpu rate:mean) 1000000000) 60) 100) 2)' id=$INSTANCE_ID
    +----------------------------------------------------+---------------------------+-------------+--------------------+
    | name                                               | timestamp                 | granularity |              value |
    +----------------------------------------------------+---------------------------+-------------+--------------------+
    | bc1811de-48ed-44c1-ae22-c01f36d6cb02/cpu/rate:mean | 2022-11-08T14:26:00+00:00 |        60.0 |               2.45 |
    | bc1811de-48ed-44c1-ae22-c01f36d6cb02/cpu/rate:mean | 2022-11-08T14:25:00+00:00 |        60.0 |             11.075 |
    | bc1811de-48ed-44c1-ae22-c01f36d6cb02/cpu/rate:mean | 2022-11-08T14:24:00+00:00 |        60.0 |               61.3 |
    | bc1811de-48ed-44c1-ae22-c01f36d6cb02/cpu/rate:mean | 2022-11-08T14:23:00+00:00 |        60.0 |  74.78333333333332 |
    | bc1811de-48ed-44c1-ae22-c01f36d6cb02/cpu/rate:mean | 2022-11-08T14:22:00+00:00 |        60.0 | 55.383333333333326 |
    ...
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat