マルチサイト構成における埋め込み Infinispan メトリクス

メトリクスによるキャッシュの健全性監視について

これは「メトリクスを使用したトラブルシューティング」ガイドの一部です。

前提条件

  • メトリクスはKeycloakで有効にする必要があります。詳細については、「メトリクスによる洞察の獲得」ガイドを参照してください。

  • メトリクスを収集する監視システム。

メトリクス

グローバルタグ

cache=<name>

キャッシュ名。

サイズ

これらの2つのメトリクスを使用して、キャッシュ内のエントリ数を監視します。キャッシュがクラスタ化されている場合、各エントリにはオーナーノードと、異なるノードのバックアップコピーがゼロ個以上存在します。

クラスタの合計エントリ数を取得するには、ユニークエントリサイズのメトリクスを合計します。
メトリクス 説明

vendor_statistics_approximate_entries

ノードによって保存されているエントリの概算数(バックアップコピーを含む)。

vendor_statistics_approximate_entries_unique

ノードによって保存されているエントリの概算数(バックアップコピーを除く)。

データアクセス

次のメトリクスは、読み取り、書き込み、およびそれらの期間など、キャッシュアクセスを監視します。

ストア

ストア操作は、キャッシュに保存されている値を書き込みまたは更新する書き込み操作です。

メトリクス 説明

vendor_statistics_store_times_seconds_count

ストアリクエストの合計数。

vendor_statistics_store_times_seconds_sum

すべてのストアリクエストの合計時間。

ヒストグラムが有効になっている場合、パーセンタイルバケットが利用可能です。これらはヒートマップを作成するのに役立ちますが、パーセンタイルバケットの収集と公開は、デプロイメントのパフォーマンスに悪影響を与える可能性があります。

読み取り

読み取り操作は、キャッシュから値を読み取ります。値が見つかった場合はヒット、見つからなかった場合はミスという2つのグループに分けられます。

メトリクス 説明

vendor_statistics_hit_times_seconds_count

読み取りヒットリクエストの合計数。

vendor_statistics_hit_times_seconds_sum

すべての読み取りヒットリクエストの合計時間。

vendor_statistics_miss_times_seconds_count

読み取りミスリクエストの合計数。

vendor_statistics_miss_times_seconds_sum

すべての読み取りミスリクエストの合計時間。

ヒストグラムが有効になっている場合、パーセンタイルバケットが利用可能です。これらはヒートマップを作成するのに役立ちますが、パーセンタイルバケットの収集と公開は、デプロイメントのパフォーマンスに悪影響を与える可能性があります。

削除

削除操作は、キャッシュから値を削除します。値が存在する場合はヒット、値が存在しない場合はミスという2つのグループに分けられます。

メトリクス 説明

vendor_statistics_remove_hit_times_seconds_count

削除ヒットリクエストの合計数。

vendor_statistics_remove_hit_times_seconds_sum

すべての削除ヒットリクエストの合計時間。

vendor_statistics_remove_miss_times_seconds_count

削除ミスリクエストの合計数。

vendor_statistics_remove_miss_times_seconds_sum

すべての削除ミスリクエストの合計時間。

ヒストグラムが有効になっている場合、パーセンタイルバケットが利用可能です。これらはヒートマップを作成するのに役立ちますが、パーセンタイルバケットの収集と公開は、デプロイメントのパフォーマンスに悪影響を与える可能性があります。

users および realms キャッシュの場合、データベースの無効化は削除操作に変換されます。これらのメトリクスは、データベースエンティティがどのくらいの頻度で変更され、キャッシュから削除されるかの良い指標となります。

読み取りおよび削除操作のヒット率

Prometheusなどのシステムでキャッシュのヒット率を計算するために式を使用できます。例として、読み取り操作のヒット率は次のように表現できます。

vendor_statistics_hit_times_seconds_count
/
(vendor_statistics_hit_times_seconds_count
 + vendor_statistics_miss_times_seconds_count)

読み取り/書き込み比率

上記のメトリクスを使用して、キャッシュの読み取り/書き込み比率を計算するために式を使用できます。

(vendor_statistics_hit_times_seconds_count
 + vendor_statistics_miss_times_seconds_count)
/
(vendor_statistics_hit_times_seconds_count
 + vendor_statistics_miss_times_seconds_count
 + vendor_statistics_remove_hit_times_seconds_count
 + vendor_statistics_remove_miss_times_seconds_count
 + vendor_statistics_store_times_seconds_count)

エビクション

エビクションはキャッシュサイズを制限するプロセスであり、満杯になると、新しいエントリをキャッシュするための空きを作るためにエントリが削除されます。Keycloakは usersrealms、および authorization のデータベースエンティティをキャッシュするため、データベースアクセスは常にエビクションイベントを伴います。

メトリクス 説明

vendor_statistics_evictions

エビクションイベントの合計数。

エビクション率

エビクションの急激な増加と非常に高いデータベースCPU使用率は、users または realms キャッシュがKeycloakの円滑な動作には小さすぎることを意味します。データはデータベースから頻繁に再ロードする必要があり、応答が遅くなります。十分なメモリが利用可能な場合は、CLIオプション cache-embedded-users-max-count または cache-embedded-realms-max-count を使用して、キャッシュの最大サイズを増やすことを検討してください。

トランザクション

トランザクショナルキャッシュは、トランザクションを完了するために、One-Phase-CommitプロトコルとTwo-Phase-Commitプロトコルの両方を使用します。これらのメトリクスは、操作時間を追跡します。

PESSIMISTIC ロックモードはOne-Phase-Commitを使用し、コミットリクエストを作成しません。
健全なクラスタでは、ロールバックの数はゼロのままになるはずです。デッドロックはまれであるはずですが、ロールバックの数を増やします。
メトリクス 説明

vendor_transactions_prepare_times_seconds_count

プリペアリクエストの合計数。

vendor_transactions_prepare_times_seconds_sum

すべてのプリペアリクエストの合計時間。

vendor_transactions_rollback_times_seconds_count

ロールバックリクエストの合計数。

vendor_transactions_rollback_times_seconds_sum

すべてのロールバックリクエストの合計時間。

vendor_transactions_commit_times_seconds_count

コミットリクエストの合計数。

vendor_transactions_commit_times_seconds_sum

すべてのコミットリクエストの合計時間。

ヒストグラムが有効になっている場合、パーセンタイルバケットが利用可能です。これらはヒートマップを作成するのに役立ちますが、パーセンタイルバケットの収集と公開は、デプロイメントのパフォーマンスに悪影響を与える可能性があります。

次のステップ

このページについて