서비스 수준 지표 만들기

커스텀 서비스를 만드는 경우 서비스 수준 목표(SLO)도 만들어야 합니다. 커스텀 서비스에는 사전 정의된 SLO가 없습니다.

자동으로 감지된 서비스에 대한 커스텀 SLO를 만들 수도 있지만 일반적이지 않습니다.

SLO는 성능을 측정하고 서비스 수준 지표(SLI)로 사용되는 측정항목 위에 구축됩니다. 커스텀 SLO의 경우 SLI에서 사용할 측정항목을 식별해야 합니다.

커스텀 SLO를 만들지 않는 경우 이 페이지를 건너뛸 수 있습니다.

적합한 측정항목 유형의 특성

서비스에 만들 수 있는 SLO에는 두 가지 유형이 있습니다.

  • 요청 기반 SLO
  • 기간 기반 SLO

SLO는 SLI로 선택한 측정항목 유형을 기반으로 합니다. 측정항목 유형의 값은 서로 관련된 방식에 따라 분류됩니다. 이 분류를 측정항목 종류라고 하며 GAUGE, DELTA,, CUMULATIVE의 세 가지 값을 사용할 수 있습니다. 자세한 내용은 MetricKind를 참조하세요.

요청 기반 SLO의 경우 SLI는 총 요청 수에 대한 적절한 요청 비율을 나타냅니다. SLI의 측정항목 종류는 DELTA 또는 CUMULATIVE여야 합니다. 요청 기반 SLO에서는 GAUGE 측정항목을 사용할 수 없습니다.

기간 기반 SLO의 경우 SLI는 특정 기간의 양호한 결과 수를 나타냅니다. 허용되는 측정항목 종류는 SLI를 구성하는 방법에 따라 다릅니다. 자세한 내용은 기간 기반 SLI 구조를 참조하세요.

SLO 유형에 대한 자세한 내용은 서비스 모니터링 개념을 참조하세요.

Cloud Monitoring에서 제공하는 측정항목 유형을 사용하거나 생성한 커스텀 측정항목 유형을 사용할 수 있습니다. 값은 두 경우 모두 만들려는 SLI에 적합합니다.

부적합한 측정항목 유형

SLI로 사용할 측정항목 유형을 고려할 때는 카디널리티가 높은 측정항목 유형을 사용하지 마세요. 카디널리티는 측정항목 유형과 연결할 수 있는 시계열의 수를 나타내며, 측정항목 라벨에 사용될 수 있는 값의 세부사항과 관련이 있습니다. 카디널리티에 대한 자세한 내용은 카디널리티: 시계열 및 라벨을 참조하세요.

타임스탬프와 같이 값을 갖는 라벨이 있는 측정항목 유형은 카디널리티가 매우 높을 가능성이 있고 SLI로 사용하기에 적합하지 않습니다. 카디널리티가 높은 측정항목은 카디널리티 문제를 방지하도록 설계되지 않은 사용자 정의 측정항목인 경우가 많습니다. 여기에는 사용자 정의 로그 기반 측정항목커스텀 측정항목이 포함될 수 있습니다.

적합한 측정항목 유형 찾기

측정항목 종류를 포함한 측정항목 유형에 대한 정보는 여러 장소에서 찾을 수 있습니다.

  • 측정항목 탐색기와 같은 도구에 사용된 측정항목 선택기는 강조표시된 측정항목 유형의 호버 카드를 표시합니다. 이 도구는 커스텀 및 기본 제공 측정항목에서 작동합니다.

    예를 들어 다음 스크린샷은 측정항목 탐색기에 표시된 측정항목 유형 loadbalancing.googleapis.com/https/request_count의 호버 카드를 보여줍니다.

    측정항목 종류를 표시하는 호버카드가 있는 측정항목 탐색기의 부하 분산 측정항목

    측정항목 탐색기를 사용하면 SLO API의 기능을 모방하도록 측정항목을 구성할 수 있으며 해당 구성의 JSON 표현을 가져올 수 있습니다. 이 JSON은 SLI를 수동으로 만드는 데 유용합니다.

  • 측정항목 목록의 페이지에는 서비스와 관련된 측정항목 유형을 자세히 설명하는 각 서비스의 표가 포함되어 있습니다. 이러한 표에는 모든 기본 제공 측정항목 유형이 포함되지만 커스텀 측정항목 유형은 표시되지 않습니다.

    예를 들어 다음 스크린샷은 부하 분산 측정항목 목록에 표시된 측정항목 유형 loadbalancing.googleapis.com/https/request_count의 항목을 보여줍니다. 이러한 항목은 측정항목 탐색기의 호버 카드보다 더 자세한 정보를 제공합니다.

    참조 테이블의 부하 분산 측정항목

SLI 빌드

서비스 모니터링의 경우 측정항목 데이터는 측정항목 탐색기에서 복제할 수 있는 특정 방식으로 처리됩니다. 이 페이지에서는 사용자가 측정항목 탐색기 사용에 익숙하다고 가정합니다. 자세한 내용은 측정항목 탐색기를 참조하세요.

시계열 비율을 기반으로 요청 기반 SLI를 빌드하려면 모든 요청을 나타내는 시계열과 정상(또는 잘못된) 요청을 나타내는 시계열이 필요합니다. 이 유형의 SLI에는 다음과 같은 구조가 있습니다.

  "requestBased": {
    "goodTotalRatio": {
      "totalServiceFilter": TO_BE_IDENTIFIED,
      "goodServiceFilter": TO_BE_IDENTIFIED,
    }
  }

goodServiceFilter 필드 값을 가져오려면 다음 안내를 따르세요.

  1. 모니터링 리소스 유형 및 측정항목 유형을 선택합니다. 측정항목 종류는 DELTA 또는 CUMULATIVE여야 합니다. 결과에는 다양한 시계열이 포함될 수 있습니다.

    예를 들어 http_lb_rule 리소스 유형과 loadbalancing.googleapis.com/https/request_count 측정항목 유형을 선택합니다.

  2. 필터 필드를 사용하여 response_code_class 라벨을 200으로 설정합니다. 이 필터는 이 라벨의 다른 값이 있는 시계열을 모두 삭제합니다. 일치하는 시계열이 여러 개 있을 수 있습니다.

  3. sum 애그리게이터를 선택하여 단일 시계열을 만듭니다. 측정항목 탐색기 페이지의 차트에 결과 시계열이 표시됩니다.

  4. 차트 위의 옵션 더보기 를 클릭하고 메뉴에서 JSON으로 보기를 선택합니다.

    검색된 JSON은 다음과 같이 표시됩니다.

    "dataSets": [
      {
        "timeSeriesFilter": {
          "filter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule" metric.label."response_code_class"="200""
          "perSeriesAligner": "ALIGN_RATE",
          "crossSeriesReducer": "REDUCE_SUM",
          "secondaryCrossSeriesReducer": "REDUCE_NONE",
          "minAlignmentPeriod": "60s",
          "groupByFields": [],
          "unitOverride": "1"
        },
        "targetAxis": "Y1",
        "plotType": "LINE"
      }
    ],
    

관심 있는 부분은 dataSets 객체에 삽입된 filter 필드의 값입니다.

"filter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule" metric.label."response_code_class"="200""

SLI 구조를 빌드하려면 다음 안내를 따르세요.

  1. 이 값을 SLI 구조에 goodServiceFilter 필드의 값으로 삽입합니다.

  2. 또한 이 값을 SLI 구조에 totalServiceFilter 값으로 삽입한 다음 필터의 라벨 부분인 metric.label.\"response_code_class\"=\"200\"을 삭제합니다.

결과 서비스 수준 지표는 다음과 같습니다.

  "requestBased": {
    "goodTotalRatio": {
      "totalServiceFilter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule"",
      "goodServiceFilter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule" metric.label."response_code_class"="200"",
    }
  }

그런 다음이 SLI를 SLO에 삽입할 수 있습니다. 예를 들면 다음과 같습니다.

{
   "serviceLevelIndicator": {
      "requestBased": {
        "goodTotalRatio": {
          "totalServiceFilter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule"",
          "goodServiceFilter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule" metric.label."response_code_class"="200"",
        }
     }
   },
   "goal": 0.98,
   "calendarPeriod": "WEEK",
   "displayName": "98% Successful requests in a calendar week"
}

SLO 만들기에 설명된 대로 이 JSON을 사용하여 SLO를 만들 수 있습니다.