5.4. rate 함수를 사용할 때 자동 스케일링 임계값에 CPU Telemetry 값 사용


OS::Heat::Autoscaling heat 오케스트레이션 템플릿(HOT)을 사용하고 CPU에 대한 임계값을 설정하는 경우 값은 CPU 시간 나노초로 표시됩니다. 이 값은 인스턴스 워크로드에 할당된 가상 CPU 수에 따라 동적 값입니다. prometheus를 쿼리할 때 rate 함수를 사용할 때 CPU 나노초 값을 백분율로 계산하고 표시할 수 있습니다.

5.4.1. CPU Telemetry 값을 백분율로 계산

CPU Telemetry는 Prometheus에 나노초 단위의 CPU 사용률로 저장됩니다. CPU Telemetry를 사용하여 자동 스케일링 임계값을 정의하는 경우 임계값을 정의할 때 더 자연스럽기 때문에 값을 CPU 사용률의 백분율로 표시하는 것이 좋습니다. 자동 스케일링 그룹의 일부로 사용되는 확장 정책을 정의할 때 임계값을 백분율로 정의하고 나노초가 아닌 백분율로 CPU 사용률을 계산할 수 있습니다.

  • 메트릭 증가 비율을 1000,000,000으로 나눕니다.
  • 응답을 vCPU 수로 나눕니다.
  • 응답을 100으로 곱하여 백분율을 얻습니다.

이 공식을 사용하여 PromQL 쿼리에서 이 값을 계산합니다. "(rate(rate(ceilometer_cpu{server_group=~<stack_id>.*'}[150s])) / 1000000000 / <number_of_vCPUs> * 100".

  • <server_name_prefix>를 서버 이름 접두사 이름으로 바꿉니다.
  • <number_of_vCPUs>를 vCPU 수로 바꿉니다.

5.4.2. 인스턴스 워크로드 vCPU를 백분율로 표시

openstack metric query 명령을 사용하여 CPU Telemetry 데이터를 인스턴스의 나노초 값이 아닌 백분율로 표시할 수 있습니다.

사전 요구 사항

  • 인스턴스 워크로드를 생성하는 자동 스케일링 그룹 리소스를 사용하여 heat 스택을 생성합니다.

프로세스

  1. openstack 클라이언트 Pod에 액세스합니다.

    $ oc rsh openstackclient
  2. 자동 스케일링 그룹 heat 스택의 stack_id 를 검색합니다.

    $ openstack stack show stack1 -c id
    +-------+--------------------------------------+
    | Field | Value                                |
    +-------+--------------------------------------+
    | id    | 1ae77e51-ba09-452c-bc09-385f0791a366 |
    +-------+--------------------------------------+
  3. 백분율로 계산된 값을 사용하여 증가 메트릭을 반환합니다. 증가 속도는 지정된 창에서 지표가 증가한 CPU 시간 나노초 값으로 반환됩니다. 해당 수를 1000000000으로 나누어 값을 초 단위로 나눕니다. 그런 다음 해당 값을 백분율로 변환하면 100을 곱하면 됩니다. 마지막으로 총 값을 인스턴스에 할당된 플레이버로 제공하는 vCPU 수로 나눕니다. 이 예에서는 vCPU 값이 1 vCPU 값을 제공하여 CPU 시간의 백분율로 표시됩니다. 쿼리에서 'server_group' 레이블 값으로 stack_id를 사용하여 스택에서 결과만 가져옵니다.

    $ openstack metric query "rate(ceilometer_cpu{server_group='1ae77e51-ba09-452c-bc09-385f0791a366'}[150s])/1000000000*100/1" -c resource_name -c value
    +-------------------------------------------------------------------------+-------+
    | resource_name                                                           | value |
    +-------------------------------------------------------------------------+-------+
    | st-ih4tya6-bf63mo4vvyqp-pvdwdmvzov5c-vnf-x4f535xcvjyp:instance-00000003 | 0.525 |
    +-------------------------------------------------------------------------+-------+
  4. 쿼리에 offset 키워드를 추가하여 이전 값을 확인할 수 있습니다. 다음은 이전 단계와 유사한 출력을 제공하지만 과거의 데이터 10분은 다음과 같습니다.

    $ openstack metric query "rate(ceilometer_cpu{server_group='1ae77e51-ba09-452c-bc09-385f0791a366'}[150s] offset 10m)/1000000000*100/1" -c resource_name -c value
    +-------------------------------------------------------------------------+-------------------+
    | resource_name                                                           | value          	  |
    +-------------------------------------------------------------------------+-------------------+
    | st-ih4tya6-3ul7w6w66st7-mmvkxuwghjxl-vnf-dj7k7665csuv:instance-00000002 | 38.40833333333333 |
    +-------------------------------------------------------------------------+-------------------+

5.4.3. 인스턴스 워크로드에 사용 가능한 Telemetry 검색

인스턴스 워크로드에 사용 가능한 Telemetry를 검색하고 vCPU 사용률을 백분율로 표현합니다.

사전 요구 사항

  • 인스턴스 워크로드를 생성하는 자동 스케일링 그룹 리소스를 사용하여 heat 스택을 생성합니다.

프로세스

  1. openstack 클라이언트 Pod에 액세스합니다.

    $ oc rsh openstackclient
  2. 자동 스케일링 그룹 heat 스택의 ID를 검색합니다.

    $ openstack stack show stack1 -c id -c stack_status
    +--------------+--------------------------------------+
    | Field        | Value                                |
    +--------------+--------------------------------------+
    | id           | 0d6e19a9-2e1c-4728-b9ed-320da60c3c9d |
    | stack_status | CREATE_COMPLETE                      |
    +--------------+--------------------------------------+
  3. 스택 ID의 값을 환경 변수로 설정합니다.

    $ export STACK_ID=$(openstack stack show stack1 -c id -f value)
  4. 데이터를 반환할 워크로드 인스턴스의 ID를 검색합니다. 서버 목록을 긴 양식을 사용하여 자동 스케일링 그룹의 일부인 인스턴스를 필터링할 수 있습니다.

    $ openstack server list --long --fit-width -c ID -c Name -c Properties | grep "metering.server_group='$STACK_ID'"
    | 94a776a6-ab74-41ec-9c21-26d3ca0a0138 | autoscaling_server_stack1-autoscalinggroup-l3qthrzpad67-nonm7balfxrn-sx6oebhyi3qo | metering.server_group='168364ae-afe2-4275-af28-aae01ee63b00' |
  5. 반환된 인스턴스 워크로드 이름 중 하나에 대한 인스턴스 ID를 설정합니다.

    $ INSTANCE_ID=94a776a6-ab74-41ec-9c21-26d3ca0a0138
  6. 인스턴스 리소스 ID에 대한 지표가 저장되었는지 확인합니다. 사용 가능한 메트릭이 없는 경우 인스턴스가 생성된 이후 시간이 충분하지 않습니다. 충분한 시간이 경과한 경우 인스턴스가 실행 중인 컴퓨팅 노드에서 podman logs ceilometer_agent_compute 를 실행하여 데이터 수집 서비스에 대한 로그를 확인할 수 있으며 oc logs prometheus-metric-storage-0 -c prometheus 를 실행하여 시계열 데이터베이스 서비스 Prometheus의 로그를 확인할 수 있습니다.

    $ openstack metric query "ceilometer_cpu{resource='$INSTANCE_ID'}" -c resource -c resource_name -c value -c unit
    +--------------------------------------+-----------------------------------------------------------------------------------------------------+------+--------------+
    | resource                             | resource_name                                                                                       | unit | value        |
    +--------------------------------------+-----------------------------------------------------------------------------------------------------+------+--------------+
    | a19f11ba-7834-4143-bf83-766af8199f04 | autoscaling_server_stack1-autoscalinggroup-5yzjn6ow4x6v-gmu2apozwluw-t7nqx63tybxh:instance-0000003c | ns   | 204290000000 |
    +--------------------------------------+-----------------------------------------------------------------------------------------------------+------+--------------+
  7. 수집된 ceilometer 지표를 표시합니다.

    $ openstack metric list | grep ceilometer
    | ceilometer_cpu                            |
    | ceilometer_disk_device_allocation         |
    | ceilometer_disk_device_capacity           |
    | ceilometer_disk_device_read_bytes         |
    | ceilometer_disk_device_read_latency       |
    | ceilometer_disk_device_read_requests      |
    | ceilometer_disk_device_usage              |
    | ceilometer_disk_device_write_bytes        |
    | ceilometer_disk_device_write_latency      |
    | ceilometer_disk_device_write_requests     |
    | ceilometer_image_size                     |
    | ceilometer_memory_usage                   |
    | ceilometer_network_incoming_bytes         |
    | ceilometer_network_incoming_bytes_delta   |
    | ceilometer_network_incoming_packets       |
    | ceilometer_network_incoming_packets_drop  |
    | ceilometer_network_incoming_packets_error |
    | ceilometer_network_outgoing_bytes         |
    | ceilometer_network_outgoing_bytes_delta   |
    | ceilometer_network_outgoing_packets       |
    | ceilometer_network_outgoing_packets_drop  |
    | ceilometer_network_outgoing_packets_error |
  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
    1
  9. 백분율로 계산된 값을 사용하여 증가 메트릭을 반환합니다. 증가 속도는 지정된 창에서 지표가 증가한 CPU 시간 나노초 값으로 반환됩니다. 이 수를 1000000000으로 나누어 값을 초 단위로 가져옵니다. 그런 다음 이 값은 100을 곱하여 백분율로 변환됩니다. 마지막으로 총 값을 인스턴스에 할당된 플레이버에서 제공하는 vCPU 수로 나눕니다. 이 예에서는 vCPU 값이 1 vCPU 값을 제공하여 CPU 시간의 백분율로 표시됩니다.

    $ openstack metric query "rate(ceilometer_cpu{resource=~'$INSTANCE_ID'}[150s])/1000000000*100/1" -c resource_name -c value -c resource
    +--------------------------------------+-----------------------------------------------------------------------------------------------------+--------------------+
    | resource                             | resource_name                                                                                       | value              |
    +--------------------------------------+-----------------------------------------------------------------------------------------------------+--------------------+
    | a19f11ba-7834-4143-bf83-766af8199f04 | autoscaling_server_stack1-autoscalinggroup-5yzjn6ow4x6v-gmu2apozwluw-t7nqx63tybxh:instance-0000003c | 0.6166666666666667 |
    +--------------------------------------+-----------------------------------------------------------------------------------------------------+--------------------+
  10. offset 키워드를 쿼리에 추가하여 기록 결과를 봅니다. 다음 명령은 이전 단계와 유사한 출력을 제공하지만 과거의 데이터 10분은 다음과 같습니다.

    $ openstack metric query "rate(ceilometer_cpu{resource=~'$INSTANCE_ID'}[150s] offset 10m)/1000000000*100/1" -c resource_name -c value -c resource
    +--------------------------------------+-----------------------------------------------------------------------------------------------------+--------------------+
    | resource                             | resource_name                                                                                       | value              |
    +--------------------------------------+-----------------------------------------------------------------------------------------------------+--------------------+
    | a19f11ba-7834-4143-bf83-766af8199f04 | autoscaling_server_stack1-autoscalinggroup-5yzjn6ow4x6v-gmu2apozwluw-t7nqx63tybxh:instance-0000003c | 0.6083333333333333 |
    +--------------------------------------+-----------------------------------------------------------------------------------------------------+--------------------+
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동