GKE에서 Java 워크로드에 OpenTelemetry 제로 코드 계측 사용

이 문서에서는 OpenTelemetry 제로 코드 계측을 사용하여 Google Kubernetes Engine (GKE)에서 실행되는 Java 애플리케이션을 자동으로 계측하는 방법을 보여줍니다. 제로 코드 계측을 사용하면 최소한의 수동 작업으로 Java 워크로드에 대한 포괄적인 관측 가능성을 확보할 수 있습니다.

이 둘러보기에서는 GKE에 예시 Java 애플리케이션을 배포하고, OpenTelemetry를 사용하여 애플리케이션을 자동 계측하고, Google Cloud Observability를 사용하여 생성된 원격 분석 신호를 시각화하는 단계를 자세히 설명합니다.

이 둘러보기에서는 GKE에서 실행되는 Java 워크로드를 자동 계측하는 방법을 설명하지만 지원되는 다른 언어로 이러한 안내를 확장할 수 있습니다.

제로 코드 계측을 사용해야 하는 이유

OpenTelemetry의 제로 코드 계측 (자동 계측이라고도 함)은 애플리케이션 개발자가 추가 코드를 작성하거나 기존 코드를 수정하지 않고도 구성 가능한 관측 가능성을 코드에 추가할 수 있는 강력한 도구입니다. 제로 코드 계측은 활성 상태로 배포된 애플리케이션 라이브러리에 계측을 자동으로 추가하여 작동하며, 골든 시그널을 내보내 애플리케이션 성능에 관한 신뢰할 수 있는 통계를 제공합니다. 따라서 제로 코드 계측은 애플리케이션의 관측 가능성 여정을 시작하기에 적합합니다.

Java의 제로 코드 계측은 언어 생태계에서 널리 사용되는 인기 라이브러리를 계측하여 측정항목과 추적 범위를 내보냅니다. Java의 경우 측정항목에는 다음이 포함됩니다.

내보내지는 측정항목 집합은 계측되는 애플리케이션과 애플리케이션에서 사용하는 라이브러리에 따라 다릅니다. Java 제로 코드 계측 에이전트로 계측할 수 있는 라이브러리 및 프레임워크의 전체 목록은 지원되는 라이브러리 및 프레임워크를 참고하세요.

자동 계측을 사용하면 다음과 같은 작업을 할 수 있습니다.

  • 코드를 변경하지 않고도 골든 시그널 모니터링을 받을 수 있습니다.
  • 모든 RPC 호출에 걸쳐 있는 개별 사용자 트레이스와 높은 p99.9 지연 시간을 연관시킵니다.
  • 다양한 인기 라이브러리 및 프레임워크의 측정항목, 로그, 트레이스에서 일관된 원격 분석을 가져옵니다.

제로 코드 계측에 대한 자세한 내용은 OpenTelemetry 제로 코드를 참고하세요.

개요

GKE에서 실행되는 Java 워크로드에 관측 가능성을 추가하려면 다음 구성요소를 배포해야 합니다.

  • 애플리케이션에서 원격 분석을 생성하는 OpenTelemetry 제로 코드 계측
  • 애플리케이션에서 생성된 원격 분석을 수집하고, 중요한 메타데이터와 컨텍스트로 보강하고, 사용을 위해 Google Cloud 로 라우팅하는 OpenTelemetry Collector

이 둘러보기에서는 측정항목과 트레이스를 Google Cloud에 내보내는 계측된 Java 애플리케이션을 GKE에 배포합니다. 그런 다음 측정항목 탐색기, 로그 탐색기, 추적 탐색기와 같은 Google Cloud의 모니터링 가능성 제품을 사용하여 이러한 원격 분석 신호를 볼 수 있습니다. 생성된 원격 분석을 보고 사용하는 방법에 관한 자세한 내용은 원격 분석 보기를 참고하세요.

이 둘러보기에서는 다음 유료 서비스를 사용하여 신호를 작성합니다.

  • Cloud Monitoring의 Managed Service for Prometheus
  • Cloud Logging
  • Cloud Trace
  • Google Kubernetes Engine
  • Cloud Build
  • Artifact Registry

프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.

시작하기 전에

이 섹션에서는 앱을 배포하고 계측한 후 실행하기 위한 환경을 설정하는 방법을 설명합니다.

Google Cloud 프로젝트 선택 또는 만들기

이 둘러보기의 Google Cloud 프로젝트를 선택합니다. 아직 Google Cloud 프로젝트가 없으면 다음을 실행하여 만듭니다.

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

명령줄 도구 설치

이 문서에서는 다음 명령줄 도구를 사용합니다.

  • gcloud
  • kubectl

gcloudkubectl 도구는 Google Cloud CLI의 일부입니다. 설치에 대한 자세한 내용은 Google Cloud CLI 구성요소 관리를 참조하세요. 설치한 gcloud CLI 구성요소를 보려면 다음 명령어를 실행하세요.

gcloud components list

환경 변수 설정하기

자주 사용하는 값의 입력을 줄이고 입력 오류를 방지하며 이 문서의 명령어를 실행할 수 있도록 다음 환경 변수를 설정하세요.

export GOOGLE_CLOUD_PROJECT=PROJECT_ID
export CLUSTER_NAME=CLUSTER_NAME
export CLUSTER_REGION=us-east1
export ARTIFACT_REGISTRY=opentelemetry-autoinstrument-registry
export REGISTRY_LOCATION=us-east4

명령어를 실행하기 전에 다음 변수를 바꾸거나 기본값을 사용합니다.

  • PROJECT_ID: 프로젝트 식별자
  • CLUSTER_NAME: 클러스터의 이름입니다. 새 클러스터 또는 기존 클러스터를 참조할 수 있습니다.
  • us-east1: 클러스터의 리전입니다. 기존 클러스터를 사용하는 경우 해당 클러스터의 리전을 사용합니다.
  • opentelemetry-autoinstrument-registry: Artifact Registry 저장소의 이름입니다. 새 저장소 또는 기존 저장소를 참조할 수 있습니다.
  • us-east4: Artifact Registry 저장소의 리전입니다. 기존 저장소를 사용하는 경우 해당 저장소의 리전을 사용합니다.

이 문서의 명령어를 실행할 때 오류가 발생하면 터미널 환경에서 이러한 변수가 올바르게 설정되었는지 확인하세요.

API 사용 설정

이 문서의 서비스를 사용하려면 Google Cloud 프로젝트에서 다음 API를 사용 설정해야 합니다.

  • Artifact Registry API: artifactregistry.googleapis.com
  • Cloud Build API: cloudbuild.googleapis.com
  • Google Kubernetes Engine: container.googleapis.com
  • Identity and Access Management API: iam.googleapis.com
  • Cloud Logging API: logging.googleapis.com
  • Cloud Monitoring API: monitoring.googleapis.com
  • Telemetry API: telemetry.googleapis.com

이러한 API는 원격 분석 API를 제외하고 Google Cloud 프로젝트에서 이미 사용 설정되어 있을 수 있습니다. 다음 명령어를 실행하여 사용 설정된 API를 나열합니다.

gcloud services list

아직 사용 설정되지 않은 API를 사용 설정합니다. 원격 분석 API(telemetry.googleapis.com)에 특히 주의하세요. 이 문서에서 이 API를 처음 접했을 수도 있습니다.

아직 사용 설정되지 않은 API를 사용 설정하려면 해당 API의 명령어를 실행합니다.

gcloud services enable artifactregistry.googleapis.com
gcloud services enable cloudbuild.googleapis.com
gcloud services enable container.googleapis.com
gcloud services enable iam.googleapis.com
gcloud services enable logging.googleapis.com
gcloud services enable monitoring.googleapis.com
gcloud services enable telemetry.googleapis.com

클러스터 설정

샘플 애플리케이션 및 수집기용 GKE 클러스터를 설정합니다.

  1. 다음 명령어를 실행하여 Google Cloud 에 로그인합니다.

    gcloud auth login
    gcloud config set project PROJECT_ID
    
  2. 아직 GKE 클러스터가 없는 경우 다음 명령어를 실행하여 Autopilot 클러스터를 만듭니다.

    gcloud container clusters create-auto --region us-east1 CLUSTER_NAME --project PROJECT_ID
    
  3. 클러스터와 상호작용하려면 다음 명령어를 실행하여 로컬 kubectl 유틸리티를 연결합니다.

    gcloud container clusters get-credentials CLUSTER_NAME --region us-east1 --project PROJECT_ID
    

Java 애플리케이션 배포

이 섹션의 단계에서는 계측되지 않은 샘플 Java 애플리케이션인 OpenTelemetry Spring Boot 계측 예시를 클러스터에 배포합니다. 이 섹션에서는 Cloud Build와 Artifact Registry를 사용하여 애플리케이션 이미지를 만들고 저장합니다.

  1. 아직 Artifact Registry 저장소가 없으면 다음 명령어를 실행하여 저장소를 만듭니다.

    gcloud artifacts repositories create opentelemetry-autoinstrument-registry --repository-format=docker --location=us-east4 --description="GKE Autoinstrumentation sample app"
    
  2. 다음 명령어를 실행하여 샘플 애플리케이션을 클론합니다.

    git clone https://github.com/GoogleCloudPlatform/opentelemetry-operations-java.git
    
  3. 다음 환경 변수를 설정합니다.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID
    export ARTIFACT_REGISTRY=opentelemetry-autoinstrument-registry
    export REGISTRY_LOCATION=us-east4
    
  4. 다음 명령어를 실행하여 애플리케이션 이미지를 빌드하고 Artifact Registry 저장소에 푸시합니다.

    pushd opentelemetry-operations-java/examples/instrumentation-quickstart && \
    gcloud builds submit --config <(envsubst < cloudbuild-uninstrumented-app.yaml) . && \
    popd
    
  5. 애플리케이션의 Kubernetes 배포 구성 파일을 만듭니다. 다음 구성을 복사하여 deployment.yaml이라는 파일에 저장합니다.

    apiVersion: v1
    kind: Service
    metadata:
      name: quickstart-app
      labels:
        app: quickstart-app
        app.kubernetes.io/part-of: gke-autoinstrument-guide
    spec:
      ports:
        - port: 8080
          targetPort: 8080
          name: quickstart-app
      selector:
        app: quickstart-app
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: quickstart-app
      labels:
        app: quickstart-app
        app.kubernetes.io/part-of: gke-autoinstrument-guide
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: quickstart-app
      template:
        metadata:
          labels:
            app: quickstart-app
        spec:
          containers:
            - name: quickstart-app
              image: us-east4-docker.pkg.dev/PROJECT_ID/opentelemetry-autoinstrument-registry/java-quickstart:latest
              ports:
                - containerPort: 8080
                  name: quickstart-app
    
  6. 다음 명령어를 실행하여 애플리케이션의 네임스페이스를 만듭니다.

    kubectl create namespace APPLICATION_NAMESPACE
    
  7. 다음 명령어를 실행하여 클러스터에 배포 구성을 적용합니다.

    kubectl apply -f deployment.yaml -n APPLICATION_NAMESPACE
    
  8. 배포를 만든 후 포드가 생성되고 실행되기까지 시간이 걸릴 수 있습니다. 포드 상태를 확인하려면 다음 명령어를 실행하세요.

    kubectl get po -n APPLICATION_NAMESPACE -w
    

    포드 상태 모니터링을 중지하려면 Ctrl-C를 입력하여 명령어를 중지합니다.

OpenTelemetry Collector 인스턴스 설정

이 섹션에서는 GKE 클러스터에서 Google 기반 OpenTelemetry Collector 인스턴스를 실행하는 다른 배포를 만듭니다. 수집기는 다음 내보내기 도구를 사용하여 데이터를 내보내도록 구성됩니다.

이 문서의 수동 단계를 따라 OpenTelemetry Collector를 배포하는 대신 관리 환경에서 Google 기반 OpenTelemetry Collector를 사용하는 GKE용 관리형 OpenTelemetry를 따를 수 있습니다.

  1. 다음 명령어를 실행하여 OpenTelemetry Collector 배포를 위한 Kubernetes 서비스 계정을 승인합니다.

    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
    
  2. 다음 명령어를 실행하여 권장되는 기본 구성으로 GKE 클러스터에 Google 기반 OpenTelemetry Collector 인스턴스를 배포합니다.

    kubectl kustomize https://github.com/GoogleCloudPlatform/otlp-k8s-ingest//k8s/base?ref=otlpmetric | envsubst | kubectl apply -f -
    

    이 구성은 opentelemetry 네임스페이스에 수집기를 배포합니다.

  3. 배포를 만든 후 포드가 생성되고 실행되기까지 시간이 걸릴 수 있습니다. 포드 상태를 확인하려면 다음 명령어를 실행하세요.

    kubectl get po -n opentelemetry -w
    

    포드 상태 모니터링을 중지하려면 Ctrl-C를 입력하여 명령어를 중지합니다.

OpenTelemetry 제로 코드 계측 구성

GKE에 배포된 애플리케이션에 OpenTelemetry 제로 코드 계측을 구성하려면 GKE 클러스터에 OpenTelemetry Operator를 설치합니다. OpenTelemetry Operator는 클러스터 내에서 실행되는 Kubernetes 리소스에 자동 계측을 삽입하는 데 사용되는 Kubernetes 커스텀 리소스 정의 (CRD), 계측 리소스에 대한 액세스를 제공합니다.

계측 리소스는 특수 주석을 사용하여 특정 워크로드에 '삽입'되거나 '적용'됩니다. OpenTelemetry Operator는 클러스터 내에서 실행되는 리소스의 이러한 주석을 관찰하고 해당 리소스에서 관리하는 애플리케이션에 적절한 계측을 삽입합니다.

  1. Helm CLI가 아직 설치되어 있지 않으면 다음 명령어를 실행하여 Helm을 설치합니다.

    curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
    
    chmod 700 get_helm.sh
    
    ./get_helm.sh                         
    
  2. 클러스터에 cert-manager이 아직 설치되어 있지 않으면 다음 명령어를 실행하여 설치합니다.

    helm repo add jetstack https://charts.jetstack.io
    
    helm repo update
    
    helm install \
    --create-namespace \
    --namespace cert-manager \
    --set installCRDs=true \
    --set global.leaderElection.namespace=cert-manager \
    --set extraArgs={--issuer-ambient-credentials=true} \
    cert-manager jetstack/cert-manager
    
  3. 다음 명령어를 실행하고 버전 0.140.0 이상을 사용하여 OpenTelemetry Operator를 설치합니다.

    kubectl apply -f https://github.com/open-telemetry/opentelemetry-operator/releases/download/v0.140.0/opentelemetry-operator.yaml
    
  4. 다음 콘텐츠로 instrumentation.yaml이라는 파일을 만들어 계측 맞춤 리소스의 구성 파일을 만듭니다.

    apiVersion: opentelemetry.io/v1alpha1
    kind: Instrumentation
    metadata:
      name: sample-java-auto-instrumentation
    spec:
      exporter:
        endpoint: http://opentelemetry-collector.opentelemetry.svc.cluster.local:4317
      sampler:
        type: parentbased_traceidratio
        # Adjust the sampling rate to control cost
        argument: "0.01"
    
      java:
        env:
          - name: OTEL_EXPORTER_OTLP_PROTOCOL
            value: grpc
          - name: OTEL_LOGS_EXPORTER
            value: none
    
  5. Operator의 네임스페이스를 만듭니다. 애플리케이션 네임스페이스 APPLICATION_NAMESPACE에 사용한 것과 동일한 값을 사용할 수 있습니다.

    kubectl create namespace INSTRUMENTATION_NAMESPACE
    
  6. 다음 명령어를 실행하여 클러스터에 계측 커스텀 리소스를 만들고 instrumentation.yaml 파일을 적용합니다.

    kubectl apply -f instrumentation.yaml -n INSTRUMENTATION_NAMESPACE
    
  7. 이전에 배포된 예시 Java 애플리케이션에 자동 계측 주석을 적용합니다. 다음 명령어를 실행하여 주석으로 원래 배포를 패치합니다.

    kubectl patch deployment.apps/quickstart-app -n APPLICATION_NAMESPACE -p '{"spec":{"template":{"metadata":{"annotations":{"instrumentation.opentelemetry.io/inject-java": "'"INSTRUMENTATION_NAMESPACE"'/sample-java-auto-instrumentation"}}}}}'
    
  8. 애플리케이션 배포가 다시 시작되도록 배포를 패치한 후 다음 명령어를 실행하여 애플리케이션의 포드 상태를 확인할 수 있습니다.

    kubectl get po -n APPLICATION_NAMESPACE -w
    

    포드 상태 모니터링을 중지하려면 Ctrl-C를 입력하여 명령어를 중지합니다.

이제 GKE 클러스터에 배포된 Java 애플리케이션이 자동 계측됩니다.

배포된 애플리케이션에서 원격 분석 생성

자동 계측된 애플리케이션에서 원격 분석을 생성하려면 사용자 활동을 시뮬레이션하기 위해 애플리케이션에 요청을 보내야 합니다. 트래픽 시뮬레이터를 실행하여 꾸준한 트래픽 스트림을 생성할 수 있습니다. 이 섹션에서는 시뮬레이터를 다운로드하고, Cloud Build를 사용하여 빌드하고, Artifact Registry에 이미지를 저장하고, 시뮬레이터를 배포하는 방법을 설명합니다.

  1. 다음 명령어를 실행하여 트래픽 시뮬레이터 애플리케이션을 다운로드합니다.

    mkdir traffic-simulator && pushd traffic-simulator && \
    curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/opentelemetry-operator-sample/refs/heads/main/recipes/self-managed-otlp-ingest/traffic/hey.Dockerfile  && \
    curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/opentelemetry-operator-sample/refs/heads/main/recipes/self-managed-otlp-ingest/traffic/cloudbuild-hey.yaml && \
    popd
    

    위 명령어는 다음을 실행합니다.

    1. 트래픽 시뮬레이터 애플리케이션 빌드를 위한 별도의 디렉터리를 만듭니다.
    2. 애플리케이션의 Dockerfile을 다운로드합니다.
    3. 애플리케이션 이미지를 빌드하기 위한 Cloud Build 구성을 다운로드합니다.
  2. 다음 명령어를 실행하여 Cloud Build로 애플리케이션 이미지를 만들고 Artifact Registry에 푸시합니다.

    pushd traffic-simulator && \
    gcloud builds submit --config <(envsubst < cloudbuild-hey.yaml) . && \
    popd
    
  3. 다음 콘텐츠를 traffic-simulator 디렉터리의 quickstart-traffic.yaml 파일에 복사하여 시뮬레이터의 배포 구성 파일을 만듭니다.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: traffic-simulator
      labels:
        app.kubernetes.io/part-of: gke-autoinstrument-guide
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: traffic-simulator
      template:
        metadata:
          labels:
            app: traffic-simulator
        spec:
          containers:
            - name: traffic-simulator
              image: us-east4-docker.pkg.dev/PROJECT_ID/opentelemetry-autoinstrument-registry/hey:latest
              args:
              - -c=2
              - -q=1
              - -z=1h
              - http://quickstart-app:8080/multi
    
  4. 다음 명령어를 실행하여 트래픽 시뮬레이터를 배포합니다.

    pushd traffic-simulator && \
    kubectl apply -f quickstart-traffic.yaml -n APPLICATION_NAMESPACE && \
    popd
    
  5. 배포를 만든 후 포드가 생성되고 실행되기까지 시간이 걸릴 수 있습니다. 포드 상태를 확인하려면 다음 명령어를 실행하세요.

    kubectl get po -n APPLICATION_NAMESPACE -w
    

    포드 상태 모니터링을 중지하려면 Ctrl-C를 입력하여 명령어를 중지합니다.

원격 분석 보기

트래픽 시뮬레이터가 애플리케이션에 요청을 전송하기 시작하면 배포된 Java 애플리케이션에서 원격 분석을 생성합니다. 측정항목과 트레이스가 Google Cloud에 표시되기 시작하는 데 몇 분 정도 걸릴 수 있습니다.

  • OpenTelemetry Operator에 의해 삽입된 계측은 OpenTelemetry Java 에이전트를 사용합니다. OpenTelemetry Java 에이전트에는 측정항목을 내보내는 널리 사용되는 Java 라이브러리 및 프레임워크를 위한 기본 제공 계측이 포함되어 있습니다.

  • 삽입된 계측은 샘플 애플리케이션에서 노출된 엔드포인트에 대한 모든 호출의 트레이스도 자동으로 캡처합니다. 트래픽 시뮬레이터는 Java 애플리케이션에서 노출된 /multi 엔드포인트로 일정한 속도로 요청을 지속적으로 전송합니다. /multi 엔드포인트는 최종 응답을 생성하기 위해 /single 엔드포인트에 요청을 전송합니다. 이러한 상호작용은 Trace 탐색기를 사용하여 볼 수 있는 트레이스로 표시됩니다.

측정항목 보기

Cloud Monitoring의 측정항목 탐색기에서 자동 계측된 측정항목을 볼 수 있습니다. 이 섹션에는 PromQL로 작성된 샘플 쿼리가 포함되어 있습니다.

Google Cloud 콘솔에서  측정항목 탐색기 페이지로 이동합니다.

측정항목 탐색기로 이동

검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Monitoring인 결과를 선택합니다.

샘플 애플리케이션에서 확인할 수 있는 측정항목은 다음과 같습니다.

  • JVM 런타임 측정항목: OpenTelemetry Java 에이전트는 기본 JVM에 관한 측정항목을 내보냅니다. 이러한 측정항목은 JVM 메모리, 가비지 컬렉션, 클래스, 스레드 및 기타 관련 개념에 관한 정보를 노출합니다. 지원되는 JVM 측정항목의 전체 목록은 JVM 런타임 측정항목 시맨틱 규칙 페이지를 참고하세요.

    • JVM 메모리 사용량: 측정항목 탐색기에 다음 PromQL 쿼리를 붙여넣습니다.

      sum(avg_over_time({"process.runtime.jvm.memory.usage"}[${__interval}]))
      
    • JVM CPU 사용률: 측정항목 탐색기에 다음 PromQL 쿼리를 붙여넣습니다.

      sum(avg_over_time({"process.runtime.jvm.cpu.utilization"}[${__interval}]))
      

      다음 차트는 JVM CPU 사용률 측정항목을 보여줍니다.

      OpenTelemetry 제로 코드 계측으로 캡처된 JVM CPU 사용률을 보여주는 차트

  • Spring Boot 측정항목: 샘플 애플리케이션은 Spring Boot 프레임워크를 사용하며, 이 프레임워크는 Java용 OpenTelemetry 제로 코드 계측에서도 지원됩니다.

    • 평균 HTTP 클라이언트 기간: 측정항목 탐색기에 다음 PromQL 쿼리를 붙여넣습니다.

      sum(rate({"http.client.duration_sum"}[${__interval}])) by (cluster, job) / sum(rate({"http.client.duration_count"}[${__interval}])) by (cluster, job)
      
    • 평균 HTTP 서버 기간: 측정항목 탐색기에 다음 PromQL 쿼리를 붙여넣습니다.

      sum(rate({"http.server.duration_sum"}[${__interval}])) by (cluster, job) / sum(rate({"http.server.duration_count"}[${__interval}])) by (cluster, job)
      

      다음 차트는 Spring Boot 평균 HTTP 서버 기간 측정항목을 보여줍니다.

      OpenTelemetry 제로 코드 계측으로 캡처한 평균 HTTP 서버 기간을 보여주는 차트

측정항목 탐색기 사용 방법에 대한 자세한 내용은 측정항목 탐색기 사용 시 측정항목 선택을 참조하세요.

trace 보기

Cloud Trace의 Trace 탐색기에서 자동 계측된 trace를 볼 수 있습니다. '서비스 이름'을 필터링하고 서비스 이름을 quickstart-app로 설정하여 Trace Explorer에서 이러한 트레이스를 필터링할 수 있습니다.

Google Cloud 콘솔에서 Trace 탐색기 페이지로 이동합니다.

Trace 탐색기로 이동

검색창을 사용하여 이 페이지를 찾을 수도 있습니다.

다음 스크린샷은 OpenTelemetry quickstart-app 배포로 생성된 트레이스를 보여줍니다.

Trace Explorer에는 OpenTelemetry 제로 코드 계측으로 캡처된 트레이스가 표시됩니다.

Trace 탐색기 사용에 대한 자세한 내용은 trace 찾기 및 탐색을 참고하세요.

삭제

새 Google Cloud 프로젝트를 만들었지만 더 이상 필요하지 않은 경우 다음 명령어를 실행하여 삭제할 수 있습니다.

gcloud projects delete PROJECT_ID

기존 프로젝트를 사용한 경우 이 연습의 일부로 만든 리소스를 삭제하여 비용을 절약할 수 있습니다.

  • 다음 명령어를 실행하여 GKE 클러스터를 삭제합니다.

    gcloud container clusters delete CLUSTER_NAME --location=us-east1
    
  • 다음 명령어를 실행하여 Artifact Registry 저장소를 삭제합니다.

    gcloud artifacts repositories delete opentelemetry-autoinstrument-registry --location=us-east4