분포 측정항목 구성

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

개요

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

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

분포 측정항목 만들기

측정항목에 포함할 로그 항목을 필터링할 때 정규 표현식을 사용할 수 있습니다. 필터의 길이는 20,000자를 초과할 수 없습니다.

Console

Google Cloud 프로젝트의 Cloud Console에서 로그 기반 카운터 측정항목을 만들려면 다음 단계를 따르세요.

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

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

  2. 측정항목 만들기를 클릭합니다. 로그 측정항목 만들기 패널이 나타납니다.

  3. 측정항목 유형 설정: 분포를 선택합니다.

  4. 세부정보 섹션에서 다음 필드를 설정합니다.

    • 로그 측정항목 이름: Cloud 프로젝트의 로그 기반 측정항목 중에서 고유한 이름을 선택합니다. 이름 지정 시 제한사항이 적용됩니다. 자세한 내용은 문제 해결을 참조하세요.
    • 설명: 측정항목에 대한 설명을 입력합니다.
    • 단위: (선택사항) 분포 측정항목의 경우 s, ms 등과 같이 단위를 선택적으로 입력할 수 있습니다. 자세한 내용은 MetricDescriptorunit 필드를 참조하세요.
  5. 필터 선택 섹션에서 측정항목 필터를 정의합니다.

    1. 로깅 쿼리 언어를 사용하여 측정항목에서 집계하려는 로그 항목만 수집하는 필터를 만듭니다. 정규 표현식을 사용하여 측정항목의 필터를 만들 수도 있습니다.

    2. 필드 이름: 분포 값을 포함하는 로그 항목 필드를 입력합니다. 입력하는 동안 선택사항이 제시됩니다. 예를 들면 다음과 같습니다.

       protoPayload.latency
      
    3. 추출 표현식: (선택사항) 필드 이름에 포함된 숫자 값이 항상 double 유형으로 변환 가능하다면 이 필드를 비워도 됩니다. 그렇지 않다면 필드 값에서 숫자 분포 값을 추출하는 정규 표현식을 지정하세요.

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

      ([0-9.]+)
      

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

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

    로그 미리보기를 클릭하여 필터와 일치하는 로그 항목을 보여주는 패널을 엽니다.

  6. (선택사항) 라벨 섹션에서 라벨을 추가합니다. 라벨을 만드는 방법은 라벨 만들기를 참조하세요.

  7. 측정항목 만들기를 클릭하여 측정항목을 만듭니다.

gcloud

gcloud 명령줄 도구를 사용하여 분포 측정항목을 만들려면 --config-from-file 플래그를 사용하여 전체 측정항목 구성을 지정합니다. 구성 형식은 JSON 또는 YAML입니다. LogMetric 구성에 대한 자세한 설명은 projects.metrics를 참조하세요.

API

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

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

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

    {
      name:        "my-metric"
      description: "Description of my-metric."
      filter:      "resource.type=gce_instance AND logName:\"logs/syslog\"",
      valueExtractor: "REGEXP_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): 값이 커지면 버킷 너비가 늘어납니다. 경계는 배율 * growth_factori이며, 여기서 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 프로젝트의 특정 측정항목을 검사하려면 다음 안내를 따르세요.

Console

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

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

사용자 정의 측정항목 창에는 현재 Cloud 프로젝트의 사용자 정의 로그 기반 측정항목이 표시됩니다.

로그 기반 측정항목의 데이터를 보려면 측정항목 행에서 메뉴 를 클릭하고 측정항목 탐색기에서 보기를 선택합니다.

gcloud

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

gcloud logging metrics list

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

gcloud logging metrics describe METRIC_NAME

도움말을 보려면 다음 명령어를 사용합니다.

gcloud logging metrics --help

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

API

측정항목 표시

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

  • 상위: Cloud 프로젝트의 리소스 이름입니다(예: `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

분포 측정항목 업데이트

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

사용자 정의 로그 기반 측정항목 또는 라벨의 이름이나 유형을 변경할 수 없으며 로그 기반 측정항목의 기존 라벨을 삭제할 수 없습니다.

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

Console

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

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

  2. 수정하려는 로그 기반 측정항목의 메뉴 에서 측정항목 수정을 클릭합니다.

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

  4. 측정항목 업데이트를 클릭합니다.

gcloud

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

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

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

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

gcloud logging metrics update --help

API

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

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

    projects/PROJECT_ID/metrics/METRIC_ID
    

    예:

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

분포 측정항목 삭제

사용자 정의 로그 기반 측정항목을 삭제하려면 다음 안내를 따르세요.

Console

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

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

  2. 삭제할 측정항목을 선택하고 삭제를 클릭합니다.

    또는 삭제할 로그 기반 측정항목의 메뉴 에서 측정항목 삭제를 클릭합니다.

gcloud

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

gcloud logging metrics delete METRIC_NAME

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

gcloud logging metrics delete --help

API

사용자 정의 로그 기반 측정항목을 삭제하려면 API의 projects.metrics.delete 메서드를 사용합니다.

또한 Google Cloud Console 로그 기반 측정항목 페이지에서 로그 기반 측정항목 인터페이스의 사용자 정의 측정항목 창은 Cloud 프로젝트에서 사용자 정의 측정항목을 관리하는 데 도움이 되는 더 많은 기능을 제공합니다. 자세한 내용은 사용자 정의 측정항목 창을 참조하세요.