13.9. 가상 리소스에 대한 Prometheus 쿼리


OpenShift Virtualization은 클러스터에서 인프라 리소스를 사용하는 방식을 모니터링하기 위한 메트릭을 제공합니다. 메트릭은 다음 리소스를 다룹니다.

  • vCPU
  • 네트워크
  • 스토리지
  • 게스트 메모리 스왑

OpenShift Container Platform 모니터링 대시보드를 사용하여 가상화 메트릭을 쿼리합니다.

13.9.1. 사전 요구 사항

  • vCPU 지표를 사용하려면 MachineConfig 오브젝트에 schedstats=enable 커널 인수를 적용해야 합니다. 이 커널 인수를 사용하면 디버깅 및 성능 튜닝에 사용되는 스케줄러 통계가 활성화되고 스케줄러에 약간의 부하가 추가됩니다. 커널 인수 적용에 대한 자세한 내용은 OpenShift Container Platform 머신 구성 작업 설명서를 참조하십시오.
  • 게스트 메모리 스와핑 쿼리가 데이터를 반환하려면 가상 게스트에서 메모리 스와핑을 활성화해야 합니다.

13.9.2. 메트릭 쿼리

OpenShift Container Platform 모니터링 대시보드를 사용하면 Pacemaker에서 표시되는 메트릭을 검사하기 위해 Prometheus Query Language(PromQL) 쿼리를 실행할 수 있습니다. 이 기능을 사용하면 클러스터 상태 및 모니터링 중인 모든 사용자 정의 워크로드에 대한 정보가 제공됩니다.

클러스터 관리자는 모든 핵심 OpenShift Container Platform 및 사용자 정의 프로젝트에 대한 메트릭을 쿼리할 수 있습니다.

개발자는 메트릭을 쿼리할 때 프로젝트 이름을 지정해야 합니다. 선택한 프로젝트의 메트릭을 확인하는 데 필요한 권한이 있어야 합니다.

13.9.2.1. 클러스터 관리자로서 모든 프로젝트의 메트릭 쿼리

클러스터 관리자 또는 모든 프로젝트에 대한 보기 권한이 있는 사용자로 Metrics UI에서 모든 기본 OpenShift Container Platform 및 사용자 정의 프로젝트에 대한 메트릭에 액세스할 수 있습니다.

참고

클러스터 관리자만 OpenShift Container Platform 모니터링을 통해 제공되는 타사 UI에 액세스할 수 있습니다.

사전 요구 사항

  • cluster-admin 역할 또는 모든 프로젝트에 대한 보기 권한이 있는 사용자로 클러스터에 액세스할 수 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

절차

  1. OpenShift Container Platform 웹 콘솔의 관리자 관점에서 Observe Metrics 를 선택합니다.
  2. 커서에 표시기 삽입을 선택하여 사전 정의된 쿼리 목록을 확인합니다.
  3. 사용자 정의 쿼리를 생성하려면 표현식 필드에 PromQL(Prometheus Query Language) 쿼리를 추가합니다.
  4. 여러 쿼리를 추가하려면 쿼리 추가를 선택합니다.
  5. 쿼리를 삭제하려면 쿼리 옆에 있는 kebab 를 선택한 다음 쿼리 삭제를 선택합니다.
  6. 쿼리 실행을 비활성화하려면 쿼리 옆에 있는 kebab 를 선택하고 쿼리 비활성화를 선택합니다.
  7. 생성된 쿼리를 실행하려면 쿼리 실행을 선택합니다. 쿼리의 메트릭은 플롯에 시각화됩니다. 쿼리가 유효하지 않으면 UI에 오류 메시지가 표시됩니다.

    참고

    대량의 데이터에서 작동하는 쿼리 시간이 초과되거나 시계열 그래프에 있을 때 브라우저가 과부하될 수 있습니다. 이를 방지하려면 그래프 숨기기를 선택하고 메트릭 테이블만 사용하여 쿼리를 조정합니다. 그런 다음 실행 가능한 쿼리를 검색한 후 플롯을 활성화하여 그래프를 그립니다.

  8. 선택 사항: 이제 페이지 URL에 실행한 쿼리가 포함됩니다. 나중에 이 쿼리 세트를 다시 사용하려면 이 URL을 저장합니다.

추가 리소스

13.9.2.2. 개발자로 사용자 정의 프로젝트의 메트릭 쿼리

사용자 정의 프로젝트의 메트릭에 대해 개발자 또는 프로젝트에 대한 보기 권한이 있는 사용자로 액세스할 수 있습니다.

개발자 관점에서 Metrics UI에는 선택한 프로젝트에 대한 사전 정의된 CPU, 메모리, 대역폭 및 네트워크 패킷 쿼리가 포함되어 있습니다. 프로젝트에 대한 CPU, 메모리, 대역폭, 네트워크 패킷 및 애플리케이션 메트릭에 대해 사용자 정의 Prometheus Query Language(PromQL) 쿼리를 실행할 수도 있습니다.

참고

개발자는 관리자 관점이 아닌 개발자 관점만 사용할 수 있습니다. 개발자는 한 번에 하나의 프로젝트의 메트릭만 쿼리할 수 있습니다. 개발자는 코어 플랫폼 구성 요소에 대해 OpenShift Container Platform 모니터링을 통해 제공되는 타사 UI에 액세스할 수 없습니다. 대신 사용자 정의 프로젝트에 Metrics UI를 사용합니다.

사전 요구 사항

  • 개발자로 또는 메트릭을 확인하는 프로젝트에 대한 보기 권한이 있는 사용자로 클러스터에 액세스할 수 있습니다.
  • 사용자 정의 프로젝트에 대한 모니터링을 활성화했습니다.
  • 사용자 정의 프로젝트에 서비스를 배포했습니다.
  • 서비스에서 모니터링 방법을 정의하는 데 사용할 ServiceMonitor CRD(사용자 정의 리소스 정의(Custom Resource Definition))가 생성되었습니다.

절차

  1. OpenShift Container Platform 웹 콘솔의 개발자 관점에서 Observe Metrics 를 선택합니다.
  2. Project: 목록에서 메트릭을 보려는 프로젝트를 선택합니다.
  3. 쿼리 선택 목록에서 쿼리를 선택하거나 PromQL 표시를 선택하여 사용자 정의 PromQL 쿼리를 실행합니다.

    참고

    개발자 관점에서는 한 번에 하나의 쿼리만 실행할 수 있습니다.

추가 리소스

13.9.3. 가상화 메트릭

다음 메트릭 설명에는 예제 Prometheus Query Language(PromQL) 쿼리가 포함됩니다. 이러한 메트릭은 API가 아니며 버전 간에 변경될 수 있습니다.

참고

다음 예제에서는 기간을 지정하는 topk 쿼리를 사용합니다. 해당 기간 동안 가상 머신을 삭제해도 쿼리 출력에 계속 표시될 수 있습니다.

13.9.3.1. vCPU 메트릭

다음 쿼리는 I/O(입력/출력) 대기 중인 가상 머신을 식별할 수 있습니다.

kubevirt_vmi_vcpu_wait_seconds
가상 시스템의 vCPU에 대해 대기 시간(초)을 반환합니다.

'0' 이상의 값은 vCPU가 실행하려고 하지만 호스트 스케줄러는 아직 실행할 수 없음을 의미합니다. 이러한 실행 불가능은 I/O에 문제가 있음을 나타냅니다.

참고

vCPU 지표를 쿼리하려면 먼저 MachineConfig 오브젝트에 schedstats=enable 커널 인수를 적용해야 합니다. 이 커널 인수를 사용하면 디버깅 및 성능 튜닝에 사용되는 스케줄러 통계가 활성화되고 스케줄러에 약간의 부하가 추가됩니다.

vCPU 대기 시간 쿼리의 예

topk(3, sum by (name, namespace) (rate(kubevirt_vmi_vcpu_wait_seconds[6m]))) > 0 1

1
이 쿼리는 6분 동안 매 순간에 I/O를 기다리는 상위 3개의 VM을 반환합니다.

13.9.3.2. 네트워크 메트릭

다음 쿼리는 네트워크를 포화 상태로 만드는 가상 머신을 식별할 수 있습니다.

kubevirt_vmi_network_receive_bytes_total
가상 시스템의 네트워크에서 수신된 총 트래픽(바이트 단위)을 반환합니다.
kubevirt_vmi_network_transmit_bytes_total
가상 시스템의 네트워크에서 전송된 총 트래픽(바이트 단위)을 반환합니다.

네트워크 트래픽 쿼리의 예

topk(3, sum by (name, namespace) (rate(kubevirt_vmi_network_receive_bytes_total[6m])) + sum by (name, namespace) (rate(kubevirt_vmi_network_transmit_bytes_total[6m]))) > 0 1

1
이 쿼리는 6분 동안 매번 가장 많은 네트워크 트래픽을 전송하는 상위 3 개의 VM을 반환합니다.

13.9.3.3. 스토리지 메트릭

13.9.3.3.1. 스토리지 관련 트래픽

다음 쿼리는 대량의 데이터를 작성하는 VM을 식별할 수 있습니다.

kubevirt_vmi_storage_read_traffic_bytes_total
가상 머신의 스토리지 관련 트래픽의 총 양(바이트)을 반환합니다.
kubevirt_vmi_storage_write_traffic_bytes_total
가상 시스템의 스토리지 관련 트래픽의 총 스토리지 쓰기(바이트)를 반환합니다.

스토리지 관련 트래픽 쿼리의 예

topk(3, sum by (name, namespace) (rate(kubevirt_vmi_storage_read_traffic_bytes_total[6m])) + sum by (name, namespace) (rate(kubevirt_vmi_storage_write_traffic_bytes_total[6m]))) > 0 1

1
이 쿼리는 6분 동안 매번 가장 많은 스토리지 트래픽을 수행하는 상위 3 개의 VM을 반환합니다.
13.9.3.3.2. I/O 성능

다음 쿼리는 스토리지 장치의 I/O 성능을 확인할 수 있습니다.

kubevirt_vmi_storage_iops_read_total
가상 시스템이 초당 수행하는 쓰기 I/O 작업 양을 반환합니다.
kubevirt_vmi_storage_iops_write_total
가상 시스템이 초당 수행하는 읽기 I/O 작업의 양을 반환합니다.

I/O 성능 쿼리의 예

topk(3, sum by (name, namespace) (rate(kubevirt_vmi_storage_iops_read_total[6m])) + sum by (name, namespace) (rate(kubevirt_vmi_storage_iops_write_total[6m]))) > 0 1

1
이 쿼리는 6분 동안 매 순간 초당 최대 I/O 작업을 수행하는 상위 3 개의 VM을 반환합니다.

13.9.3.4. 게스트 메모리 스왑 메트릭

다음 쿼리는 메모리 스와핑을 가장 많이 수행하는 스왑 사용 게스트를 식별할 수 있습니다.

kubevirt_vmi_memory_swap_in_traffic_bytes_total
가상 게스트가 스와핑하는 메모리의 총 양(바이트 단위)을 반환합니다.
kubevirt_vmi_memory_swap_out_traffic_bytes_total
가상 게스트가 스왑 아웃하는 메모리의 총 양(바이트 단위)을 반환합니다.

메모리 스와핑 쿼리의 예

topk(3, sum by (name, namespace) (rate(kubevirt_vmi_memory_swap_in_traffic_bytes_total[6m])) + sum by (name, namespace) (rate(kubevirt_vmi_memory_swap_out_traffic_bytes_total[6m]))) > 0 1

1
이 쿼리는 6분 동안 매 순간 게스트가 가장 많은 메모리 스왑을 수행하는 상위 3개의 VM을 반환합니다.
참고

메모리 스와핑은 가상 시스템이 메모리 부족 상태에 있음을 나타냅니다. 가상 시스템의 메모리 할당을 늘리면 이 문제가 완화될 수 있습니다.

13.9.4. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.