분산 측정항목 구성

이 페이지에서는 Google Cloud 콘솔, Logging API, Google Cloud CLI를 사용해서 분포 유형의 로그 기반 측정항목을 만드는 방법을 설명합니다. 로그 기반 측정항목을 전반적으로 확인하려면 로그 기반 측정항목 개요를 참조하세요.

개요

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

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

분포 측정항목을 보고 해석하는 방법에 대한 자세한 내용은 분포 측정항목을 참조하세요.

시작하기 전에

  1. 로그 기반 측정항목을 사용하려면 결제가 사용 설정된 Google Cloud 프로젝트가 있어야 합니다.

    1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
    2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

      프로젝트 선택기로 이동

    3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

    4. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

      프로젝트 선택기로 이동

    5. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  2. Identity and Access Management 역할에 로그 기반 측정항목을 만들고 보고 알림 정책을 만드는 데 필요한 권한이 포함되어 있는지 확인하세요. 자세한 내용은 로그 기반 측정항목 권한을 참조하세요.

분산 측정항목 만들기

이 측정항목은 제공된 필터로 식별된 로그 항목을 계산합니다. 필터에서 정규 표현식을 사용할 수 있으며 리소스 유형을 포함하는 것이 좋습니다. 필터 길이는 20,000자(영문 기준)를 초과할 수 없습니다.

필터에 민감한 정보를 넣지 마세요. 필터는 서비스 데이터로 처리됩니다.

콘솔

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

  1. Google Cloud 콘솔의 탐색 패널에서 Logging을 선택한 후 로그 기반 측정항목을 선택합니다.

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

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

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

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

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

    1. 로그 범위 선택을 사용하여 필터가 모든 Google Cloud 프로젝트 로그를 타겟팅하는지 아니면 특정 버킷의 로그만 타겟팅하는지 선택합니다.

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

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

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

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

      ([0-9.]+)
      

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

    • 고급(히스토그램 버킷): (선택사항) 고급을 클릭하면 커스텀 버킷 레이아웃을 지정하는 데 사용할 수 있는 양식 섹션이 열립니다. 버킷 레이아웃을 지정하지 않으면 기본 버킷 레이아웃이 제공됩니다. 자세한 내용은 이 페이지의 히스토그램 버킷을 참조하세요.
    1. 필터와 일치하는 로그 항목을 보려면 미리보기 로그를 클릭합니다.
  6. (선택사항) 라벨 섹션에서 라벨을 추가합니다. 라벨을 만드는 방법은 라벨 만들기를 참조하세요.

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

gcloud

분포 유형 로그 기반 측정항목을 만들려면 JSON 또는 YAML 형식으로 LogMetric 정의를 표현한 파일을 만듭니다. 그런 후 다음 명령어를 사용하여 파일에서 구성을 읽습니다.

gcloud logging metrics create METRIC_NAME --config-from-file FILENAME

분산에 대한 히스토그램 버킷을 기술하는 방법은 히스토그램 버킷을 참조하세요.

API

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

  1. 측정항목을 만들 프로젝트 또는 버킷으로 상위 필드를 설정합니다.

    • 프로젝트 범위 로그 기반 측정항목의 경우 프로젝트를 지정합니다.
    projects/PROJECT_ID
    
    • 버킷 범위 로그 기반 측정항목의 경우 버킷을 지정합니다.
    projects/PROJECT_ID/locations/LOCATION/bucket/BUCKET_ID
    
  2. LogMetric 객체로 요청 본문을 설정합니다. 다음은 분포 측정항목의 샘플 객체입니다.

    {
      name:        "my-metric"
      description: "Description of my-metric."
      filter:      "resource.type=gce_instance AND log_id(\"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 참조를 확인하세요.

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

콘솔

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

히스토그램 버킷

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

  • 유형: 선형
  • 시작 값(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 프로젝트에 사용자 정의 로그 기반 측정항목을 나열하거나 Google Cloud 프로젝트의 특정 측정항목을 검사하려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔의 탐색 패널에서 Logging을 선택한 후 로그 기반 측정항목을 선택합니다.

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

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

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

gcloud

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

gcloud logging metrics list

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

gcloud logging metrics describe METRIC_NAME

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

gcloud logging metrics --help

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

API

측정항목 표시

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

  • parent: Google 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

분포 측정항목 업데이트

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

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

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

콘솔

  1. Google Cloud 콘솔의 탐색 패널에서 Logging을 선택한 후 로그 기반 측정항목을 선택합니다.

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

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

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

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

gcloud

Google Cloud CLI를 사용하여 카운터 측정항목의 설명을 변경하고 쿼리와 버킷을 필터링합니다. 필드 일부 또는 전부를 한 번에 업데이트할 수 있습니다.

gcloud logging update METRIC_NAME \
  --description="METRIC_DESCRIPTION" \
  --log-filter="FILTER" \
  --bucket-name=BUCKET_NAME

버킷 범위 측정항목과 연결된 버킷을 변경하면 변경 전에 수집된 측정항목 데이터에 더 이상 현재 구성이 반영되지 않습니다. 이전 버킷에 대해 수집된 측정항목 데이터는 삭제되지 않습니다.

METRIC_NAME를 제외한 분포 측정항목 또는 기타 카운터 측정항목 필드를 업데이트하려면 JSON 또는 YAML 형식으로 LogMetric의 수정된 사양을 포함하는 파일을 만듭니다. 그런 다음 --config-from-file 필드로 update 명령어를 호출하여 측정항목을 업데이트합니다. 여기서 FILENAME을 JSON 또는 YAML 파일의 이름으로 바꿉니다.

gcloud logging update METRIC_NAME --config-from-file FILENAME

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

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 객체를 요청 본문에 포함시킵니다.

분포 측정항목 삭제

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

콘솔

  1. Google Cloud 콘솔의 탐색 패널에서 Logging을 선택한 후 로그 기반 측정항목을 선택합니다.

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

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

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

gcloud

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

gcloud logging metrics delete METRIC_NAME

For more details, use the following command:

gcloud logging metrics delete --help

API

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

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