OpenTelemetry によるトレースと追加メトリクス
開発およびパフォーマンス実行中に OpenTelemetry を使用してトレースと追加メトリクスを収集します。
OpenTelemetry について
OpenTelemetry は、効果的なオブザーバビリティを可能にするために、高品質でユビキタスかつポータブルなテレメトリを提供します。
このプロジェクトでは、Keycloak からトレースを収集するためにこれを使用します。
-
トレースにより、Keycloak の洞察が可能になり、リクエストを内部およびデータベース呼び出しのツリーに分解できます。
これは、Keycloak 26 以降で利用可能な組み込みの OpenTelemetry 機能を使用しています。
ツールの詳細については、OpenTelemetry ウェブサイト を参照し、この情報にアクセスして使用する方法については、以下のセクションを参照してください。
OpenTelemetry のセットアップ
OpenTelemetry はデフォルトで無効になっています。設定 KC_OTEL
をカスタマイズして有効にする必要があります。
設定 KC_OTEL_SAMPLING_PERCENTAGE
によっては、パフォーマンス上の理由から、トレースの一部のみが記録される場合があります。
他のセットアップとは異なり、これは OpenTelemetry コレクターを使用していませんが、代わりにトレースを直接 Jaeger に送信します。 |
OpenTelemetry トレースへのアクセス
Grafana と Jaeger を使用してトレースにアクセスでき、どちらもデフォルトでデプロイされます。
コマンド minikube ip
が 192.168.39.39
を返したと仮定すると、Grafana は http://grafana.192.168.39.39.nip.io で、Jaeger は http://jaeger.192.168.39.39.nip.io で利用できます。
ブラウザを使用して、Jaeger データソース経由で Grafana でトレースを検索するか、Jaeger UI を直接使用します。
Grafana でトレースを検索する場合は、トレースを表示するために少なくともサービス keycloak
を選択します。結果は、操作とトレースのタグを使用してさらに制限できます。

Jaeger UI も同様です。Grafana UI と同様に、検索する前に Keycloak サービスを選択します。
ツールの詳細については、Jaeger ホームページ を参照してください。
Jaeger UI で検索を実行した後、検索タイムスタンプは固定され、URL にエンコードされます。したがって、検索を再実行したり、別のフィルターオプションを設定したりしても、最初の検索の実行後に作成されたトレースは見つかりません。最新のタイムスタンプで検索を開始するには、メニューツールバーの Search をクリックしてください。 |

ログ内のトレース ID
Java エージェントがアクティブになると、MDC (mapped diagnostic context) 内のすべてのログ行にトレース ID が作成されます。
... "mdc":{"sampled":"true", "trace_id":"72b9fd1ac7229d417655a9c5e240e23b", "span_id":"6612116ac4f97aaa"} …
Loki の Grafana でログを検索すると、接続されたトレースへのリンクがあり、右側に表示されます。
これは、trace_flag
が 01
でログに記録された記録済みトレースでのみ機能することに注意してください。
