シングルサイトデプロイメントのための組み込み 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を使用して、キャッシュの最大サイズを増やすことを検討してください。

ロッキング

書き込みおよび削除操作は、値がローカルクラスタおよびリモートサイトにレプリケートされるまでロックを保持します。

健全なクラスタでは、保持されているロックの数は一定のままであるはずですが、デッドロックにより一時的なスパイクが発生する可能性があります。
メトリクス 説明

vendor_lock_manager_number_of_locks_held

このノードによって現在保持されているロックの数。

トランザクション

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

PESSMISTICロッキングモードは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

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

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

状態転送

状態転送は、ノードがクラスタに参加または離脱するときに発生します。これは、格納されているデータのバランスを取り、目的のコピー数を保証するために必要です。

この操作はリソース使用量を増加させ、全体的なパフォーマンスに悪影響を与えます。

メトリクス 説明

vendor_state_transfer_manager_inflight_transactional_segment_count

ローカルノードが他のノードからリクエストした、インフライトトランザクションセグメントの数。

vendor_state_transfer_manager_inflight_segment_transfer_count

ローカルノードが他のノードからリクエストした、インフライトセグメントの数。

クラスタデータレプリケーション

クラスタデータレプリケーションは、主な障害の原因となる可能性があります。これらのメトリクスは、応答時間(つまり、更新をレプリケートするのにかかる時間)だけでなく、障害も報告します。

健全なクラスタでは、平均レプリケーション時間は安定しているか、わずかな変動がある程度です。障害の数は増加しないはずです。
メトリクス 説明

vendor_rpc_manager_replication_count

成功したレプリケーションの合計数。

vendor_rpc_manager_replication_failures

失敗したレプリケーションの合計数。

vendor_rpc_manager_average_replication_time

クラスタ内のデータをレプリケートするのに費やされた平均時間(ミリ秒単位)。

成功率

レプリケーションの成功率を計算するために式を使用できます

(vendor_rpc_manager_replication_count)
/
(vendor_rpc_manager_replication_count
 + vendor_rpc_manager_replication_failures)
このページについて