분포 측정항목 만들기

이 페이지에서는 Cloud Console, Logging API, gcloud 명령줄 도구를 사용하여 분포 유형 로그 기반 측정항목을 만드는 방법을 설명합니다. 로그 기반 측정항목을 전반적으로 확인하려면 로그 기반 측정항목 개요를 참조하세요.

개요

분포 측정항목을 만들려면 관련 로그 항목을 선택하기 위한 필터, 그리고 분포를 위한 숫자 값을 포착하는 값 추출기가 필요합니다. 값 추출기는 사용자 정의 라벨에 사용한 것과 동일한 종류입니다.

분포 측정항목은 히스토그램 버킷에서 추출된 값의 통계 분포를 기록합니다. 추출된 값이 개별적으로 기록되지는 않지만 구성된 버킷의 분포가 값 제곱편차의 수, 평균, 합계와 함께 기록됩니다. 분포에 히스토그램 버킷의 기본 레이아웃을 사용하거나 버킷의 경계를 미세 조정하여 값을 대략적으로 캡처할 수 있습니다.

분포 측정항목 만들기

측정항목에 포함할 로그 항목을 필터링할 때 정규 표현식을 사용할 수 있습니다.

Console

Cloud Console에서 로그 기반 측정항목을 만들려면 다음 단계를 따르세요.

  1. Cloud Console의 왼쪽 탐색 목록에서 Google Cloud의 작업 제품군 Logging > 로그 기반 측정항목을 클릭하거나 다음 버튼을 클릭합니다.

    기존 로그 뷰어로 이동

  2. 페이지 상단의 드롭다운 메뉴를 사용하여 프로젝트를 선택합니다.

  3. 페이지 상단에서 측정항목 만들기를 클릭합니다. 페이지 오른쪽에는 측정항목 편집기가 있고 왼쪽에는 로그를 표시하는 뷰어 패널이 있습니다.

    분포 측정항목 만들기

  4. 뷰어 패널에서 측정항목 집계에 포함할 로그 항목만 표시하는 필터를 만듭니다.

    기본 쿼리는 로그 항목 위의 드롭다운 메뉴로 제공됩니다. 또는 검색창 오른쪽에 있는 드롭다운 메뉴를 클릭하고 고급 필터로 전환을 선택하여 고급 쿼리 인터페이스에 액세스할 수 있습니다.

    자세한 내용은 사용자 인터페이스를 참조하세요.

  5. 측정항목 편집기 패널에서 다음 필드를 설정합니다.

    • 이름: 프로젝트의 여러 로그 기반 측정항목에서 고유한 이름을 선택합니다. 이름 지정 시 특정 제한사항이 적용됩니다. 자세한 내용은 문제해결을 참조하세요.
    • 설명: 측정항목에 대한 설명을 입력합니다.
    • 라벨: (선택사항) 각 라벨마다 항목 추가를 클릭하여 라벨을 추가합니다. 라벨 정의 방법은 로그 기반 측정항목 라벨을 참조하세요.
    • 단위: (선택사항) 분포 측정항목의 경우 s, ms 등과 같이 단위를 선택적으로 입력할 수 있습니다. 자세한 내용은 MetricDescriptorunit 필드를 참조하세요.
    • 유형: 분포
    • 필드 이름: 분포 값을 포함하는 로그 항목 필드를 입력합니다. 입력하는 동안 선택사항이 제시됩니다. 예를 들면 다음과 같습니다.

      jsonPayload.latency
      
    • 추출 표현식: (선택사항) 필드 이름에 포함된 숫자 값이 항상 double 유형으로 변환 가능하다면 이 필드를 비워도 됩니다. 그렇지 않다면 필드 값에서 숫자 분포 값을 추출하는 정규 표현식을 지정하세요. 빌드 메뉴를 사용하여 정규 표현식을 양방향으로 빌드하고 검증할 수 있습니다.

      예시: latency 로그 항목 필드에 숫자와 밀리초를 나타내는 ms가 차례로 나와 있다고 가정해 보겠습니다. 다음 정규 표현식은 단위 서픽스를 제외한 숫자를 선택합니다.

      ([0-9.]+)ms
      

      괄호는 정규 표현식 캡처 그룹이라고 하며 추출할 텍스트 부분을 식별합니다. 자세한 내용은 정규 표현식 사용을 참조하세요.

    • 기타(히스토그램 버킷): (선택사항) 더보기를 클릭하면 커스텀 버킷 레이아웃을 지정하는 데 사용할 수 있는 양식 섹션이 열립니다. 버킷 레이아웃을 지정하지 않으면 기본 버킷 레이아웃이 제공됩니다. 자세한 내용은 이 페이지의 히스토그램 버킷을 참조하세요.

  6. 측정항목 만들기를 클릭합니다.

API

분포 측정항목을 만들려면 Logging API의 projects.metrics.create 메서드를 사용하세요. [API 탐색기][apis-explorer-create]에서 메서드를 사용해 볼 수 있습니다. 메서드의 인수를 다음과 같이 준비하세요.

  1. 측정항목을 만들 프로젝트에 상위 필드를 설정합니다.

    projects/[PROJECT_ID]
    
  2. LogMetric 객체에 요청 본문을 설정합니다. 다음은 분포 측정항목의 객체 예제입니다.

    {
      name:        "my-metric"
      description: "Description of my-metric."
      filter:      "resource.type=gce_instance AND logName:\"logs/syslog\"",
      valueExtractor: "REGEX_EXTRACT(jsonPayload.latencyField, \"([0-9.]+)ms\")",
    
      labelExtractors: {
        "my-label-1":
          "REGEXP_EXTRACT(jsonPayload.someField, \"before ([[:word:]]+) after\")",
        "my-label-2":
          "EXTRACT(jsonPayload.anotherField, \"before ([0-9]+) after\")",
      },
      bucketOptions: { [SEE_BELOW] },
    
      metricDescriptor: {
          metricKind: DELTA,
          valueType: DISTRIBUTION,
          unit: "ms",
    
          labels: [
            {
              key: "my-label-1",
              valueType: STRING,
              description: "Description of string my-label-1.",
            },
            {
              key: "my-label-2",
              valueType: INT64,
              description: "Description of integer my-label-2.",
            }
          ]
      },
    }
    

분포 측정항목 관련 참고사항:

  • 이름 지정 시 특정 제한사항이 적용됩니다. 자세한 내용은 문제 해결을 참조하세요.

  • metricDescriptor: MetricDescriptor 객체입니다. metricKindDELTA이고, valueTypeDISTRIBUTION이어야 합니다.

히스토그램 버킷

분포 측정항목에는 지정된 범위(버킷)에 해당되는 값의 개수를 집계하는 히스토그램이 포함되어 있습니다. 분포 측정항목에는 최대 200개의 버킷을 포함할 수 있습니다.

각 버킷에는 버킷에 적용되는 최솟값과 최댓값을 정의하는 2개의 경계 값(LH)이 있습니다. 버킷의 너비H - L입니다. 버킷 사이에는 간격이 있을 수 없기 때문에 한 버킷의 하한 경계는 앞 버킷의 상한 경계와 동일하며, 이와 같은 방식으로 계속 지정됩니다. 이러한 경계가 2개 이상의 버킷에 해당되지 않도록 하나의 버킷에 하한 경계가 포함되면 상한 경계는 다음 버킷에 속하게 됩니다.

각 버킷 사이의 경계 값을 오름차순으로 나열하는 방법으로 모든 버킷 레이아웃을 지정할 수 있습니다. 첫 번째 버킷은 언더플로 버킷으로, 첫 번째 경계보다 작은 값을 집계합니다. 마지막 버킷은 오버플로 버킷으로, 마지막 경계와 같거나 큰 값을 집계합니다. 나머지 버킷은 하한 경계와 같거나 크고, 상한 경계보다는 작은 값을 집계합니다. 경계 값이 n개면 버킷은 n+1개가 됩니다. 언더플로와 오버플로 버킷을 제외하면 유한 버킷n-1개가 됩니다.

분포 측정항목에서 히스토그램 버킷 사이의 경계를 지정할 수 있는 방법은 3가지입니다. 다음과 같이 경계 값의 공식을 지정하거나 경계 값을 나열하세요.

  • 선형(오프셋, 너비, i): 모든 버킷의 너비가 동일합니다. 경계는 오프셋 + 너비 * i이며, 여기서 i=0,1,2,...,N입니다. 선형 버킷에 관한 자세한 내용은 API 참조를 확인하세요.

  • 지수(배율, 성장 계수, i): 값이 커지면 버킷 너비가 늘어납니다. 경계는 배율 * 성장 계수^i이며, 여기서 i=0,1,2,...,N입니다. 지수 버킷에 관한 자세한 내용은 API 참조를 확인하세요.

  • 명시적: 버킷의 모든 경계는 경계 배열 내에 나열됩니다. 버킷 i의 경계는 다음과 같습니다.

    상한값: 경계[i](0 <= i < N-1)
    하한값: 경계[i - 1](1 <= i < N)

    명시적 버킷에 관한 자세한 내용은 API 참조를 확인하세요.

히스토그램 버킷을 지정하는 방법은 다음 섹션에 설명되어 있습니다.

Console

분포 측정항목을 만들고 측정항목 편집기 양식에서 더보기를 클릭하면 히스토그램 버킷 하위 메뉴가 열립니다. 선형 버킷 레이아웃의 하위 양식은 아래와 같습니다.

히스토그램 버킷

선형 버킷: 다음과 같이 히스토그램 버킷 양식을 채우세요.

  • 유형: 선형
  • 시작 값(a): 첫 번째 유한 버킷의 하한 경계입니다. 이 값은 API에서 오프셋이라고 부릅니다.
  • 버킷 수(N): 유한 버킷의 개수입니다. 값은 0 이상이어야 합니다.
  • 버킷 너비(b): 각 유한 버킷의 상한값과 하한값 간의 차이입니다. 값은 0보다 커야 합니다.

예를 들어 시작 값이 5이고 버킷이 4개이며 버킷 너비가 15인 경우 버킷 범위는 다음과 같습니다.

[-INF, 5), [5, 20), [20, 35), [35, 50), [50, 65), [65, +INF]

명시적 버킷: 다음과 같이 히스토그램 버킷 양식을 채우세요.

  • 유형: 명시적
  • 경계(b): 유한 버킷의 경계 값을 쉼표로 구분한 목록입니다. 이 목록은 버킷의 수와 너비도 결정합니다.

예를 들어 경계 목록이 다음과 같다면

0, 1, 2, 5, 10, 20

다음과 같은 범위의 유한 버킷 5개가 존재하게 됩니다.

[-INF, 0), [0, 1), [1, 2), [2,5), [5, 10), [10, 20), [20, +INF]

지수 버킷: 다음과 같이 히스토그램 버킷 양식을 채우세요.

  • 유형: 지수
  • 버킷 수(N): 유한 버킷의 총 개수입니다. 값은 0보다 커야 합니다.

  • 선형 단계(a): 버킷의 선형 단계입니다. 값은 0보다 커야 합니다.

  • 지수 성장 계수(b): 버킷의 지수 성장 계수입니다. 값은 1보다 커야 합니다.

예를 들어 N=4, a=3, b=2라면 버킷 범위는 다음과 같습니다.

[-INF, 3), [3, 6), [6, 12), [12, 24), [24, 48), [48, +INF]

버킷에 대한 자세한 내용은 Cloud Monitoring API의 BucketOptions를 참조하세요.

API

선택사항인 버킷 레이아웃은 projects.metrics.create에 제공되는 LogMetric 객체의 bucketOptions 필드로 지정합니다. 전체 LogMetric 객체를 확인하려면 이 페이지의 분포 측정항목 만들기를 참조하세요. 버킷 레이아웃의 추가 항목이 아래에 나와 있습니다.

선형 버킷:

{ # LogMetric object
  ...
  bucketOptions: {
    linearBuckets: {
      numFiniteBuckets: 4,
      width: 15,
      offset: 5
    }
  },

앞의 샘플에서는 다음과 같은 버킷이 만들어집니다.

[-INF, 5), [5, 20), [20, 35), [35, 50), [50, 65), [65, +INF]

명시적 버킷: 경계가 개별적으로 나열됩니다.

{ # LogMetric object
  ...
  bucketOptions: {
    explicitBuckets: {
      bounds: [0, 1, 2, 5, 10, 20 ]
    }
  },

앞의 샘플에서는 다음과 같은 버킷이 만들어집니다.

[-INF, 0), [0, 1), [1, 2), [2, 5), [5, 10), [10, 20), [20, +INF]

지수 버킷: 경계는 scale * growthFactor ^ i이며, 여기서 i=0,1,2, ..., numFiniteBuckets입니다.

{ # LogMetric object
  ...
  bucketOptions: {
    exponentialBuckets: {
      numFiniteBuckets: 4,
      growthFactor: 2,
      scale: 3
    }
  },
  ...
}

앞의 샘플에서는 다음과 같은 버킷이 만들어집니다.

[-INF, 3), [3, 6), [6, 12), [12, 24), [24, 48), [48, +INF]

새 측정항목 지연 시간

새 측정항목은 기존 로그 뷰어의 측정항목 목록과 관련 Monitoring 메뉴에 즉시 나타납니다. 그러나 측정항목이 일치하는 로그 항목의 데이터 수집을 시작하는 데 최대 1분이 걸릴 수 있습니다.

분포 측정항목 검사

Google Cloud 프로젝트에 로그 기반 측정항목을 나열하거나 Cloud 프로젝트의 특정 측정항목을 검사하려면 다음 안내를 따르세요.

콘솔

다음 버튼을 클릭하여 현재 프로젝트의 모든 로그 기반 측정항목을 나열하는 로그 기반 측정항목 페이지로 이동합니다.

로그 기반 측정항목으로 이동

로그 기반 측정항목의 데이터를 보려면 측정항목 목록 오른쪽에 있는 더보기 메뉴에서 측정항목 탐색기에서 보기를 선택합니다.

API

측정항목 나열

프로젝트에서 사용자 정의 로그 기반 측정항목을 나열하려면 projects.metrics.list API 메소드를 사용하세요. 메서드의 매개변수를 다음과 같이 채우세요.

  • 상위: 프로젝트의 리소스 이름입니다(예: projects/[PROJECT_ID]).
  • pageSize: 결과의 최대 개수입니다.
  • pageToken: 결과의 다음 페이지를 가져옵니다. projects.metrics.list를 참조하세요.

측정항목 정의 검색

사용자 정의 로그 기반 측정항목 하나를 검색하려면 projects.metrics.get API 메소드를 사용하세요. 메소드의 매개변수를 다음과 같이 채우세요.

  • metricName: 측정항목의 리소스 이름입니다.

    projects/[PROJECT_ID]/metrics/[METRIC_ID]
    

측정항목 데이터 읽기

로그 기반 측정항목의 시계열 데이터를 읽으려면 Cloud Monitoring API의 projects.timeseries.list를 사용하세요. 자세한 내용은 시계열 읽기를 참조하세요. 로그 기반 측정항목과 관련하여 필요한 정보는 다음과 같습니다.

  • 측정항목 유형은 logging.googleapis.com/user/[METRIC_ID]입니다.

GCLOUD

프로젝트의 사용자 정의 로그 기반 측정항목을 나열하려면 다음 명령어를 사용합니다.

gcloud logging metrics list

프로젝트의 사용자 정의 로그 기반 측정항목을 표시하려면 다음 명령어를 사용합니다.

gcloud logging metrics describe [METRIC_NAME]

세부정보를 보려면 다음 명령어를 사용합니다.

gcloud logging metrics --help

Cloud SDK에서는 측정항목의 시계열 데이터를 읽을 수 없습니다.

분포 측정항목 업데이트

로그 기반 측정항목을 업데이트하여 측정항목에서 참조되는 필드의 설명, 쿼리, 필드 이름을 변경할 수 있습니다. 측정항목에 새 라벨을 추가하고 측정항목과 라벨의 값을 추출하는 데 사용되는 정규 표현식을 변경할 수 있습니다.

로그 기반 측정항목이나 라벨의 이름이나 유형은 변경할 수 없으며 로그 기반 측정항목의 기존 라벨도 삭제할 수 없습니다.

로그 기반 측정항목을 수정하거나 업데이트하려면 다음 단계를 따르세요.

Console

  1. 로그 기반 측정항목 페이지로 이동합니다.

    로그 기반 측정항목으로 이동

  2. 수정할 로그 기반 측정항목의 오른쪽에 있는 메뉴에서 측정항목 수정을 클릭합니다.

  3. 측정항목에서 허용되는 항목만 변경합니다.

  4. 완료를 클릭합니다.

API

로그 기반 측정항목을 수정하거나 업데이트하려면 API에서 projects.metrics.update 메서드를 사용합니다. 필드를 다음과 같이 설정합니다.

  • metricName: 측정항목의 전체 리소스 이름입니다.

    projects/[PROJECT_ID]/metrics/[METRIC_ID]
    

    예:

    projects/my-gcp-project/metrics/my-error-metric
    
  • 변경 및 추가할 내용을 제외하고 기존 측정항목과 정확히 동일한 LogMetric 객체를 요청 본문에 포함시킵니다.

GCLOUD

Cloud SDK를 사용하는 경우에만 기존 측정항목에 대한 설명과 쿼리를 변경할 수 있습니다.

로그 기반 측정항목을 업데이트하려면 다음 명령어를 사용하세요. 다음 플래그 중 하나 또는 둘 다를 지정할 수 있습니다.

gcloud logging metrics update [METRIC_NAME] --description=[DESCRIPTION] --log-filter=[FILTER]

세부정보를 보려면 다음 명령어를 사용합니다.

gcloud logging metrics update --help

분포 측정항목 삭제

로그 기반 측정항목을 삭제하려면 다음 단계를 따르세요.

Console

  1. 로그 기반 측정항목 페이지로 이동합니다.

    로그 기반 측정항목으로 이동

  2. 삭제할 측정항목을 선택하고 페이지 상단에서 삭제를 클릭합니다.

    또는 삭제할 로그 기반 측정항목의 오른쪽에 있는 메뉴에서 측정항목 삭제를 클릭해도 됩니다.

API

API에서 projects.metrics.delete 메서드를 사용합니다.

GCLOUD

현재 프로젝트에서 사용자 정의 로그 기반 측정항목을 삭제하려면 다음 명령어를 사용합니다.

gcloud logging metrics delete [METRIC_NAME]

세부정보를 보려면 다음 명령어를 사용합니다.

gcloud logging metrics delete --help