监控
Cassandra中的度量标准使用Dropwizard Metrics库进行管理。这些度量可以通过JMX查询,或使用一些内置和第三方记录插件推送到外部监控系统。
为单个节点收集指标。由操作者使用外部监控系统来聚合它们。
指标类型
cassandra报告的所有指标都符合以下类型之一。
-
测量(Gauge)
- 值的瞬时测量。
-
计数器(Counter)
- AtomicLong实例的度量。通常通过监视从最后一次调用以来的消耗变化来查看与规范相比是否存在大的增加。
-
柱状图(Histogram)
-
测量数据流中值的统计分布。除了最小值,最大值,平均值等之外,它还测量中值,第75,第90,第95,第98,第99和第99.9百分位数。
-
定时器(Timer)
- 测量特定代码片段被调用的速率和其持续时间的直方图。
-
潜伏(Latency)
- 跟踪延迟(以微秒为单位)的特殊类型,使用定时器和计数器跟踪自启动以来累积的总延迟。此类型的每个指标名称将附加“Latency”和“TotalLatency”。
-
仪表(Meter)
- 测量平均吞吐量和一,五和十五分钟指数加权移动平均吞吐量的仪表度量。
表指标
Cassandra中的每个表都有负责跟踪其状态和性能的度量标准。
度量标准名称都附加了特定的键空间和表名称。
报告的名称格式:
- 指标名称(Metric Name)
-
org.apache.cassandra.metrics.Table.<MetricName>.<Keyspace>.<Table>
- JMX MBean
-
org.apache.cassandra.metrics:type=Tablekeyspace=<Keyspace> scope=<Table>name=<MetricName>
指标名称 | 指标类型 | 指标描述 |
---|---|---|
MemtableOnHeapSize | Gauge<Long> | 存储在堆上的memtable中的数据总量,包括列相关的开销和覆盖的分区。 |
MemtableOffHeapSize | Gauge<Long> | 存储在堆外的memtable中的数据总量,包括列相关的开销和覆盖的分区。 |
MemtableLiveDataSize | Gauge<Long> | 存储在memtable中的实时数据总量,不包括任何数据结构开销。 |
AllMemtablesOnHeapSize | Gauge<Long> | 驻留在堆上的memtables(包括2i和挂起的清空memtables)中存储的数据总量。 |
AllMemtablesOffHeapSize | Gauge<Long> | 驻留在堆外的memtables(包括2i和挂起清空的memtables)中存储的数据总量。 |
AllMemtablesLiveDataSize | Gauge<Long> | 驻留在堆外的memtables(包括2i和挂起的flush memtables)中存储的实时数据总量,不包括任何数据结构开销。 |
MemtableColumnsCount | Gauge<Long> | memtable中存在的列总数。 |
MemtableSwitchCount | Counter | 刷新导致memtable被切换的次数。 |
CompressionRatio | Gauge<Double> | 所有SSTables的当前压缩比。 |
EstimatedPartitionSizeHistogram | Gauge<long[]> | 估计分区大小的直方图(以字节为单位)。 |
EstimatedPartitionCount | Gauge<Long> | 表中键的近似数。 |
EstimatedColumnCountHistogram | Gauge<long[]> | 估计列数的直方图。 |
SSTablesPerReadHistogram | Histogram | 每次读取访问的sstable数据文件数的直方图。 |
ReadLatency | Latency | 当前表的本地读取延迟。 |
RangeLatency | Latency | 当前表的本地范围扫描延迟。 |
WriteLatency | Latency | 当前表的本地写入延迟。 |
CoordinatorReadLatency | Timer | 当前表的协调器读取延迟。 |
CoordinatorScanLatency | Timer | 当前表的协调器范围扫描延迟。 |
PendingFlushes | Counter | 当前表的等待处理的刷新任务的估计数量。 |
BytesFlushed | Counter | 从服务器启动/重启开始刷新的字节总数。 |
CompactionBytesWritten | Counter | 自服务器启动/重启以来,通过压缩写入的字节总数。 |
PendingCompactions | Gauge<Integer> | 估计此表的待处理compaction的数量。 |
LiveSSTableCount | Gauge<Integer> | 当前表磁盘上的SSTables数。 |
LiveDiskSpaceUsed | Counter | 属于当前表的SSTables使用的磁盘空间(以字节为单位)。 |
TotalDiskSpaceUsed | Counter | 属于此表的SSTables使用的总磁盘空间,包括废弃等待GC的。 |
MinPartitionSize | Gauge<Long> | 最小压缩分区的大小(以字节为单位)。 |
MaxPartitionSize | Gauge<Long> | 最大压缩分区的大小(以字节为单位)。 |
MeanPartitionSize | Gauge<Long> | 压缩分区的平均大小(以字节为单位)。 |
BloomFilterFalsePositives | Gauge<Long> | 表的bloom过滤器上的假阳性数。 |
BloomFilterFalseRatio | Gauge<Double> | 表的bloom过滤器的假阳性比率。 |
BloomFilterDiskSpaceUsed | Gauge<Long> | bloom过滤器使用的磁盘空间(以字节为单位)。 |
BloomFilterOffHeapMemoryUsed | Gauge<Long> | bloom过滤器使用的堆外存储器。 |
IndexSummaryOffHeapMemoryUsed | Gauge<Long> | 索引摘要使用的离堆内存。 |
CompressionMetadataOffHeapMemoryUsed | Gauge<Long> | 压缩元数据使用的堆外存储器。 |
KeyCacheHitRate | Gauge<Double> | 当前表的键高速缓存命中率。 |
TombstoneScannedHistogram | Histogram | 当前表查询中扫描的Tombstone柱状图。 |
LiveScannedHistogram | Histogram | 当前表查询中扫描的活动单元格的直方图。 |
ColUpdateTimeDeltaHistogram | Histogram | 当前表上列更新时间增量的直方图。 |
ViewLockAcquireTime | Timer | 当前表上实例化视图更新获取分区锁所花费的时间。 |
ViewReadTime | Timer | 在实体化视图更新的本地读取期间所花费的时间。 |
TrueSnapshotsSize | Gauge<Long> | 当前表的快照使用的磁盘空间包括所有SSTable组件。 |
RowCacheHitOutOfRange | Counter | 不满足查询过滤器的表行高速缓存命中数,因此转到磁盘。 |
RowCacheHit | Counter | 表行高速缓存命中数。 |
RowCacheMiss | Counter | 表行高速缓存未命中数。 |
CasPrepare | Latency | Latency of paxos prepare round. |
CasPropose | Latency | Latency of paxos propose round. |
CasCommit | Latency | Latency of paxos commit round. |
PercentRepaired | Gauge<Double> | 在磁盘上修复的表数据的百分比。 |
SpeculativeRetries | Counter | 为当前表发送的推测重试次数。 |
WaitingOnFreeMemtableSpace | Histogram | 花费在等待空闲memtable空间的时间直方图,无论是on还是off。 |
DroppedMutations | Counter | 当前表上丢失的突变数。 |
键空间指标
Cassandra中的每个键空间都有负责跟踪其状态和性能的度量标准。
这些度量与上面的“表度量”相同,唯一不同的是它们在Keyspace级别聚合。
报告的名称格式:
- 指标名称(Metric Name)
-
org.apache.cassandra.metrics.keyspace.<MetricName>.<Keyspace>
- JMX MBean
-
org.apache.cassandra.metrics:type=Keyspacescope=<Keyspace> name=<MetricName>
线程池指标
Cassandra将特定类型的工作分解到其自己的线程池中。 这为节点上的请求提供了背压和异步。 监视这些线程池的状态非常重要,因为它们可以告诉你阳极的饱和度。
度量标准名称都附加特定的线程池名称。线程池也是特定类型。
报告的名称格式:
- 指标名称(Metric Name)
-
org.apache.cassandra.metrics.ThreadPools.<MetricName>.<Path>.<ThreadPoolName>
- JMX MBean
-
org.apache.cassandra.metrics:type=ThreadPoolsscope=<ThreadPoolName> type=<Type>name=<MetricName>
指标名称 | 指标类型 | 指标描述 |
---|---|---|
ActiveTasks | Gauge<Integer> | 此线程池正在处理的任务数。 |
PendingTasks | Gauge<Integer> | 在此线程池上排队的任务数 |
CompletedTasks | Counter | 完成的任务数 |
TotalBlockedTasks | Counter | 由于队列饱和而被阻塞的任务数 |
CurrentlyBlockedTask | Counter | 由于重试操作解除阻塞的任务数 |
MaxPoolSize | Gauge<Integer> | 此线程池的最大线程数 |
可以监视以下线程池。
线程池名称 | 线程池类型 | 线程池描述 |
---|---|---|
Native-Transport-Requests | transport | 处理客户端CQL请求 |
CounterMutationStage | request | 负责计数器写操作 |
ViewMutationStage | request | 负责物化视图写入 |
MutationStage | request | 负责所有其他写入 |
ReadRepairStage | request | 读修复发生在这个线程池 |
ReadStage | request | 本地读取在此线程池上运行 |
RequestResponseStage | request | 协调器请求在此线程池上运行的集群 |
AntiEntropyStage | internal | 修建梅克尔树 |
CacheCleanupExecutor | internal | 在此线程池上执行缓存维护 |
CompactionExecutor | internal | 压缩在这些线程上运行 |
GossipStage | internal | 处理gossip请求 |
HintsDispatcher | internal | 执行提示切换 |
InternalResponseStage | internal | 负责集群内回调 |
MemtableFlushWriter | internal | 将memtables写入磁盘 |
MemtablePostFlush | internal | memtable写入磁盘后清理提交日志 |
MemtableReclaimMemory | internal | Memtable回收 |
MigrationStage | internal | 运行模式迁移 |
MiscStage | internal | 其他任务在此处运行 |
PendingRangeCalculator | internal | 计算令牌范围 |
PerDiskMemtableFlushWriter_0 | internal | 负责编写规范(每个磁盘都有一个0-N) |
Sampler | internal | 负责重新抽样SStables的索引摘要 |
SecondaryIndexManagement | internal | 执行辅助索引的更新 |
ValidationExecutor | internal | 执行验证压缩或擦除 |
客户端请求指标
客户端请求具有自己的一组度量标准,用于封装在协调器级别发生的工作。
不同类型的客户端请求按请求类型(RequestType)进行细分。
报告的名称格式:
- 指标名称(Metric Name)
-
org.apache.cassandra.metrics.ClientRequest.<MetricName>.<RequestType>
- JMX MBean
-
org.apache.cassandra.metrics:type=ClientRequestscope=<RequestType> name=<MetricName>
请求类型: | CAS读请求 |
||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
描述: | 与事务性读取请求相关的度量标准。 |
||||||||||||||||||||||||
指标: |
|
||||||||||||||||||||||||
请求类型: | CAS写请求 |
||||||||||||||||||||||||
描述: | 与事务性写入请求相关的度量标准。 |
||||||||||||||||||||||||
指标: |
|
||||||||||||||||||||||||
请求类型: | 常规读请求 |
||||||||||||||||||||||||
描述: | 与标准读取请求相关的度量标准。 |
||||||||||||||||||||||||
指标: |
|
||||||||||||||||||||||||
请求类型: | 范围切片(RangeSlice)请求 |
||||||||||||||||||||||||
描述: | 与令牌范围读取请求相关的度量标准。 |
||||||||||||||||||||||||
指标: |
|
||||||||||||||||||||||||
请求类型: | 常规写请求 |
||||||||||||||||||||||||
描述: | 与常规写入请求相关的度量。 |
||||||||||||||||||||||||
指标: |
|
||||||||||||||||||||||||
请求类型: | 视图写入请求 |
||||||||||||||||||||||||
描述: | 与物化视图写入相关的度量标准。 |
||||||||||||||||||||||||
指标: |
|
缓存指标
Cassandra缓存具有跟踪缓存有效性的度量。虽然表指标可能更有用。
报告的名称格式:
- 指标名称(Metric Name)
-
org.apache.cassandra.metrics.Cache.<MetricName>.<CacheName>
- JMX MBean
-
org.apache.cassandra.metrics:type=Cachescope=<CacheName> name=<MetricName>
指标名称 | 指标类型 | 指标描述 |
---|---|---|
Capacity | Gauge<Long> | 缓存容量(字节)。 |
Entries | Gauge<Integer> | 高速缓存条目的总数。 |
FifteenMinuteCacheHitRate | Gauge<Double> | 15分钟缓存命中率。 |
FiveMinuteCacheHitRate | Gauge<Double> | 5分钟缓存命中率 |
OneMinuteCacheHitRate | Gauge<Double> | 1分钟缓存命中率 |
HitRate | Gauge<Double> | 所有时间内的缓存命中率 |
Hits | Meter | 高速缓存命中的总数。 |
Misses | Meter | 高速缓存未命中的总数。 |
MissLatency | Timer | 未命中的延迟。 |
Requests | Gauge<Long> | 缓存请求的总数。 |
Size | Gauge<Long> | 被占用的缓存的总大小,以字节为单位。 |
涵盖以下高速缓存:
缓存名称 | 缓存描述 |
---|---|
CounterCache | 保持热计数器在内存中的性能。 |
ChunkCache | 在进程中未压缩的页面缓存。 |
KeyCache | 分区sstable偏移量缓存。 |
RowCache | 缓存在内存中保存的行。 |
注意:Misses和MissLatency仅为ChunkCache定义
CQL指标
专用于CQL预编译语句高速缓存的度量。
报告的名称格式:
- 指标名称(Metric Name)
-
org.apache.cassandra.metrics.CQL.<MetricName>
- JMX MBean
-
org.apache.cassandra.metrics:type=CQLname=<MetricName>
指标名称 | 指标类型 | 指标描述 |
---|---|---|
PreparedStatementsCount | Gauge<Integer> | 预编译语句高速缓存的数量。 |
PreparedStatementsEvicted | Counter | 从预编译语句高速缓存中逐出的语句的数量。 |
PreparedStatementsExecuted | Counter | 已执行的预编译语句数量。 |
RegularStatementsExecuted | Counter | 未执行的预编译语句数量。 |
PreparedStatementsRatio | Gauge<Double> | 预编译语句与非预编译语句的百分比。 |
消息废弃指标(DroppedMessage Metrics)
针对不同类型请求跟踪废弃消息的指标。 废弃消息的写入由Hinted Handoff存储和重试
报告的名称格式:
- 指标名称(Metric Name)
-
org.apache.cassandra.metrics.DroppedMessages.<MetricName>.<Type>
- JMX MBean
-
org.apache.cassandra.metrics:type=DroppedMetricsscope=<Type> name=<MetricName>
指标名称 | 指标类型 | 指标描述 |
---|---|---|
CrossNodeDroppedLatency | Timer | 节点之间丢弃的延迟。 |
InternalDroppedLatency | Timer | 节点中丢弃的延迟。 |
Dropped | Meter | 丢弃的消息数。 |
跟踪的不同类型的消息:
消息名称 | 消息描述 |
---|---|
BATCH_STORE | 批量日志写入 |
BATCH_REMOVE | 批量日志清理(成功应用后) |
COUNTER_MUTATION | 计数器写入 |
HINT | 提示重放 |
MUTATION | 定期写入 |
READ | 定期读取 |
READ_REPAIR | 读修复 |
PAGED_SLICE | 分页读 |
RANGE_SLICE | 令牌范围读取 |
REQUEST_RESPONSE | RPC回调 |
_TRACE | 跟踪写入 |
数据流指标
流操作期间报告的指标,例如修复,引导,重建。
这些度量标准专用于同级端点,源节点是您从中提取度量标准的节点。
报告名称格式:
- 指标名称(Metric Name)
-
org.apache.cassandra.metrics.Streaming.<MetricName>.<PeerIP>
- JMX MBean
-
org.apache.cassandra.metrics:type=Streamingscope=<PeerIP> name=<MetricName>
指标名称 | 指标类型 | 指标描述 |
---|---|---|
IncomingBytes | Counter | 从同级端点送到此节点的数据流字节数。 |
OutgoingBytes | Counter | 从此节点送到同级端点的数据流字节数。 |
Compaction指标
压实工作专用的度量。
报告名称格式:
- 指标名称(Metric Name)
-
org.apache.cassandra.metrics.Compaction.<MetricName>
- JMX MBean
-
org.apache.cassandra.metrics:type=Compactionname=<MetricName>
指标名称 | 指标类型 | 指标描述 |
---|---|---|
BytesCompacted | Counter | 自服务器启动/重启以来压缩的字节总数。 |
PendingTasks | Gauge<Integer> | 估计要执行的压缩数量。 |
CompletedTasks | Gauge<Long> | 自服务器启动/重启以来已完成的压缩数。 |
TotalCompactionsCompleted | Meter | 自服务器启动/重启以来已完成压缩的吞吐量。 |
PendingTasksByTableName | Gauge<Map<String, Map<String, Integer>>> | 剩余要执行的压缩的估计数,按键空间和表名分组。此信息也保存在表度量标准中。 |
CommitLog指标
CommitLog的特定指标
报告名称格式:
- 指标名称(Metric Name)
-
org.apache.cassandra.metrics.CommitLog.<MetricName>
- JMX MBean
-
org.apache.cassandra.metrics:type=CommitLogname=<MetricName>
指标名称 | 指标类型 | 指标描述 |
---|---|---|
CompletedTasks | Gauge<Long> | 自[启动/重启以来写入的提交日志消息的总数。 |
PendingTasks | Gauge<Long> | 已写入但尚未成为同步文件的提交日志消息数。 |
TotalCommitLogSize | Gauge<Long> | 当前大小(以字节为单位),由所有提交日志段使用。 |
WaitingOnSegmentAllocation | Timer | 等待CommitLogSegment被分配所花费的时间 - 在正常条件下,这应该为零。 |
WaitingOnCommit | Timer | 等待CL同步文件所花费的时间;对于Periodic,仅当同步落后于其同步间隔时才会发生。 |
存储指标
存储引擎特有的指标。
报告名称格式:
- 指标名称(Metric Name)
-
org.apache.cassandra.metrics.Storage.<MetricName>
- JMX MBean
-
org.apache.cassandra.metrics:type=Storagename=<MetricName>
指标名称 | 指标类型 | 指标描述 |
---|---|---|
Exceptions | Counter | 捕获的内部异常数。 在正常的情况下,这应该是零。 |
Load | Counter | 此节点管理的磁盘数据的大小(以字节为单位)。 |
TotalHints | Counter | 自启动/重启以来写入此节点的提示消息数。包括每个提示对每个主机条目提示。 |
TotalHintsInProgress | Counter | 当前尝试发送的提示数。 |
HintedHandoff指标
特定于Hinted Handoff的指标。还有一些与存储指标中跟踪提示相关的指标
这些度量标准包括度量标准名称中的同级端点
报告名称格式:
- 指标名称(Metric Name)
-
org.apache.cassandra.metrics.HintedHandOffManager.<MetricName>
- JMX MBean
-
org.apache.cassandra.metrics:type=HintedHandOffManagername=<MetricName>
指标名称 | 指标类型 | 指标描述 |
---|---|---|
Hints_created-<PeerIP> | Counter | 与当前端点同级的端点的磁盘提示数。 |
Hints_not_stored-<PeerIP> | Counter | 由于超过配置的提示窗口而未存储的当前端点的同级端点的提示数。 |
SSTable索引指标
SSTable索引元数据特有的指标。
报告名称格式:
- 指标名称(Metric Name)
-
org.apache.cassandra.metrics.Index.<MetricName>.RowIndexEntry
- JMX MBean
-
org.apache.cassandra.metrics:type=Indexscope=RowIndexEntry name=<MetricName>
指标名称 | 指标类型 | 指标描述 |
---|---|---|
IndexedEntrySize | Histogram | 所有SSTables索引堆大小的直方图(以字节为单位)。 |
IndexInfoCount | Histogram | 在所有SSTables上管理的堆索引条目数的直方图。 |
IndexInfoGets | Histogram | 根据SSTable执行数字索引的直方图。 |
缓冲池指标
特定于Cassandra管理的内部循环缓冲池。 这个池用于通过循环打开和关闭堆缓冲区来保持分配和回收。
报告名称格式:
- 指标名称(Metric Name)
-
org.apache.cassandra.metrics.BufferPool.<MetricName>
- JMX MBean
-
org.apache.cassandra.metrics:type=BufferPoolname=<MetricName>
指标名称 | 指标类型 | 指标描述 |
---|---|---|
Size | Gauge<Long> | 受管缓冲池的大小(以字节为单位) |
Misses | Meter | 池中的未命中率。 更多的在分配时发生。 |
客户端指标
特定于客户端管理的度量标准。
报告名称格式:
- 指标名称(Metric Name)
-
org.apache.cassandra.metrics.Client.<MetricName>
- JMX MBean
-
org.apache.cassandra.metrics:type=Clientname=<MetricName>
指标名称 | 指标类型 | 指标描述 |
---|---|---|
connectedNativeClients | Counter | 连接到此节点本机协议服务器的客户端数 |
connectedThriftClients | Counter | 连接到节点thrift协议服务器的客户端数 |
JVM 指标
可以通过使用JMX连接到JVM来访问JVM度量标准(例如内存和垃圾回收统计信息),也可以使用度量标准记录器导出。
报告名称格式:
- 指标名称(Metric Name)
-
jvm.buffers.<direct|mapped>.<MetricName>
- JMX MBean
-
java.nio:type=BufferPoolname=<direct|mapped>
指标名称 | 指标类型 | 指标描述 |
---|---|---|
Capacity | Gauge<Long> | 此池中缓冲区的估计总容量 |
Count | Gauge<Long> | 池中的缓冲区的估计数 |
Used | Gauge<Long> | Java虚拟机用于此缓冲池的估计内存 |
文件描述符比率(FileDescriptorRatio)
- 指标名称(Metric Name)
-
jvm.fd.<MetricName>
- JMX MBean
-
java.lang:type=OperatingSystemname=<OpenFileDescriptorCount|MaxFileDescriptorCount>
指标名称 | 指标类型 | 指标描述 |
---|---|---|
Usage | Ratio | 已使用的文件描述符总数的比例 |
垃圾回收器(GarbageCollector)
- 指标名称(Metric Name)
-
jvm.gc.<gc_type>.<MetricName>
- JMX MBean
-
java.lang:type=GarbageCollectorname=<gc_type>
指标名称 | 指标类型 | 指标描述 |
---|---|---|
Count | Gauge<Long> | 发生的收集总数 |
Time | Gauge<Long> | 收集垃圾累积消耗的时间(以毫秒为单位) |
内存(Memory)
- 指标名称(Metric Name)
-
jvm.memory.<heap/non-heap/total>.<MetricName>
- JMX MBean
-
java.lang:type=Memory
Committed | Gauge<Long> | 提交给JVM使用的内存量(以字节为单位) |
Init | Gauge<Long> | JVM最初从操作系统请求的内存量(以字节为单位) |
Max | Gauge<Long> | 可用于内存管理的最大内存量(以字节为单位) |
Usage | Ratio | 已使用的比率与最大内存 |
Used | Gauge<Long> | 使用的内存量(以字节为单位) |
内存池(MemoryPool)
- 指标名称(Metric Name)
-
jvm.memory.pools.<memory_pool>.<MetricName>
- JMX MBean
-
java.lang:type=MemoryPoolname=<memory_pool>
Committed | Gauge<Long> | 提交给JVM使用的内存量(以字节为单位) |
Init | Gauge<Long> | JVM最初从操作系统请求的内存量(以字节为单位) |
Max | Gauge<Long> | 可用于内存管理的最大内存量(以字节为单位) |
Usage | Ratio | 已使用的比率与最大内存 |
Used | Gauge<Long> | 使用的内存量(以字节为单位) |
JMX
任何基于JMX的客户端都可以访问cassandra的度量指标。
如果您希望通过http访问JMX度量标准,可以下载Mx4jTool并将mx4j-tools.jar放置到类路径中。在启动时,您将在日志中看到:
HttpAdaptor version 3.0.2 started on port 8081
要选择不同的端口(默认为8081)或不同的侦听地址(0.0.0.0不是默认值),编辑conf / cassandra-env.sh并取消注释:
#MX4J_ADDRESS="-Dmx4jaddress=0.0.0.0"
#MX4J_PORT="-Dmx4jport=8081"
指标反馈(Metric Reporters)
如本篇博客顶部所述,Cassandra度量可以导出到多个监控系统中的一些内置和第三方记录插件。
这些插件的配置由metrics reporter config项目管理。有一个示例配置文件位于conf / metrics-reporter-config-sample.yaml。
一旦配置,你只需启动cassandra与标志-Dcassandra.metricsReporterConfigFile = metrics-reporter-config.yaml。指定的.yaml文件加上的任何第三方记录器的jar包都必须在Cassandra的类路径中。