第8章 エグゼンプラーを使用して外れ値とエラーを例を分析する
エグゼンプラーを使用して、記録されたトレースにメトリクスを接続し、エラーまたはレイテンシーの根本原因を分析します。
メトリクスは複数のイベントを集計したもので、システムが定義された範囲内で動作しているかどうかを示します。メトリクスは、エラー率やテールレイテンシーの監視、アラートの設定、パフォーマンス最適化の推進に使用できます。しかし、集約されることで、メトリクスで報告されるレイテンシーやエラーの根本原因を見つけることが難しくなります。
トレーシングを有効にすると、エラーやレイテンシーの根本原因を見つけることができます。記録されたトレースにメトリクスを接続する場合、エグゼンプラー という概念を使用します。
エグゼンプラーが設定されると、Red Hat build of Keycloak は最後に記録されたトレースをエグゼンプラーとしてメトリクスを報告します。Grafana のようなダッシュボードツールは、メトリクスダッシュボードからトレースビューにエグゼンプラーをリンクできます。
次のメトリクスは、エグゼンプラーをサポートしています。
-
http_server_requests_seconds_count
(ヒストグラムを含む)
このメトリクスの詳細は、HTTP メトリクス の章を参照してください。 -
keycloak_credentials_password_hashing_validations_total
このメトリクスの詳細は、自己提供メトリクス の章を参照してください。 -
keycloak_user_events_total
このメトリクスの詳細は、自己提供メトリクス の章を参照してください。
以下に、レイテンシーを可視化したヒートマップのスクリーンショットを示します。ピンク色のインジケーターのいずれかにマウスを移動すると、エグゼンプラーが表示されます。
図8.1 ヒートマップ図とエグゼンプラー
8.1. エグゼンプラーを設定する リンクのコピーリンクがクリップボードにコピーされました!
エグゼンプラーを活用するには、次のステップを実行します。
- メトリクスから洞察を得る の章の説明に従って、Red Hat build of Keycloak のメトリクスを有効にします。
- トレーシングによる根本原因分析 の章の説明に従って、Red Hat build of Keycloak のトレーシングを有効にします。
監視システムでエグゼンプラーストレージを有効にします。
Prometheus の場合、これは 有効化が必須のプレビュー機能 です。
Prometheus ではデフォルトで有効になっていない
OpenMetricsText1.0.0
プロトコルを使用して、メトリクスをスクレイピングします。Kubernetes 環境で
PodMonitor
などを使用している場合は、カスタムリソースの仕様にこれを追加することで実現できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow トレースのリンク先となるメトリクスデータソースを設定します。
Grafana と Prometheus を使用する場合、これは Prometheus データソースの
exemplarTraceIdDestinations
を設定することを意味し、これは Jaeger や Tempo などのツールが提供するトレーシングデータソースを指します。ダッシュボードでエグゼンプラーを有効にします。
エグゼンプラーを表示する各ダッシュボードの各クエリーで、Exemplars の切り替えを有効にします。正しく設定するとダッシュボードに小さな点や星マークが表示され、これをクリックするとトレースが表示されます。
- スクレイププロトコルを指定しない場合、Prometheus はデフォルトでコンテンツネゴシエーションでそれを送信せず、Keycloak はエグゼンプラーが含まれない PrometheusText プロトコルにフォールバックします。
- トレーシングとメトリクスを有効にしたが、リクエストサンプリングでトレースが記録されなかった場合、公開されたメトリクスにエグゼンプラーは含まれません。
- ブラウザーでメトリクスエンドポイントにアクセスすると、コンテンツネゴシエーションによって PrometheusText 形式が返され、エグゼンプラーは表示されません。