SAIインデックスの監視
仮想テーブルとJMXベースのメトリクスの両方を使用して、クラスタ内のSAIインデックスを監視できます。
SAI仮想テーブル
次のApache Cassandra仮想テーブルのデータを参照して、SAIで作成されたインデックスのステータスを確認できます。
-
system_views.indexes
— インデックス名、インデックス付きSSTableの数、ディスク使用量、インデックスの状態など、列インデックスレベルでの情報を提供します。インデックスの状態から、インデックスが現在構築中であるかどうか、およびインデックスを照会できるかどうかに関するデータがわかります。SAIインデックスを
DROP
/再作成する場合、インデックスを使用しないクエリの入力はブロックされません。ただし、(同じ列に基づく)そのSAIインデックスは、構築が完了してクエリ可能になるまで使用できません。特定のインデックスの現在の状態を判断するには、system_views.indexes
仮想テーブルを照会します。例SELECT is_queryable,is_building FROM system_views.indexes WHERE keyspace_name='keyspace' AND table_name='table' AND index_name='index';
-
system_views.sstable_indexes
— 個々のSSTableインデックスについて説明し、ディスクサイズ、最小/最大行ID、最小/最大リングトークン、およびインデックスの書き込み時間バージョンに関する情報が含まれています。 -
system_views.sstable_index_segments
— SSTableインデックスのセグメントについて説明します。セグメント行IDオフセットと、特にセグメントの粒度で、SSTableレベルの仮想テーブルのほとんどの情報が公開されます。詳細については、SAIインデックスおよびSSTableの仮想テーブルを参照してください。
SAIトレース
SAIは、他のデータベースコンポーネントと同様にトレース機能を提供します。情報はsystem_traces
キースペースによってキャプチャされます。CQLSHでTRACING ON
を使用して、またはCassandraドライバでstatement.enableTracing()
を使用してトレースを有効にできます。
特定のクエリによってフィルタリングされた行数は、CQLクエリトレースに表示されます。例
Index query accessed memtable indexes, 2 SSTable indexes, and 2 segments, post-filtered 14 rows in 14 partitions, and took 88582 microseconds.
トレースの詳細については、CQL TRACINGを参照してください。
SAIメトリクス
SAIは、インデックスの健全性を監視するのに役立つ多くのメトリクスを提供します。
分類されたデータ
-
グローバルインデックスメトリクス
-
テーブルクエリメトリクス
-
クエリごとのメトリクス
-
キーフェッチメトリクス
-
オフセットフェッチメトリクス
-
トークンフェッチメトリクス
-
インデックスごとの列クエリメトリクス
-
インデックスごとのタームメトリクス
-
範囲スライスメトリクス
たとえば、メトリクスを使用して、cycling.cyclist_semi_pro
のノード起動以降のパーティション読み取りの合計の現在のカウントを取得できます。キースペースとテーブルは、SAIクイックスタートで定義されています。このメトリクスのObjectName
:org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=cycling,table=cyclist_semi_pro,scope=TableQueryMetrics,name=TotalPartitionReads
。
メトリクスはJMX経由で公開されるため、JMXベースの任意のツールを使用して監視できます。
グローバルインデックスメトリクス
ObjectName: org.apache.cassandra.metrics,type=StorageAttachedIndex,name=<metric>
このノードのグローバルインデックスメトリクスは次のとおりです
-
ColumnIndexBuildsInProgress
— 現在構築中の個々のオンディスク列インデックスの数。 -
SegmentBufferSpaceLimitBytes
— コンパクションおよびインデックス構築中にSSTableインデックスセグメントをバッファリングするために使用されるヒープの制限。cassandra.yamlでは、
segment_write_buffer_space_mb
は、コンパクションおよび最初のビルド中にオンディスク列インデックスを構築するために使用されるヒープの量を制限します。デフォルトは1024 MBです。
たとえば、構築中の列インデックスが1つしかない場合、SAIは最大segment_write_buffer_space_mb
までバッファリングできます。8つのコンパクタ全体でテーブルごとに1つの列インデックスを構築している場合、各インデックスは(segment_write_buffer_space_mb / 8
)MBに達するとフラッシュの対象になります。
-
SegmentBufferSpaceUsedBytes
— コンパクションおよびインデックス構築中にSSTableインデックスセグメントをバッファリングするために現在使用されているヒープ。
任意の時点で、フラッシュするセグメントの最小サイズ(バイト単位)は( |
インデックスグループメトリクス
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,scope=IndexGroupMetrics,name=<metric>
指定されたキースペースとテーブルのインデックスグループメトリクス
-
DiskUsedBytes
— 指定されたテーブルのSAIインデックスのディスク上のサイズ(バイト単位)。 -
IndexFileCacheBytes
— 列ごとのインデックスのオンディスクデータ構造で使用されるメモリのサイズ(バイト単位)。 -
OpenIndexFiles
— 指定されたテーブルのSAIインデックスのオープンなインデックスファイルの数。
キーフェッチメトリクス
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,scope=KeyFetch,name=<metric>
指定されたキースペースとテーブルのキーフェッチメトリクス
-
ChunkCacheHitRate
— 指定されたテーブルに対するクエリ中のキーのすべての時間のチャンクキャッシュヒット率。 -
TotalChunkCacheLookups
— 指定されたテーブルに対するクエリ中のキーのすべての時間のチャンクキャッシュルックアップ。 -
TotalChunkCacheMisses
— 指定されたテーブルに対するクエリ中のキーのすべての時間のチャンクキャッシュミス。 -
ChunkCache(One|Five|Fifteen)HitRate
— 指定されたテーブルに対するクエリ中のキーの<N>分間のチャンクキャッシュヒット率。
オフセットフェッチメトリクス
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,scope=OffsetFetch,name=<metric>
指定されたキースペースとテーブルのオフセットフェッチメトリクス
-
ChunkCacheHitRate
— 指定されたテーブルに対するクエリ中のパーティションキーSSTableオフセットフェッチのすべての時間のチャンクキャッシュヒット率。 -
TotalChunkCacheLookups
— 指定されたテーブルに対するクエリ中のパーティションキーSSTableオフセットフェッチのすべての時間のチャンクキャッシュルックアップ。 -
TotalChunkCacheMisses
— 指定されたテーブルに対するクエリ中のパーティションキーSSTableオフセットフェッチのすべての時間のチャンクキャッシュミス。 -
ChunkCache(One|Five|Fifteen)HitRate
— 指定されたテーブルに対するクエリ中のパーティションキーSSTableオフセットフェッチの<N>分間のチャンクキャッシュヒット率。
クエリごとのメトリクス
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,scope=PerQuery,name=<metric>
指定されたキースペースとテーブルのクエリごとのメトリクスには以下が含まれます。
-
RowsFiltered
— ノードが起動してからのクエリごとにフィルター処理された行数のヒストグラム。 -
QueryLatency
— 全体的なクエリレイテンシのパーセンタイル(マイクロ秒単位)および1/5/15分のクエリのスループット。 -
PartitionReads
— クエリごとに読み取られたパーティション数のヒストグラム。 -
SSTableIndexesHit
— クエリごとに読み取られたSSTableインデックス数のヒストグラム。 -
KDTreeChunkCacheLookups
— クエリごとにkd-treeインデックスファイルを読み取る際のチャンクキャッシュルックアップ数のヒストグラム。 -
KDTreeChunkCacheMisses
— クエリごとにkd-treeインデックスファイルを読み取る際のチャンクキャッシュミス数のヒストグラム。
テーブルクエリメトリクス
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,scope=TableQueryMetrics,name=<metric>
指定されたキースペースとテーブルのテーブルクエリメトリクス
-
TotalPartitionReads
— ノードが起動してからのすべてのクエリによるパーティション読み取りの合計。 -
TotalQueriesCompleted
— ノードが起動してからの正常に完了したクエリの総数。 -
TotalQueryTimeouts
— ノードが起動してからのクエリからのタイムアウトの合計数。 -
TotalRowsFiltered
— ノードが起動してからのすべてのクエリによってフィルター処理された行の合計数。
テーブル状態メトリクス
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,scope=TableStateMetrics,name=<metric>
指定されたキースペースとテーブルのテーブル状態メトリクス
-
DiskPercentageOfBaseTable
— テーブルごとのテーブルサイズの割合としてのディスク上のSAIサイズ。 -
DiskUsedBytes
— テーブルごとの SAI インデックスのディスク上のサイズ(バイト単位)。 -
TotalIndexBuildsInProgress
— テーブルごとの SAI インデックスで、現在is_building
状態にあるものの数。 -
TotalIndexCount
— テーブルごとの SAI インデックスの総数。 -
TotalQueryableIndexCount
— テーブルごとの SAI インデックスで、現在is_querable
状態にあるものの数。
トークンフェッチメトリクス
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,scope=TokenFetch,name=<metric>
指定されたキースペースとテーブルのトークンフェッチメトリクス
-
ChunkCacheHitRate
— 指定されたテーブルに対するクエリ中のパーティションキートークンフェッチに関する、すべての時間でのチャンクキャッシュヒット率。 -
TotalChunkCacheLookups
— 指定されたテーブルに対するクエリ中のパーティションキートークンフェッチに関する、すべての時間でのチャンクキャッシュルックアップ数。 -
TotalChunkCacheMisses
— 指定されたテーブルに対するクエリ中のパーティションキートークンフェッチに関する、すべての時間でのチャンクキャッシュミス数。 -
ChunkCache(One|Five|Fifteen)HitRate
— 指定されたテーブルに対するクエリ中のパーティションキートークンフェッチに関する、<N>分間のチャンクキャッシュヒット率。
トークンスキップメトリクス
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,scope=TokenSkipping,name=<metric>
指定されたキースペースとテーブルのトークンスキップメトリクス
-
CacheHits
— マルチインデックスのAND
クエリにおけるトークンスキップによるキャッシュヒット数。 -
Lookups
— マルチインデックスのAND
クエリにおけるトークンスキップによるルックアップ数。
数値インデックスごとのカラムクエリメトリクス
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,index=<index>,scope=ColumnQueryMetrics,name=<metric>
指定されたキースペース、テーブル、インデックスに対するカラムクエリメトリクスには以下が含まれます。
-
KDTreeNiceTryLatency
— 数値インデックス(クイックスタートの例におけるage_sai_idx
など)の場合、このメトリクスは、kd-tree 交差中のチャンクキャッシュミス待ち時間(マイクロ秒単位)と、1/5/15 分間のチャンクミススループットのヒストグラムを表示するために使用できます。kd-tree 交差中にキャッシュミスがない場合、スループットはゼロになります。
文字列インデックスごとのカラムクエリメトリクス
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,index=<index>,scope=ColumnQueryMetrics,name=<metric>
指定されたキースペース、テーブル、インデックスに対するカラムクエリメトリクスには以下が含まれます。
-
TermsLookupLatency
— 文字列インデックス(クイックスタートの例におけるcountry_sai_idx
など)の場合、このメトリクスは、1/5/15 分間のクエスループットごとの用語ルックアップレイテンシのパーセンタイル(マイクロ秒単位)を示します。
文字列インデックスごとの用語メトリクス
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,index=<index>,scope=Terms,name=<metric>
文字列インデックスの場合、指定されたキースペース、テーブル、インデックスの用語メトリクス
-
ChunkCacheHitRate
— 指定されたインデックスを使用した文字列インデッククエリ中の用語に関する、すべての時間でのチャンクキャッシュヒット率。 -
TotalChunkCacheLookups
— 指定されたインデックスを使用した文字列インデッククエリ中の用語に関する、すべての時間でのチャンクキャッシュルックアップ数。 -
TotalChunkCacheMisses
— 指定されたインデックスを使用した文字列インデッククエリ中の用語に関する、すべての時間でのチャンクキャッシュミス数。 -
ChunkCache(One|Five|Fifteen)HitRate
— 指定されたインデックスを使用した文字列インデッククエリ中の用語に関する、<N>分間のチャンクキャッシュヒット率。
レンジスライスメトリクス
ObjectName: org.apache.cassandra.metrics:type=ClientRequest,scope=RangeSlice,name=<metric>
RoundTripsPerReadHistogram
メトリクスは、コーディネーターからレンジクエリコマンドに送信されたラウンドトリップリクエストの数を追跡します。通常、リクエスト数が少ないほど、サーバーは、同じレンジクエリを満たすために多くのリクエストを必要とする場合よりも効率的に動作していることを意味します。
レイテンシメトリクスは、レンジ読み取りリクエストのレイテンシの最小値、最大値、平均値、およびパーセンタイルセットを追跡します。タイムアウトメトリクスは、レンジ読み取りリクエストのタイムアウト数を追跡します。