操作Cassandra(7)-监控

时间:2023-01-04 04:49:47

监控

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>
        注意:有一个称为“all”的特殊表,没有键空间。这表示节点上所有表和键空间的度量标准的聚合。

指标名称 指标类型 指标描述
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读请求

描述:

与事务性读取请求相关的度量标准。

指标:
指标名称
指标类型 指标描述
Timeouts Counter 遇到的超时次数。
Failures Counter 遇到的事务失败次数。
  Latency 事务读取延迟。
Unavailables Counter 遇到的不可用错误数。
UnfinishedCommit Counter 读取时提交的事务数。
ConditionNotMet Counter 事务先决条件数与当前值不匹配。
ContentionHistogram Histogram 遇到了多少个争用。
请求类型:

CAS写请求

描述:

与事务性写入请求相关的度量标准。

指标:
指标名称 指标类型 指标描述
Timeouts Counter 遇到的超时次数。
Failures Counter 遇到的事务失败次数。
  Latency 事务写入延迟。
UnfinishedCommit Counter 写入时提交的事务数。
ConditionNotMet Counter 事务先决条件数与当前值不匹配。
ContentionHistogram Histogram 遇到了多少个写争用。
请求类型:

常规读请求

描述:

与标准读取请求相关的度量标准。

指标:
指标名称 指标类型 指标描述
Timeouts Counter 遇到的超时次数。
Failures Counter 遇到的读取失败次数。
  Latency 读取延迟。
Unavailables Counter 遇到的不可用错误数。
请求类型:

范围切片(RangeSlice)请求

描述:

与令牌范围读取请求相关的度量标准。

指标:
指标名称 指标类型 指标描述
Timeouts Counter 遇到的超时次数。
Failures Counter 遇到的范围查询失败次数。
  Latency 范围查询延迟。
Unavailables Counter 遇到的不可用错误数。
请求类型:

常规写请求

描述:

与常规写入请求相关的度量。

指标:
指标名称 指标类型 指标描述
Timeouts Counter 遇到的超时次数。
Failures Counter 遇到的写入失败次数。
  Latency 写入延迟。
Unavailables Counter 遇到的不可用错误数。
请求类型:

视图写入请求

描述:

与物化视图写入相关的度量标准。

指标:
指标名称 指标类型 指标描述
Timeouts Counter 遇到的超时次数。
Failures Counter 遇到的事务失败次数。
Unavailables Counter 遇到的不可用错误数。
ViewReplicasAttempted Counter 已尝试的视图副本写入的总数。
ViewReplicasSuccess Counter 已成功视图副本写入的总数。
ViewPendingMutations Gauge<Long> 已尝试的副本视图 - 成功副本视图
ViewWriteLatency Timer 从基表应用突变到在视图上实现CL.ONE之间的时间。

缓存指标

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的类路径中。