Prometheus 측정항목 사용

이 페이지에서는 Cloud Monitoring에서 가용성 및 지연 시간 SLI에 대한 Prometheus 측정항목을 사용하고 이러한 측정항목을 사용하여 SLO를 만드는 방법에 대한 기본 사항을 설명합니다.

Prometheus 기본 사항

Prometheus는 측정항목 및 알림에 사용되는 최고의 오픈소스 모니터링 솔루션입니다.

Prometheus는 측정항목의 키-값 식별자가 포함된 측정기준 데이터를 지원하고 PromQL 쿼리 언어를 제공하며 다른 제품에 내보내기를 제공하여 여러 통합을 지원합니다.

Monitoring에서 Prometheus를 사용하려면 Google Cloud Managed Service for Prometheus를 사용하는 것이 좋습니다.

측정항목

Prometheus에서는 다음 유형의 측정항목을 지원합니다.

  • 카운터: 단조 증가 또는 재시작 시에만 0으로 재설정될 수 있는 단일 값입니다.
  • 게이지: 임의로 설정할 수 있는 단일 숫자 값입니다.
  • 히스토그램: 범위 변동 및 범위 값을 샘플링하기 위한 구성 가능한 버킷 그룹이며 관찰된 모든 값의 합계도 제공합니다.
  • 요약: 히스토그램과 비슷하지만 슬라이딩 기간 동안의 구성 가능한 분위수를 계산합니다.

자세한 내용은 측정항목 유형을 참조하세요.

SLI 측정항목 만들기

애플리케이션에서 Prometheus 측정항목을 내보내는 경우 이 측정항목을 SLI에 사용할 수 있습니다.

  • 요청 및 오류 수 계산에 대한 가용성 SLI의 경우 Prometheus 카운터 측정항목으로 시작할 수 있습니다.
  • 지연 시간 SLI의 경우 Prometheus 히스토그램이나 요약 측정항목을 사용할 수 있습니다.

Google Cloud Managed Service for Prometheus로 Prometheus 측정항목을 수집하려면 관리형 또는 자체 배포형 측정항목 수집 설정에 대한 문서를 참조하세요.

Google Cloud 콘솔에서 SLO를 만들면 기본 가용성 및 지연 시간 SLO 유형에는 Prometheus 측정항목이 포함되지 않습니다. Prometheus 측정항목을 사용하려면 커스텀 SLO를 만든 후 SLI에 대한 Prometheus 측정항목을 선택합니다.

Prometheus 측정항목은 prometheus.googleapis.com/으로 시작됩니다.

GKE용 측정항목

Google Cloud Managed Service for Prometheus의 측정항목에 대한 관리형 수집은 GKE에서 기본적으로 사용 설정됩니다. 기본적으로 관리형 수집을 사용 설정하지 않는 GKE 환경에서 실행하는 경우 수동으로 관리형 수집을 사용 설정할 수 있습니다. 관리형 수집이 사용 설정되면 클러스터 내 구성요소가 실행 중이더라도 유효한 측정항목 엔드포인트를 스크래핑하는 PodMonitoring 리소스를 배포하거나 관리형 측정항목 패키지 중 하나를 사용 설정할 때까지 측정항목이 생성되지 않습니다.

컨트롤 플레인 측정항목 패키지에는 시스템 상태를 나타내는 유용한 지표인 측정항목이 포함되어 있습니다. 제어 영역 측정항목 수집을 사용 설정하여 가용성, 지연 시간, 기타 SLI에 대한 측정항목을 사용합니다.

  • API 서버 측정항목을 사용하여 API 서버 로드, 오류를 반환하는 API 서버 요청 비율, API 서버에서 수신한 요청의 응답 지연 시간을 추적합니다.
  • 스케줄러 측정항목을 사용하면 대기 중인 포드를 위한 리소스가 충분하지 않을 때 예약 문제에 사전에 대응할 수 있습니다.

가용성 SLI 측정항목

Cloud Monitoring API에서 TimeSeriesRatio 구조를 사용하여 총 요청에 대한 '양호' 또는 '불량' 요청의 비율을 설정해 요청 기반 가용성 SLI를 표현합니다. 이 비율은 RequestBasedSli 구조의 goodTotalRatio 필드에서 사용됩니다.

애플리케이션에서 이 비율을 구성하는 데 사용할 수 있는 Prometheus 측정항목을 내보내야 합니다. 애플리케이션에서 다음 중 최소 두 개 이상을 내보내야 합니다.

  1. 총 이벤트 수를 계산하는 측정항목. 비율의 totalServiceFilter에서 이 측정항목을 사용합니다.

    모든 이벤트에 대해 증가하는 Prometheus 카운터를 사용할 수 있습니다.

  2. '불량' 이벤트를 계산하는 측정항목. 비율의 badServiceFilter에서 이 측정항목을 사용합니다.

    모든 오류 또는 다른 '불량' 이벤트에 대해 증가하는 Prometheus 카운터를 사용할 수 있습니다.

  3. '양호' 이벤트를 계산하는 측정항목. 비율의 goodServiceFilter에서 이 측정항목을 사용합니다.

    성공 또는 기타 '양호' 이벤트에 대해 증가하는 Prometheus 카운터를 사용할 수 있습니다.

지연 시간 SLI 측정항목

Cloud Monitoring API에서 DistributionCut 구조를 만들어 요청 기반 지연 시간 SLI를 표현합니다. 이 구조는 RequestBasedSli 구조의 distributionCut 필드에서 사용됩니다.

애플리케이션에서 분포-컷 값을 구성하는 데 사용할 수 있는 Prometheus 측정항목을 내보내야 합니다. 이 용도로 Prometheus 히스토그램이나 요약을 사용할 수 있습니다. 응답이 SLO에 포함되었는지 여부를 정확하게 측정하는 버킷을 정의하는 방법은 Prometheus 문서의 측정항목 유형을 참조하세요.

다음 JSON 예시에서는 GKE 제어 영역 측정항목인 prometheus.googleapis.com/apiserver_request_duration_seconds 측정항목을 사용하여 서비스의 지연 시간 SLO를 만듭니다. 이 SLO에서는 응답 지연 시간의 98%가 월 50초 미만이어야 합니다.

{
 "displayName": "98% Calendar month - Request Duration Under 50s",
 "goal": 0.98,
 "calendarPeriod": "MONTH",
 "serviceLevelIndicator": {
   "requestBased": {
     "distributionCut": {
       "distributionFilter": "metric.type=\"prometheus.googleapis.com/apiserver_request_duration_seconds/histogram\" resource.type=\"prometheus_target\"",
       "range": {
         "min": "-Infinity",
         "max": 50
       }
     }
   }
 }
}

다음 단계