#chiroito ’s blog

Java を中心とした趣味の技術について

QuarkusでOpentracingを利用する

QuarkusはデフォルトではOpentracingを利用していませんが、拡張機能(extention)を追加して設定を少しするだけでOpentracingを利用できるようになります。

Opentracingの追加

Opentracingの拡張機能を利用するにはmvn quarkus:add-extension-Dextensions"opentracing"を指定して実行しましょう。

mvn quarkus:add-extension -Dextensions="opentracing"

以下の様なログが出れば成功です。

[INFO] Scanning for projects...
[INFO]
[INFO] -------------------< com.redhat.coolstore:inventory >-------------------
[INFO] Building inventory 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- quarkus-maven-plugin:0.21.2:add-extension (default-cli) @ inventory ---
? Adding extension io.quarkus:quarkus-smallrye-opentracing
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.248 s
[INFO] Finished at: 2019-12-26T05:56:40Z
[INFO] ------------------------------------------------------------------------

Opentracingの設定

Jaegerのエンドポイントなどを設定します。

全ての設定要素は以下で確認できます。

https://quarkus.io/guides/all-config#quarkus-jaeger_quarkus-jaeger

以下は設定例です。

quarkus.jaeger.service-name=inventory
quarkus.jaeger.sampler-type=const
quarkus.jaeger.sampler-param=1
quarkus.jaeger.endpoint=http://jaeger-collector.user1-monitoring:14268/api/traces

Quarkusのデバッグポートを変更する

Quarkusのデバッグポートはデフォルトでは5005ですが、これを変えるには起動時(mvn compile quarkus:dev)に-Ddebugを指定します。

ポート番号を1234に変更する方法は以下の通りです。

mvn compile quarkus:dev -Ddebug=1234

以下のログが出れば変更成功です。

Listening for transport dt_socket at address: 1234

Quarkusで実装したAPIをSwagger-uiで見る

QuarkusでSwagger UIを見るには拡張機能としてSmallRye OpenAPIを追加します。

Swagger UIへのアクセスはホスト名にswagger-uiを追加するとアクセスできるようになります。

拡張機能を追加する方法は以下の3つあります。

今回は既存のQuarkusプロジェクトに追加する方法を紹介します。既存のQuarkusプロジェクトに新たな拡張機能を追加するにはquarkus:add-extensionを使い、-Dextensionsで追加したい拡張機能を指定します。 今回拡張したい追加機能はio.quarkus:quarkus-smallrye-openapiなので、以下のようになります。

mvn quarkus:add-extension -Dextensions="io.quarkus:quarkus-smallrye-openapi"

実行例は以下の通りです。

> mvnw quarkus:add-extension -Dextensions="io.quarkus:quarkus-smallrye-openapi"
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------< chiroito.quarkus:spring-sample >-------------------
[INFO] Building spring-sample 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- quarkus-maven-plugin:1.0.1.Final:add-extension (default-cli) @ spring-sample ---
? Adding dependency io.quarkus:quarkus-smallrye-openapi:jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.425 s
[INFO] Finished at: 2019-12-04T12:08:08+09:00
[INFO] ------------------------------------------------------------------------

これでSwagger UIのページにアクセスできるようになったと思います。

URL例:http://localhost:8080/swagger-ui