0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cloud Traceへコード変更無しでトレースをエクスポートする

Last updated at Posted at 2024-08-31

はじめに

Cloud Traceはアプリケーションのトレース情報を収集し、リクエストの遅延やボトルネックを特定を可能にするGoogle Cloudのサービスです。

今回は、OpenTelemetry Java Agentを使用して、JavaアプリケーションのコードおよびGradleの変更無しでトレース情報を送信することを検証します。

ユースケース

この手法を検証した理由は、マルチクラウド環境でアプリケーションをデプロイした際に、各クラウドの Observability マネージドサービスを効率的に活用したかったためです。

例えば、Azure 側にホストしているアプリケーションのパフォーマンス監視は Application Insights で行い、Google Cloud では Cloud Monitoring/Trace で行いたいという状況です。

もちろん、クロスクラウドな集約型 APM ツールを導入するという手法も一般的ですが、今回はその手法には触れません。

Active/Passive マルチクラウドアーキテクチャにおいては、片方のクラウドを監視する機会は限定的であるため、各マネージドサービスを活用するアプローチは軽量で合理的だと考えています。

また、ソースコードを変更したくない理由は、各クラウド向けに同一アプリケーションのソースコードを二重管理したくないためです。

Cloud Trace Agent?

多くのMonitoringツールはコードなしで導入可能なJava agentを提供しています。前述の Azure Application Insightsについても同様です。

Cloud Trace Agent の jarは提供されていませんがOpenTelemetry Java Agentを活用することで自動計装(auto-instrumentation)が実現可能となります。

加えて、Google Cloud へエクスポートするためには、OpenTelemetry agentの拡張として提供されるexporter-autoが必要となります。

自動計装

以下の検証環境で自動計装を実施します。

デプロイ先:GKE
コンテナ:Spring Boot Application

必要なJarのダウンロード

Dockerfileの作成

上記のJarをビルドするアプリケーションのルートに配置し、以下のDockerfileを作成。

FROM amazoncorretto:21-alpine-jdk

COPY opentelemetry-javaagent.jar opentelemetry-javaagent.jar
COPY build/libs/SampleApp-0.0.1-SNAPSHOT.jar /app/sampleapp.jar
COPY exporter-auto-0.31.0-alpha-shaded.jar exporter-auto.jar

WORKDIR /app

ENTRYPOINT ["java", \
            "-javaagent:/opentelemetry-javaagent.jar", \
            "-Dotel.javaagent.extensions=/exporter-auto.jar", \
            "-Dotel.service.name=sampleapp",\
            "-Dotel.metrics.exporter=google_cloud_monitoring", \
            "-Dotel.traces.exporter=google_cloud_trace", \
            "-jar", "/app/sampleapp.jar"]

ここでの設定値は以下の通り。(詳しくはhttps://opentelemetry.io/docs/languages/java/configuration/)

プロパティ 環境変数 説明
otel.traces.exporter N/A google_cloud_trace トレース用のexporter 
otel.metrics.exporter N/A google_cloud_monitoring メトリクスの用のexporter
GOOGLE_CLOUD_PROJECT GOOGLE_CLOUD_PROJECT 自動検知 metrics/traces againtのprojectId
GOOGLE_APPLICATION_CREDENTIALS GOOGLE_APPLICATION_CREDENTIALS 自動検知 Google Cloud APIのクレデンシャル

問題なくデプロイできたら、Console の Cloud Trace でトレース情報が確認できます。

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?