监控 SAI 索引
虚拟表和基于 JMX 的指标都可以用于监控集群中的 SAI 索引。
SAI 虚拟表
您可以参考以下 Apache Cassandra 虚拟表中的数据来确定使用 SAI 创建的索引的状态
-
system_views.indexes
— 提供列索引级别的信息,包括索引名称、已索引 SSTable 的数量、磁盘使用情况和索引状态。从索引状态,数据揭示了索引当前是否正在构建,以及索引是否可以查询。当您
DROP
/重新创建 SAI 索引时,您不会被阻止输入不使用该索引的查询。但是,您无法使用该 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。
例如,如果只有一个列索引正在构建,SAI 可以缓冲高达segment_write_buffer_space_mb
。如果每个表有一个列索引正在构建,跨 8 个压缩器,每个索引将有资格在达到 (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
— 总体查询延迟百分位数(以微秒为单位)和一/五/十五分钟查询吞吐量。 -
PartitionReads
— 每个查询读取的分区数量的直方图。 -
SSTableIndexesHit
— 每个查询读取的 SSTable 索引数量的直方图。 -
KDTreeChunkCacheLookups
— 每个查询读取 kd 树索引文件时块缓存查找次数的直方图。 -
KDTreeChunkCacheMisses
— 每个查询读取 kd 树索引文件时块缓存未命中次数的直方图。
表查询指标
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
— 每个表中当前处于is_building
状态的 SAI 索引的状态。 -
TotalIndexCount
— 每个表的 SAI 索引总数。 -
TotalQueryableIndexCount
— 每个表中当前处于is_querable
状态的 SAI 索引的状态。
令牌获取指标
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 树交集期间等待块缓存未命中的时间(以微秒为单位)的直方图,以及一/五/十五分钟块缓存未命中吞吐量。如果 kd 树交集期间没有缓存未命中,则吞吐量为零。
每个字符串索引的列查询指标
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,index=<index>,scope=ColumnQueryMetrics,name=<metric>
给定键空间、表和索引的列查询指标包括
-
TermsLookupLatency
— 对于字符串索引,例如 快速入门 示例中的country_sai_idx
,此指标显示每个一/五/十五分钟查询吞吐量的术语查找延迟百分位数(以微秒为单位)。
每个字符串索引的术语指标
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> 分钟块缓存命中率。