The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.
このページを編集

OpenTelemetry Loggingの使用

このガイドでは、Quarkusアプリケーションで OpenTelemetry (OTel) を利用して、インタラクティブなWebアプリケーションに分散ロギングを提供する方法について説明します。

この技術は、previewと考えられています。

preview では、下位互換性やエコシステムでの存在は保証されていません。具体的な改善には設定や API の変更が必要になるかもしれませんが、 stable になるための計画は現在進行中です。フィードバックは メーリングリストGitHub の課題管理 で受け付けています。

とりうるステータスの完全なリストについては、 FAQの項目 を参照してください。

このドキュメントは、このコンポーネントとその他のオブザーバビリティ関連コンポーネントを特集した Quarkus のオブザーバビリティリファレンス ガイド の一部です。

  • OpenTelemetry Logging は tech preview とみなされ、デフォルトでは無効になっています。

  • OpenTelemetry ガイド には、信号に依存しない、OpenTelemetry エクステンションに関する情報が記載されています。

前提条件

このガイドを完成させるには、以下が必要です:

  • 約15分

  • IDE

  • JDK 17+がインストールされ、 JAVA_HOME が適切に設定されていること

  • Apache Maven 3.9.9

  • Docker と Docker Compose、または Podman 、および Docker Compose

  • 使用したい場合は、 Quarkus CLI

  • ネイティブ実行可能ファイルをビルドしたい場合、MandrelまたはGraalVM(あるいはネイティブなコンテナビルドを使用する場合はDocker)をインストールし、 適切に設定していること

アーキテクチャ

このガイドでは、他のOpenTelemetryガイドと同様に、分散ロギングを実証するための簡単なRESTアプリケーションを作成します。

ソリューション

次の章で紹介する手順に沿って、ステップを踏んでアプリを作成することをお勧めします。ただし、すぐに完成した例に飛んでも構いません。

Git リポジトリーのクローンを作成: git clonehttps://github.com/quarkusio/quarkus-quickstarts.git、または アーカイブ をダウンロードします。

ソリューションは opentelemetry-quickstart ディレクトリ にあります。

Mavenプロジェクトの作成

まず、新しいプロジェクトが必要です。以下のコマンドで新規プロジェクトを作成します。

コマンドラインインタフェース
quarkus create app org.acme:opentelemetry-quickstart \
    --extension='rest,quarkus-opentelemetry' \
    --no-code
cd opentelemetry-quickstart

Gradleプロジェクトを作成するには、 --gradle または --gradle-kotlin-dsl オプションを追加します。

Quarkus CLIのインストールと使用方法の詳細については、 Quarkus CLI ガイドを参照してください。

Maven
mvn io.quarkus.platform:quarkus-maven-plugin:3.21.0:create \
    -DprojectGroupId=org.acme \
    -DprojectArtifactId=opentelemetry-quickstart \
    -Dextensions='rest,quarkus-opentelemetry' \
    -DnoCode
cd opentelemetry-quickstart

Gradleプロジェクトを作成するには、 -DbuildTool=gradle または -DbuildTool=gradle-kotlin-dsl オプションを追加します。

Windowsユーザーの場合:

  • cmdを使用する場合、(バックスラッシュ \ を使用せず、すべてを同じ行に書かないでください)。

  • Powershellを使用する場合は、 -D パラメータを二重引用符で囲んでください。例: "-DprojectArtifactId=opentelemetry-quickstart"

このコマンドはMavenプロジェクトを生成し、 quarkus-opentelemetry エクステンションをインポートします。このエクステンションには、デフォルトのOpenTelemetryサポートと、 OTLPのgRPC spanエクスポーターが含まれています。

Quarkusプロジェクトがすでに設定されている場合、プロジェクトのベースディレクトリで次のコマンドを実行することで、 quarkus-opentelemetry エクステンションをプロジェクトに追加できます:

コマンドラインインタフェース
quarkus extension add opentelemetry
Maven
./mvnw quarkus:add-extension -Dextensions='opentelemetry'
Gradle
./gradlew addExtension --extensions='opentelemetry'

これにより、以下がビルドファイルに追加されます。

pom.xml
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-opentelemetry</artifactId>
</dependency>
build.gradle
implementation("io.quarkus:quarkus-opentelemetry")

Jakarta REST リソースの調査

src/main/java/org/acme/opentelemetry/TracedResource.java のファイルを開くと、以下の内容が表示されます。

package org.acme.opentelemetry;

import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
import org.jboss.logging.Logger;

@Path("/hello")
public class TracedResource {

    private static final Logger LOG = Logger.getLogger(TracedResource.class);

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello() {
        LOG.info("hello");
        return "hello";
    }
}

トレースガイドに従ったことがあれば、このクラスは見慣れたものでしょう。主な違いは、 org.jboss.logging.Logger で記録された hello メッセージが OpenTelemetry のログに残るようになったことです。

コンフィグレーションの作成

OpenTelemetry Loggingで必須の設定は、ロギングを有効にすることだけです:

quarkus.otel.logs.enabled=true

デフォルトのプロパティ値を変更するために、 src/main/resources/application.properties ファイルを使用して、アプリケーション内でデフォルトの OTLP gRPC Exporter を設定する方法の例を以下に示します:

quarkus.application.name=myservice (1)
quarkus.otel.logs.enabled=true (2)
quarkus.otel.exporter.otlp.logs.endpoint=http://localhost:4317 (3)
quarkus.otel.exporter.otlp.logs.headers=authorization=Bearer my_secret (4)
1 アプリケーションから作成されたすべてのログには、ログが myservice アプリケーションによって作成されたことを示す OpenTelemetry Resource が含まれます。設定されていない場合、デフォルトでアーティファクト ID が設定されます。
2 OpenTelemetry Loggingを有効にします。ビルド時に設定する必要があります。
3 ログを送信する gRPC エンドポイント。設定されていない場合は、 http://localhost:4317 がデフォルトです。
4 認証によく使われるオプションの gRPC ヘッダー

すべての信号に対して同じプロパティーを使用して接続を設定するには、ベースの OpenTelemetry ガイドの設定セクション を確認してください。

アプリケーションの実行

まず、OpenTelemetry データを視覚化するシステムを起動する必要があります。 2 つの選択肢があります。

  • トレース、メトリクス、ログのためのオールインワンのGrafana OTel LGTMシステムを開始します。

Grafana-OTel-LGTM Dev サービスのデータを参照してください。

Grafana OTel LGTM オプション

Quarkus Dev serviceには、データを可視化するGrafana、ログを保存するLoki、トレースを保存するTempo、メトリクスを保存するPrometheusが含まれます。また、データを受け取るためのOTelコレクターも提供します。

Logging エクスポーター

application.properties ファイルで exporter を logging に設定すれば、すべてのログをコンソールに出力できます:

quarkus.otel.logs.exporter=logging (1)
1 エクスポーターを logging に設定します。 通常、これを設定する必要はありません。 デフォルトは cdi です。

次の依存関係もプロジェクトに追加します。

<dependency>
    <groupId>io.opentelemetry</groupId>
    <artifactId>opentelemetry-exporter-logging</artifactId>
</dependency>

OpenTelemetry 設定リファレンス

メインの OpenTelemetry ガイド設定 リファレンスを参照してください。

関連コンテンツ