이 문서에서는 사용자 정의 측정항목을 만들고 Cloud Monitoring API를 사용하여 이 측정항목 데이터를 작성하는 방법을 설명합니다. 사용자 정의 측정항목은 기본 제공 Cloud Monitoring 측정항목과 동일한 요소를 사용합니다.
- 데이터 포인트 집합
- 데이터 포인트의 의미를 알려주는 측정항목 유형 정보
- 데이터 포인트의 출처를 알려주는 모니터링 리소스 정보
커스텀 측정항목이라고도 하는 사용자 정의 측정항목은 기본 제공 측정항목과 동일한 방식으로 사용할 수 있습니다. 즉, 이 측정항목 데이터에 대한 차트와 알림을 만들 수 있습니다.
로그 기반 측정항목은 사용자 정의 측정항목의 클래스이지만 Cloud Monitoring API를 사용하여 만들 수는 없습니다. 로그 기반 측정항목은 로그 항목에서 측정항목 데이터를 파생하지만 Monitoring API는 로그 항목에서 측정항목 데이터를 추출하는 방법을 지정할 수 있는 방법을 제공하지 않습니다. 대신 Cloud Logging을 사용하여 로그 기반 측정항목을 만드세요. 로그 기반 측정항목을 만들면 Logging이 이 문서에 설명된 구조를 만들고 측정항목 데이터를 Cloud Monitoring으로 전송합니다. 로그 기반 측정항목을 만드는 방법에 대한 자세한 내용은 다음 문서를 참고하세요.
애플리케이션을 계측하려면 공급업체 및 제품별 API 또는 클라이언트 라이브러리 대신 OpenTelemetry와 같은 오픈소스인 공급업체 중립적인 계측 프레임워크를 사용하는 것이 좋습니다. 애플리케이션을 계측하는 방법은 계측 및 관측 가능성을 참조하세요.
시작하기 전에
모든 측정항목의 기반 구조에 대해 알아보려면 측정항목, 시계열, 리소스를 참조하세요.
Cloud Monitoring을 사용하려면 결제가 사용 설정된 Google Cloud 프로젝트가 있어야 합니다. 필요한 경우 다음을 수행합니다.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
- Monitoring API가 사용 설정되어 있는지 확인합니다. 자세한 내용은 Monitoring API 사용 설정을 참조하세요.
Google Cloud 외부에서 실행되는 애플리케이션의 경우 Google Cloud 프로젝트가 애플리케이션을 인증해야 합니다. 일반적으로 프로젝트의 서비스 계정을 만들고 환경 변수를 구성하여 인증을 설정합니다.
서비스 계정 만들기에 대한 자세한 내용은 인증 시작하기를 참조하세요.
사용자 정의 측정항목 유형 만들기
사용자 정의 측정항목을 만들려면 측정항목에 대해 여러 정보를 지정하는 MetricDescriptor
객체를 정의하거나 측정항목 데이터를 작성합니다. 측정항목 데이터를 작성하면 Monitoring이 제공된 데이터 구조에 따라 측정항목 설명을 만듭니다.
측정항목 설명 설계에 대한 자세한 내용은 사용자 정의 측정항목에 대한 측정항목 설명을 참조하세요.
측정항목 설명자 자동 생성
사용자 정의 측정항목의 측정항목 설명이 아직 존재하지 않는 경우 측정항목 데이터를 작성하면 측정항목 설명이 자동으로 생성됩니다. 하지만 이 새 측정항목 설명자는 정확히 원하는 설명자가 아닐 수도 있습니다. 측정항목 설명자는 몇 가지 가정과 기본값에 따라 자동으로 생성됩니다.
timeSeries.create
호출에 포함된 TimeSeries
객체가 존재하지 않는 측정항목 유형 이름을 지정하는 Metric
객체를 참조할 때는 Cloud Monitoring이 새 MetricDescriptor
를 만듭니다.
Cloud Monitoring은 다음 규칙에 따라 MetricDescriptor
를 채웁니다.
type
: 유형은Metric
객체의type
필드에서 복사됩니다.name
: 메서드 호출의 프로젝트 ID 및Metric
객체의type
값으로 만든 이름입니다.labels
:Metric
객체에 표시되는 라벨입니다. 새 측정항목 설명의 각 라벨 설명에는 다음과 같은 필드가 포함됩니다.key
:Metric
객체의 라벨 키valueType
:STRING
description
: 설정되지 않음
metricKind
:TimeSeries
객체의metricKind
매개변수를 지정하지 않는 한 측정항목 종류가GAUGE
로 설정됩니다.metricKind
를 지정하면 새 측정항목에 해당 종류가 적용됩니다.GAUGE
및CUMULATIVE
종류만 지정할 수 있습니다.valueType
: 값 유형은 기록 중인Point
의 입력 값에서 가져옵니다. 값 유형은BOOL
,INT64
,DOUBLE
,DISTRIBUTION
중 하나여야 합니다.TimeSeries
의valueType
필드에 값 유형을 지정하면 해당 유형은Point
의 유형과 일치해야 합니다.unit
: 설정되지 않음description
:"Auto created custom metric."
.displayName
: 설정되지 않음
하나의 timeSeries.create
호출에 존재하지 않는 동일한 측정항목 유형을 참조하는 여러 TimeSeries
객체를 포함시킬 수 있습니다. 이 경우 새 측정항목 설명의 라벨은 create
에 대한 이 호출의 모든 시계열에 있는 Metric
객체에 있는 모든 라벨의 통합으로 구성됩니다.
다음 단계: 사용자 정의 측정항목 작성을 참조하세요.
측정항목 설명 수동 생성
측정항목 설명을 만들려면 다음을 수행합니다.
측정항목 설명의 구조를 결정합니다. 기본 제공 측정항목을 찾아보고 시계열 데이터를 살펴보면 옵션을 선택하는 데 도움이 됩니다.
사용자 정의 측정항목의 측정항목 이름을 선택합니다.
측정항목의 표시 이름과 설명을 선택합니다. 표시 이름은 Google Cloud 콘솔에서 사용됩니다.
사용자 정의 측정항목을 정의하고 시계열 데이터를 작성할 프로젝트를 선택합니다. 여러 프로젝트에서 동일한 측정항목이 필요한 경우 각 프로젝트에서 측정항목을 동일하게 정의합니다.
측정항목의 종류, 값 유형, 단위(선택사항)를 결정합니다. 사용자 정의 측정항목에서 지원되지 않는 값 유형 및 측정항목 종류도 일부 있습니다. 이러한 필드에 대한 자세한 내용은 값 유형 및 측정항목 종류를 참조하세요.
측정항목 라벨(이름, 값 유형, 설명)을 선택합니다.
기록되는 측정항목 데이터에 따라 모니터링 리소스를 결정합니다. 다음 목록에서 선택하세요.
aws_ec2_instance
: Amazon EC2 인스턴스dataflow_job
: Dataflow 작업gae_instance
: App Engine 인스턴스gce_instance
: Compute Engine 인스턴스generic_node
: 사용자 지정 컴퓨팅 노드generic_task
: 사용자 정의 작업gke_container
: GKE 컨테이너 인스턴스global
: 달리 적합한 리소스 유형이 없다면 이 리소스를 사용합니다. 대부분의 사용 사례에서는global
보다generic_node
또는generic_task
를 선택하는 것이 낫습니다.k8s_cluster
: Kubernetes 클러스터k8s_container
: Kubernetes 컨테이너k8s_node
: Kubernetes 노드k8s_pod
: Kubernetes 포드
MetricDescriptor
객체를 만든 후metricDescriptors.create
메서드 호출 인수로 전달합니다.
일반적으로 기존 측정항목 설명과 동일한 유형 이름을 사용하여 metricDescriptors.create
를 호출하면 오류가 발생합니다. 하지만 새 MetricDescriptor
객체의 모든 필드가 기존 설명의 필드와 정확히 일치할 경우에는 오류에 해당하지 않으며 아무런 영향도 미치지 않습니다.
다음 예시에서는 게이지 측정항목을 만듭니다.
프로토콜
측정항목 설명을 만들려면 metricDescriptors.create
메서드를 사용합니다.
메서드의 참조 페이지에서 API 탐색기 위젯을 사용하여 이 메서드를 실행할 수 있습니다. 자세한 내용은 API 탐색기를 참조하세요.
다음은 metricDescriptors.create
의 샘플 매개변수입니다.
- name (URL):
projects/[PROJECT_ID]
요청 본문: 다음과 같은
MetricDescriptor
객체를 제공합니다.{ "name": "", "description": "Daily sales records from all branch stores.", "displayName": "Sales", "type": "custom.googleapis.com/stores/sales", "metricKind": "GAUGE", "valueType": "DOUBLE", "unit": "{USD}", "labels": [ { "key": "store_id", "valueType": "STRING", "description": "The ID of the store." }, ], }
[PROJECT_ID
] 대신 프로젝트 ID를 사용하여 위젯의 필드에 이 값을 입력합니다.
메서드를 실행하려면 실행 버튼을 클릭합니다.
새 측정항목을 만들 때 MetricDescriptor
의 name
필드는 무시되고 생략될 수 있습니다. create
메서드는 name
필드가 채워진 새 측정항목 설명을 반환합니다. 이 예시에서는 다음과 같습니다.
"name": "projects/[PROJECT_ID]/metricDescriptors/custom.googleapis.com/stores/daily_sales"
예를 들어 측정항목 설명을 가져오려면 이 이름을 사용합니다.
C#
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Go
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
PHP
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Ruby
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
문제가 발생할 경우 API 호출 문제 해결을 참조하세요.
다음 단계: 사용자 정의 측정항목 작성을 참조하세요.
사용자 정의 측정항목 작성
사용자 정의 측정항목의 측정항목 유형에만 데이터를 작성할 수 있습니다. 데이터를 작성하려면 timeSeries.create
메서드를 사용하세요.
시계열이 있으면 이 메서드가 새 데이터 포인트를 기존 시계열에 추가합니다. 시계열이 없으면 이 메서드가 시계열을 만들고 데이터를 추가합니다.
TimeSeries
객체 목록을 timeSeries.create
에 전달하여 데이터 포인트를 작성합니다.
최대 목록 크기는 200이고 목록의 객체마다 다른 시계열을 지정해야 합니다.
metric
및resource
필드 값은 특정TimeSeries
객체를 식별합니다. 이 필드는 데이터의 측정항목 유형과 데이터가 수집된 모니터링 리소스를 나타냅니다.metricKind
및valueType
필드는 생략합니다. 이 두 필드는 데이터 포인트를 쓸 때 무시됩니다.각
TimeSeries
객체에는 단일Point
객체만 포함되어야 합니다.- 포인트의 값 및 시간 간격이 측정항목 유형의 정의와 일치해야 합니다. 다양한 측정항목 종류의 시간 간격에 대한 자세한 내용은
TimeInterval
을 참조하세요. - 포인트의 시간 간격이 시계열에 이미 존재하는 포인트보다 늦은 시점에 존재해야 합니다.
- 간격의 종료 시간이 25시간보다 이전이거나 5분보다 늦은 시점이어서는 안 됩니다.
- 포인트의 값 및 시간 간격이 측정항목 유형의 정의와 일치해야 합니다. 다양한 측정항목 종류의 시간 간격에 대한 자세한 내용은
동일한 시계열에 포인트를 2개 이상 작성하려면 각 포인트에 대해
timeSeries.create
메서드를 개별적으로 호출합니다. 5초당 포인트 1개보다 빠른 속도로 단일 시계열에 데이터를 작성하지 마세요. 여러 시계열에 데이터 포인트를 추가할 때는 비율 제한이 없습니다.
프로토콜
측정항목 데이터를 작성하려면 timeSeries.create
메서드를 사용하세요.
메서드의 참조 페이지에서 API 탐색기 위젯을 사용하여 이 메서드를 실행할 수 있습니다. 자세한 내용은 API 탐색기를 참조하세요.
측정항목 설명 수동 생성에서 만든 stores/daily_sales
측정항목에 대한 포인트를 작성하려면 다음 안내를 따르세요.
timeSeries.create
의 참조 페이지로 이동합니다.- API 탐색기 위젯에 아래의 매개변수를 제공합니다.
- 실행 버튼을 클릭합니다.
다음 샘플 매개변수를 사용합니다.
- 이름:
projects/[PROJECT_ID]
요청 본문:
TimeSeries
객체 목록을 포함합니다. 다음 샘플에는 목록의 시계열이 하나만 있습니다.{ "timeSeries": [ { "metric": { "type": "custom.googleapis.com/my_metric", "labels": { "my_label": "my_value" } }, "resource": { "type": "gce_instance", "labels": { "project_id": "[PROJECT_ID]", "instance_id": "1234567890123456789", "zone": "us-central1-f" } }, "points": [ { "interval": { "endTime": "2018-06-01T10:00:00-04:00" }, "value": { "doubleValue": 123.45 } } ] } ] }
C#
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Go
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
PHP
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Ruby
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
문제가 발생할 경우 API 호출 문제 해결을 참조하세요.
사용자 정의 측정항목 삭제
사용자 정의 측정항목을 삭제하려면 측정항목 설명을 삭제합니다. Google Cloud 프로젝트에 저장된 시계열 데이터는 삭제할 수 없습니다. 하지만 측정항목 설명을 삭제하면 데이터에 액세스할 수 없게 됩니다. 데이터는 데이터 보관 정책에 따라 만료 및 삭제됩니다.
기본 제공 측정항목의 측정항목 설명은 삭제할 수 없습니다.
측정항목 설명을 삭제하려면 metricDescriptors.delete
메서드를 호출합니다.
프로토콜
측정항목 설명을 삭제하려면 metricDescriptors.delete
메서드를 호출합니다.
메서드의 참조 페이지에서 API 탐색기 위젯을 사용하여 이 메서드를 실행할 수 있습니다. 자세한 내용은 API 탐색기를 참조하세요.
측정항목 설명 수동 생성에서 만든 stores/daily_sales
측정항목을 삭제하려면 다음 안내를 따르세요.
metricDescriptors.delete
의 참조 페이지로 이동합니다.API 탐색기 위젯에 측정항목 설명자 이름을 제공합니다.
이름:
projects/[PROJECT_ID]/metricDescriptors/custom.googleapis.com/stores/daily_sales
실행 버튼을 클릭합니다.
C#
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Go
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
PHP
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Ruby
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
문제가 발생할 경우 API 호출 문제 해결을 참조하세요.
사용자 정의 측정항목 수정
사용자 정의 측정항목을 수정하려면 측정항목을 정의하는 MetricDescriptor
객체를 업데이트해야 합니다.
지원되는 유일한 수정은 라벨을 추가하는 것입니다.
기존 사용자 정의 측정항목에 라벨을 추가하려면 timeSeries.create
메서드를 사용하고 시계열 데이터에 새 라벨을 포함합니다. 작성할 라벨이 유효하고 총 라벨 수가 30개 미만인 경우 라벨 설명에 라벨이 추가됩니다.
그러면 처음부터 측정항목에 라벨이 있었던 것처럼 시계열 데이터가 작성됩니다.
새 라벨을 추가하는 것보다 더 많은 작업을 하려면 측정항목 설명자를 삭제하고 다시 만들어야 합니다. 이 경우 오래된 측정항목 설명자에 대해 이전에 수집된 시계열 데이터가 모두 손실됩니다. 자세한 내용은 사용자 정의 측정항목 삭제를 참조하세요.
측정항목 이름은 변경할 수 없습니다.