API 구성

Service Monitoring API는 서비스의 상태를 모니터링하는 데 사용할 수 있는 서비스 수준 목표(SLO)를 설정하는 데 사용됩니다.

Service Monitoring은 Monitoring API에 다음 리소스를 추가합니다.

이 페이지에서는 Service Monitoring API에서 서비스 및 SLO를 나타내는 데 사용되는 구조를 소개하고 서비스 모니터링 개념에 일반적으로 설명된 개념에 매핑합니다.

API 호출에 대한 자세한 내용은 API 작업을 참조하세요.

서비스

서비스는 Service 객체로 표현됩니다. 이 객체에는 다음 필드가 포함됩니다.

  • 이름: 이 서비스의 정규화된 리소스 이름
  • 표시 이름: 콘솔 구성요소에 사용할 라벨
  • 원격 분석 구성 객체
  • 서비스 유형의 표시기:
    • App Engine 서비스
    • Cloud Endpoints 서비스
    • Istio on Google Kubernetes Engine 서비스
    • 커스텀 서비스

수동으로 만드는 유일한 서비스 유형은 커스텀 서비스입니다. 다른 유형은 환경에 따라 자동으로 감지됩니다.

예를 들어, 다음은 Istio 서비스의 JSON 표현을 보여줍니다.

    {
      "name": "projects/[PROJECT_NUMBER]/services/[PROJECT_ID]-zone-us-central1-c-csm-main-default-currencyservice",
      "displayName": "[PROJECT_ID]/us-central1-c/csm-main/default/currencyservice",
      "clusterIstio": {
        "location": "us-central1-c",
        "clusterName": "csm-main",
        "serviceNamespace": "default",
        "serviceName": "currencyservice"
      },
      "telemetry": {
        "resourceName": "//container.googleapis.com/projects/[PROJECT_ID]/zones/us-central1-c/clusters/csm-main/k8s/namespaces/default/services/currencyservice"
      }
    }
    

이 예시에서는 커스텀 서비스의 JSON 표현을 보여줍니다.

    {
      "name": "projects/[PROJECT_NUMBER]/services/-I6P_NufSzKiuvX1AYHE6Q",
      "displayName": "My Test Service",
      "custom": {},
      "telemetry": {}
    }
    

원격 분석은 개발 중입니다. 의미 있는 유일한 값은 서비스를 정의하는 리소스의 전체 이름입니다. 형식은 리소스 이름에 설명되어 있습니다.

서비스 수준 지표

서비스 수준 지표(SLI)는 서비스의 성능을 측정합니다. SLI는 서비스에서 캡처한 측정항목을 기반으로 합니다. SLI가 정의되는 정확한 방법은 표시기 측정항목으로 사용되는 측정항목 유형에 따라 다르지만 일반적으로 허용되는 결과와 총 결과 사이의 일부 비교입니다.

SLI는 ServiceLevelIndicator 객체로 표현됩니다. 이 객체는 지원되는 세 가지 SLI 유형을 참조하는 총체적인 방법입니다.

  • 잘 알려진 서비스 유형에 대해 자동으로 생성되는 기본 SLI. 이 SLI 유형은 서비스 수준 목표에 설명되어 있습니다. BasicSli 객체로 표현되고 가용성 또는 지연 시간을 측정합니다.

  • 허용 가능한 서비스를 나타내는 이벤트를 세는 데 사용할 수 있는 요청 기반 SLI. 이 유형의 SLI 사용은 요청 기반 SLO에 설명되어 있습니다. RequestBasedSli 객체로 표현됩니다.

  • 일부 양호 기준을 충족하는 기간을 계산하는 데 사용할 수 있는 기간 기반 SLI. 이 유형의 SLI 사용은 기간 기반 SLO에 설명되어 있습니다. WindowsBasedSli 객체로 표현됩니다.

예를 들어 다음은 기본 가용성 SLI를 보여줍니다.

    {
      "basicSli": {
        "availability": {},
        "location": [
          "us-central1-c"
        ]
      }
    }
    

요청 기반 SLI의 구조

요청 기반 SLI는 특정 결과와 총계의 비율로 서비스 단위를 계산하는 측정항목을 기반으로 합니다. 예를 들어 요청을 계산하는 측정항목을 사용하면 성공을 반환하는 요청 수와 총 요청 수 사이의 비율을 만들 수 있습니다.

요청 기반 SLI를 만드는 방법에는 두 가지가 있습니다.

  • 총 서비스 대비 양호한 서비스의 비율이 측정항목 종류가 DELTA 또는 CUMULATIVE인 두 시계열에서 계산되는 경우 TimeSeriesRatio로 만듭니다.
  • 시계열에 DISTRIBUTION 값 유형이 있고 이 값의 측정항목 종류가 DELTA 또는 CUMULATIVE인 경우DistributionCut로 만듭니다. 양호한 서비스 값은 지정된 범위에서 히스토그램 버킷에 포함되는 항목 개수이며 총계는 분포의 모든 값의 개수입니다.

다음은 시계열 비율을 사용하는 SLI의 JSON 표현을 보여줍니다.

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

이 비율의 시계열은 모니터링 리소스 유형과 측정항목 유형의 쌍으로 식별됩니다.

  • 리소스: https_lb_rule
  • 측정항목 유형: loadbalancing.googleapis.com/https/request_count

totalServiceFilter의 값은 측정항목과 리소스 유형의 쌍으로 표현됩니다. goodServiceFilter의 값은 일부 라벨에 특정 값이 있는 같은 쌍으로 표현됩니다. 이러한 경우 response_code_class 라벨 값은 200입니다.

필터 간의 비율은 총 요청 수 대비 2xx HTTP 상태를 반환하는 요청 수를 측정합니다.

다음은 분포 컷을 사용하는 SLI의 JSON 표현입니다.

    {
      "requestBased": {
        "distribution_cut": {
          "distribution_filter": "resource.type=https_lb_rule  metric.type="loadbalancing.googleapis.com/https/backend_latencies" metric.label.response_code_class=200",
          "range": {
            "min": "-Infinity",
            "max": 500.0
          }
        }
      }
    }
    

시계열은 모니터링 리소스 유형, 측정항목 유형, 측정항목 라벨 값으로 식별됩니다.

  • 리소스: https_lb_rule
  • 측정항목 유형: loadbalancing.googleapis.com/https/backend_latencies
  • 라벨-값 쌍: response_code_class = 200

양호로 간주되는 지연 시간 범위는 range 필드입니다. 이 SLI는 200-클래스 전체 응답의 지연 시간에 대한 500 미만의 2xx-클래스 응답의 지연 시간 비율을 계산합니다.

기간 기반 SLI의 구조

기간 기반 SLI는 제공된 서비스가 양호한 것으로 간주되는 기간을 계산합니다. SLI 정의에 속하는 양호한 서비스를 판단하는 기준입니다.

모든 기간 기반 SLI에는 60~86,400초(1일)의 기간이 포함됩니다.

기간 기반 SLI에 대한 양호한 서비스 기준을 지정하는 방법에는 두 가지가 있습니다.

  • 부울 값이 있는 시계열을 반환하는 [Monitoring filters][monfilters]에 설명된 필터 문자열을 만듭니다. 기간 값이 true이면 양호한 기간입니다. 이 필터는 goodBadMetricFilter라고 합니다.
  • 허용 성능을 위한 임곗값을 나타내는 [PerformanceThreshold][sli-perthreshold-apiref] 객체를 만듭니다. 이 객체는 goodTotalRatioThreshold 값으로 지정됩니다.

    PerformanceThreshold 객체는 임곗값과 성능 SLI를 지정합니다. 성능 SLI 값이 임곗값을 충족하거나 초과하면 기간은 양호한 것으로 계산됩니다.

    성능 SLI를 지정하는 방법에는 두 가지가 있습니다.

다음은 기본 가용성 SLI의 성능 임곗값을 기반으로 하는 기간 기반 SLI를 JSON으로 표현합니다.

    {
      "windowsBased": {
         "goodTotalRatioThreshold": {
           "threshold": 0.9,
           "basicSliPerformance": {
             "availability": {},
             "location": [
               "us-central1-c"
             ]
           }
         },
         "windowPeriod": "300s"
       }
    }
    

이 SLI는 양호한 성능을 가용성이 90% 이상인 5분 기간으로 지정합니다. 기본 SLI의 구조는 서비스 수준 지표에 나와 있습니다.

기간 기반 SLI에 요청 기반 SLI를 삽입할 수도 있습니다. 삽입된 구조에 대한 자세한 내용은 요청 기반 SLI의 구조를 참조하세요.

서비스 수준 목표

서비스 수준 목표(SLO)는 ServiceLevelObjective 객체로 표현됩니다. 이 객체에는 다음 필드가 포함됩니다.

다음은 기본 가용성 SLI를 serviceLevelIndicator 필드 값으로 사용하는 SLO의 JSON 표현을 보여줍니다.

    {
       "name": "projects/[PROJECT_NUMBER]/services/[PROJECT_ID]-zone-us-central1-c-csm-main-default-currencyservice/serviceLevelObjectives/3kavNVTtTMuzL7KcXAxqCQ",
       "serviceLevelIndicator": {
         "basicSli": {
           "availability": {},
           "location": [
             "us-central1-c"
           ]
         }
       },
       "goal": 0.98,
       "calendarPeriod": "WEEK",
       "displayName": "98% Availability in Calendar Week"
    }
    

이 SLO는 일주일 동안 98%의 가용성으로 성능 목표를 설정합니다.