이 문서에서는 OpenTelemetry Collector를 배포하고, otlphttp 내보내기 도구와
Telemetry (OTLP) API를 사용하도록 수집기를 구성하고, 원격 분석
생성기를 실행하여 Cloud Monitoring에 측정항목을 쓰는 방법을 설명합니다. 그런 다음 Cloud Monitoring에서 이러한 측정항목을 볼 수 있습니다.
Google Kubernetes Engine을 사용하는 경우 GKE용 관리형 OpenTelemetry를 따를 수 있습니다. Telemetry API를 사용하는 OpenTelemetry Collector를 수동으로 배포하고 구성하는 대신
SDK를 사용하여 애플리케이션에서 Telemetry API로 직접 측정항목을 보내는 경우 추가 정보 및 예시는 SDK를 사용하여 애플리케이션에서 측정항목 보내기를 참조하세요.
OpenTelemetry Collector 및 Telemetry API를 OpenTelemetry 제로 코드 계측과 함께 사용할 수도 있습니다. 자세한 내용은 Java용 OpenTelemetry 제로 코드 계측 사용을 참조하세요.
시작하기 전에
이 섹션에서는 수집기를 배포하고 사용하기 위한 환경을 설정하는 방법을 설명합니다.
프로젝트 선택 또는 만들기 Google Cloud
이 연습에 사용할 Google Cloud 프로젝트를 선택합니다. 아직 프로젝트가 없는 경우 다음 안내에 따라 만듭니다. Google Cloud
- 계정에 로그인합니다. Google Cloud 를 처음 사용하는 경우 Google Cloud, 계정을 만들어 실제 시나리오에서 제품이 어떻게 작동하는지 평가합니다. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
명령줄 도구 설치
이 문서에서는 다음 명령줄 도구를 사용합니다.
gcloudkubectl
gcloud 및 kubectl 도구는 Google Cloud CLI의 일부입니다. 설치에 대한 자세한 내용은 Google Cloud CLI 구성요소 관리를 참조하세요. 설치한 gcloud CLI 구성요소를 보려면 다음 명령어를 실행하세요.
gcloud components list
사용하도록 gcloud CLI를 구성하려면 다음 명령어를 실행하세요.
gcloud auth login gcloud config set project PROJECT_ID
API 사용 설정
프로젝트에서 Cloud Monitoring API 및 Telemetry API를 사용 설정합니다.Google Cloud Telemetry API에 특히 주의하세요.telemetry.googleapis.com 이 문서가 이 API를 처음 접하는 것일 수 있습니다.
다음 명령어를 실행하여 API를 사용 설정합니다.
gcloud services enable monitoring.googleapis.com gcloud services enable telemetry.googleapis.com
클러스터 만들기
GKE 클러스터를 만듭니다.
다음 명령어를 실행하여
otlp-test라는 Google Kubernetes Engine 클러스터를 만듭니다.gcloud container clusters create-auto --location CLUSTER_LOCATION otlp-test --project PROJECT_ID클러스터가 생성된 후 다음 명령어를 실행하여 클러스터에 연결합니다.
gcloud container clusters get-credentials otlp-test --region CLUSTER_LOCATION --project PROJECT_ID
Kubernetes 서비스 계정 승인
다음 명령어는 Kubernetes 서비스 계정에 필요한 Identity and Access Management (IAM) 역할을 부여합니다. 이러한 명령어는 GKE용 워크로드 아이덴티티 제휴를 사용한다고 가정합니다.
export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
gcloud projects add-iam-policy-binding projects/PROJECT_ID \
--role=roles/logging.logWriter \
--member=principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/opentelemetry/sa/opentelemetry-collector \
--condition=None
gcloud projects add-iam-policy-binding projects/PROJECT_ID \
--role=roles/monitoring.metricWriter \
--member=principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/opentelemetry/sa/opentelemetry-collector \
--condition=None
gcloud projects add-iam-policy-binding projects/PROJECT_ID \
--role=roles/telemetry.tracesWriter \
--member=principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/opentelemetry/sa/opentelemetry-collector \
--condition=None
서비스 계정의 형식이 다른 경우 Google Cloud Managed Service for Prometheus 문서의 명령어를 사용하여 서비스 계정을 승인할 수 있습니다. 단, 다음과 같이 변경해야 합니다.
- 서비스 계정 이름
gmp-test-sa를 서비스 계정으로 바꿉니다. roles/monitoring.metricWriter역할뿐만 아니라 이전 명령어 집합에 표시된 역할을 부여합니다.
OpenTelemetry Collector 배포
다음 YAML 파일의 사본을 만들고 collector.yaml이라는 파일에 배치하여 수집기 구성을 만듭니다. GitHub의 otlp-k8s-ingest
저장소에서 다음 구성을 찾을 수도 있습니다.
사본에서 ${GOOGLE_CLOUD_PROJECT}
를 프로젝트 ID인 PROJECT_ID로 바꿔야 합니다.
Prometheus 측정항목용 OTLP는 OpenTelemetry Collector 버전 0.140.0 이상을 사용하는 경우에만 작동합니다.
배포된 OpenTelemetry Collector 구성
Kubernetes 리소스를 만들어 수집기 배포를 구성합니다.
다음 명령어를 실행하여
opentelemetry네임스페이스를 만들고 네임스페이스에서 수집기 구성을 만듭니다.kubectl create namespace opentelemetry kubectl create configmap collector-config -n opentelemetry --from-file=collector.yaml다음 명령어를 실행하여 Kubernetes 리소스로 수집기를 구성합니다.
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/refs/heads/otlpmetric/k8s/base/2_rbac.yaml kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/refs/heads/otlpmetric/k8s/base/3_service.yaml kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/refs/heads/otlpmetric/k8s/base/4_deployment.yaml kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/refs/heads/otlpmetric/k8s/base/5_hpa.yaml수집기 포드가 '실행 중' 상태가 되고 1/1 컨테이너가 준비될 때까지 기다립니다. 첫 번째 워크로드가 배포된 경우 Autopilot에서 약 3분이 걸립니다. 포드를 확인하려면 다음 명령어를 사용하세요.
kubectl get po -n opentelemetry -w포드 상태를 계속 확인하지 않으려면 Ctrl-C를 입력하여 명령어를 중지합니다.
수집기 로그를 확인하여 명백한 오류가 없는지 확인할 수도 있습니다.
kubectl logs -n opentelemetry deployment/opentelemetry-collector
원격 분석 생성기 배포
오픈소스
telemetrygen 도구를 사용하여 구성을 테스트할 수 있습니다. 이 앱은 원격 분석을 생성하고 수집기로 보냅니다.
opentelemetry-demo네임스페이스에telemetrygen앱을 배포하려면 다음 명령어를 실행하세요.kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/refs/heads/main/sample/app.yaml배포를 만든 후 포드가 생성되고 실행되기까지 시간이 걸릴 수 있습니다. 포드의 상태를 확인하려면 다음 명령어를 실행하세요.
kubectl get po -n opentelemetry-demo -w포드 상태를 계속 확인하지 않으려면 Ctrl-C를 입력하여 명령어를 중지합니다.
측정항목 탐색기를 사용하여 측정항목 쿼리
telemetrygen 도구는 gen이라는 측정항목에 씁니다. 측정항목 탐색기의 쿼리 빌더 인터페이스와 PromQL 쿼리 편집기 모두에서 이 측정항목을 쿼리할 수 있습니다.
콘솔에서 leaderboard 측정항목 탐색기 페이지로 이동합니다. Google Cloud
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Monitoring 인 결과를 선택합니다.
- 측정항목 탐색기 쿼리 빌더 인터페이스를 사용하는 경우 측정항목의 전체 이름은
prometheus.googleapis.com/gen/gauge입니다. - PromQL 쿼리 편집기를 사용하는 경우 이름
gen을 사용하여 측정항목을 쿼리할 수 있습니다.
다음 이미지는 측정항목 탐색기의 gen 측정항목 차트를 보여줍니다.
클러스터 삭제
측정항목을 쿼리하여 배포를 확인한 후 클러스터를 삭제할 수 있습니다. 클러스터를 삭제하려면 다음 명령어를 실행합니다.
gcloud container clusters delete --location CLUSTER_LOCATION otlp-test --project PROJECT_ID
기타 OpenTelemetry 기반 수집기 사용
표준이 아닌 OpenTelemetry 기반 수집기에 대한 고객 지원을 제공하지 않지만 다른 OpenTelemetry 기반 수집기를 사용하여 Telemetry API로 OTLP 측정항목을 보낼 수 있습니다. Google Cloud
예를 들어
Grafana Alloy 버전 1.16.0 이상을 사용하여 otelcol.auth.google
구성요소
로 인증하고 이 문서의 안내에 따라 표준 OpenTelemetry Collector와 유사하게 구성하여 측정항목을 보낼 수 있습니다.
다음 단계
- OpenTelemetry Collector 및 Telemetry API를 OpenTelemetry 제로 코드 계측과 함께 사용하는 방법에 대한 자세한 내용은 Java용 OpenTelemetry 제로 코드 계측 사용을 참조하세요.
- SDK를 사용하는 애플리케이션에서 측정항목을 보내는 방법에 대한 자세한 내용은 SDK를 사용하여 애플리케이션에서 측정항목 보내기를 참조하세요.
- 다른 내보내기 도구에서
otlphttp내보내기 도구로 이전하는 방법에 대한 자세한 내용은 OTLP 내보내기 도구로 이전을 참조하세요. - Telemetry API에 대해 자세히 알아보려면 Telemetry (OTLP) API 개요를 참조하세요.