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 스택을 생성합니다.
프로세스
openstack 클라이언트 Pod에 액세스합니다.
$ oc rsh openstackclient자동 스케일링 그룹 heat 스택의
stack_id를 검색합니다.$ openstack stack show stack1 -c id +-------+--------------------------------------+ | Field | Value | +-------+--------------------------------------+ | id | 1ae77e51-ba09-452c-bc09-385f0791a366 | +-------+--------------------------------------+백분율로 계산된 값을 사용하여 증가 메트릭을 반환합니다. 증가 속도는 지정된 창에서 지표가 증가한 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 | +-------------------------------------------------------------------------+-------+쿼리에 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 스택을 생성합니다.
프로세스
openstack 클라이언트 Pod에 액세스합니다.
$ oc rsh openstackclient자동 스케일링 그룹 heat 스택의 ID를 검색합니다.
$ openstack stack show stack1 -c id -c stack_status +--------------+--------------------------------------+ | Field | Value | +--------------+--------------------------------------+ | id | 0d6e19a9-2e1c-4728-b9ed-320da60c3c9d | | stack_status | CREATE_COMPLETE | +--------------+--------------------------------------+스택 ID의 값을 환경 변수로 설정합니다.
$ export STACK_ID=$(openstack stack show stack1 -c id -f value)데이터를 반환할 워크로드 인스턴스의 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' |반환된 인스턴스 워크로드 이름 중 하나에 대한 인스턴스 ID를 설정합니다.
$ INSTANCE_ID=94a776a6-ab74-41ec-9c21-26d3ca0a0138인스턴스 리소스 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 | +--------------------------------------+-----------------------------------------------------------------------------------------------------+------+--------------+수집된 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 |인스턴스 워크로드에 대해 구성된 플레이버를 검토하여 워크로드 인스턴스에 적용되는 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백분율로 계산된 값을 사용하여 증가 메트릭을 반환합니다. 증가 속도는 지정된 창에서 지표가 증가한 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 | +--------------------------------------+-----------------------------------------------------------------------------------------------------+--------------------+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 | +--------------------------------------+-----------------------------------------------------------------------------------------------------+--------------------+