Cassandra 文档

版本

您正在查看预发布版本的文档。

监控 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 快速入门中定义。此指标的ObjectNameorg.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 索引段。

在任何给定时间,刷新段的最小大小(以字节为单位)为 (SegmentBufferSpaceLimitBytes / ColumnIndexBuildsInProgress)。

索引组指标

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> 分钟块缓存命中率。

范围切片指标

ObjectName: org.apache.cassandra.metrics:type=ClientRequest,scope=RangeSlice,name=<metric>

RoundTripsPerReadHistogram 指标跟踪协调器发送的范围查询命令的往返请求数量。较少的请求通常意味着服务器比需要更多请求才能满足相同范围查询的服务器运行效率更高。

延迟指标跟踪范围读取请求延迟的最小值、最大值、平均值以及一组百分位数。超时指标跟踪范围读取请求的超时次数。