统一观测丨使用 Prometheus 监控 Cassandra 数据库最佳实践

作者:元格

本篇内容主要包括四部分:Cassandra 概览介绍、常见关键指标解读、常见告警规则解读、如何通过 Prometheus 建立相应监控体系。

Cassandra 简介

Cassandra 是什么? Apache Cassandra 是一个开源、分布式、去中心化、弹性可伸缩、高可用、容错、可调一致性、面向行的数据库。它的分布式设计基于 Amazon Dynamo,数据模型基于 Google BigTable。Cassandra 由 Facebook 创建,目前在 Facebook、Twitter、Apple、360 等各大 IT 企业成熟落地使用。

在这里插入图片描述

Cassandra 特点

  • 大规模可扩展存储

Cassandra 可扩展到数百 TB,以出色的性能运行在商用集群上。

  • 易于管理

Cassandra 群集易于大规模管理,并且可以随需求的变化动态扩容。

  • 高可用性

Cassandra 设计为“持续在线”并已支持零停机时间升级等功能,应用于生产环境已有十多年的历史。

  • 写密集型应用

Cassandra 特别适合写密集型应用的时序型数据,如时间序列流数据、传感器日志数据和物联网应用程序等。

  • 统计和分析

Cassandra 支持与 Spark 等大数据计算框架集成,用户可以利用 Spark 强大的内存分析功能进行大数据统计和分析。

  • 异地多活

Cassandra 支持异地多数据中心,数据可以跨多个云和数据中心进行复制备份。

典型适用场景

Cassandra 是一个非常灵活的分布式 NoSQL 数据库系统,适用于许多不同的场景。以下是 Cassandra 的适用场景的详细描述:

1.大数据量、高写入频率的应用场景

Cassandra 的设计目标之一就是处理大规模数据集和高写入频率的应用场景,例如社交媒体、物联网、实时数据分析等。Cassandra 能够轻松地水平扩展,使得其能够处理数百亿行数据的工作负载,并支持快速的写入和读取操作。

2.高可用性和容错性的应用场景

Cassandra 具有自动分区、复制和故障转移功能,因此非常适合需要高可用性和容错性的应用场景,例如金融交易、在线游戏等。Cassandra 的分布式体系结构确保了即使在节点故障的情况下,系统也能够继续运行,并保持一致性。

3.跨数据中心和地理位置的数据复制和同步的应用场景

Cassandra 支持多数据中心复制,因此能够轻松地在不同的数据中心之间进行数据同步和数据备份。这使得 Cassandra 非常适合需要全球扩展的应用场景,例如在线广告、电子商务等。

4.需要支持分布式事务的应用场景

Cassandra 通过支持轻量级事务来保证数据的一致性。这些事务能够跨多个节点和多个数据中心,并且能够在高吞吐量和低延迟的情况下执行。Cassandra 还支持分布式计数器,这使得它非常适合需要支持分布式事务的应用场景,例如金融交易。

5.需要灵活的数据模型,能够支持多种查询方式的应用场景
Cassandra 的灵活的数据模型和支持多种查询方式的能力,使得它非常适合需要存储和查询灵活数据模型的应用场景,例如存储时序数据、跟踪订单状态等。Cassandra 还支持多种数据结构,例如集合、映射、列表等,这使得它非常适合存储半结构化和非结构化数据。

虽然 Cassandra 非常适合许多应用场景,但也有一些情况下它可能不适合使用。以下是一些 Cassandra 不适合使用的场景:

  1. 对于小规模数据集和低写入频率的应用场景,Cassandra 可能会显得过于复杂和冗余。在这种情况下,使用传统的关系型数据库可能更加合适。
  2. 对于需要复杂数据模型和复杂查询的应用场景,Cassandra 可能会限制查询能力和灵活性,因为它不支持复杂的联接操作和事务。在这种情况下,使用传统的关系型数据库或其他 NoSQL 数据库可能更加合适。
  3. 对于需要严格的数据一致性和隔离级别的应用场景,Cassandra 的轻量级事务可能无法满足要求。在这种情况下,使用传统的关系型数据库可能更加合适。
  4. 对于需要进行复杂分析和聚合的应用场景,Cassandra 可能不是最佳选择,因为它不支持复杂的分析查询和聚合操作。在这种情况下,使用专门的分析数据库可能更加合适。

总之,Cassandra 适合处理大规模数据集和高写入频率的应用场景,但对于小规模数据集和复杂查询、分析等场景可能不适合。 因此,在选择数据库时,需要根据具体的应用需求进行综合考虑。

Cassandra 核心概念

在这里插入图片描述

1.Cassandra 节点(Cassandra Node)

Cassandra 节点是 Cassandra 集群中的一个实例,它负责存储一部分数据,处理读写请求,并与其他节点进行通信。Cassandra 节点之间通过 Gossip 协议进行通信,以维护节点状态和拓扑。

2.Memtable(Memory Table)
Memtable 是一种类似于 SkipList 的内存结构,用于提高写入性能。Memtable 是 Cassandra 在写入过程中使用的临时数据结构,用于保存待写入到磁盘中的数据。当 Memtable 已满时,Cassandra 会将其中的数据写入到磁盘中,并在内存中继续写入新数据。

3.Key Caches

Cassandra 在读取数据时使用的缓存,用于加速读取操作。Key Cache 存储在每个节点的内存中,缓存最近使用的数据项,以便快速查找和访问数据。Cassandra 使用哈希表来存储 key/value 数据,根据 LRU(Least Recently Used)算法来管理 Key Cache 中的数据项。当 Key Cache 已满时,Cassandra 会将最近最少使用的数据项从 Key Cache 中移除以释放空间。

4.Row Caches

Row Cache 是一种内存缓存,用于存储 Cassandra 中的行级数据。Row Cache 是 Cassandra 在读取数据时使用的缓存,用于加速读取操作。Row Cache 存储在每个节点的内存中,缓存最近使用的行级数据,以便快速查找和访问数据。与 Key Cache 和 Memtable 不同,Row Cache 缓存的是完整的行级数据,而不是其中的 key/value 数据。

5.Commit Logs

Commit Logs 机制实际上就是 Cassandra 中实现 WAL(Write Ahead Log)机制的方式之一,用于在写入数据时保证数据的持久性和一致性。当 Cassandra 收到写入请求时,它首先将数据写入到内存中的 Memtable 中,并将数据追加到 Commit Logs 中。这样可以保证在系统出现故障时,数据可以从 Commit Logs 中恢复到最后一次提交的状态。

6.SSTable(Sorted String Table)

SSTable 是 Cassandra 中存储数据的物理格式。每个 SSTable 是一个已排序的字符串表,包含多个数据分区的数据,并根据分区键和列名进行排序。Cassandra 使用多个 SSTable 来存储数据,并使用 BloomFilter 和索引来快速定位数据。

7.Hints

Hints 是 Cassandra 中一种机制,用于在节点故障时保证数据的一致性和可靠性。当节点无法响应写入请求时,Cassandra 会将这些请求保存在 Hints 中,并在节点恢复后重新尝试处理这些请求。Hints 机制可以提高系统的可靠性,但可能会对性能产生影响。

8.Tombstone

在 Cassandra 中,删除操作实际上是一种“写入”操作,Cassandra 会将要删除的数据标记为Tombstone。Tombstone 是一种特殊的数据类型,它包含了要删除数据的信息(如表名、键名、时间戳等),并在磁盘上占据一定的空间。当读取数据时,Cassandra 会检查 Tombstone,如果数据被标记为 Tombstone,则视为已删除,不会返回给客户端。

9.Bloom filter

在 Cassandra 中,Bloom Filter 主要用于查询 Memtable 和 SSTable中的数据是否存在,是 Cassandra 中的一种用于快速查询数据存在性的机制,用于在读取操作时加速查找数据。当 Cassandra 需要查询数据时,它会首先查找 Bloom Filter,如果数据不存在于 Bloom Filter中,则可以直接跳过读取操作,因为数据一定不存在于 Memtable 和 SSTable 中。如果数据可能存在于 SSTable 中,则继续读取 SSTable 中的数据进行验证。

监控关键指标

这里以阿里云的 Cassandra 组件为例,介绍监控 Cassandra 服务中常见的关键指标。

在这里插入图片描述

基础信息

1.CPU / 内存 / 硬盘使用率

Cassandra 作为一个高吞吐量、低延迟的分布式数据库,需要充分利用节点的硬件资源来提供高性能的数据存储和查询服务,如果节点的资源使用超过了预期或者达到了极限,可能会导致性能下降或者系统崩溃,影响业务的正常运行。因此我们首先需要关注节点实时的 CPU / 内存 / 硬盘使用率,以确保 Cassandra 服务运行的稳定性。

2.客户端连接数

连接到当前 Cassandra 服务端的客户端连接数量也是需要监控的指标之一。客户端连接数表示当前正在与 Cassandra 集群进行通信的客户端数量,如果连接数过高可能会导致集群出现资源不足的情况,从而影响系统的性能和可用性。特别是在高并发情况下,客户端连接数的监控和优化显得尤为重要。如果连接数过高,可以通过优化节点配置、增加节点数量等手段来缓解压力,从而保证系统的高可用和高性能。

3.Cassandra 数据量

Cassandra 作为一个数据库,其数据量也是需要紧密关注的监控数据之一。Cassandra 支持海量数据的存储和查询,因此在实际应用中,其数据量通常会不断增长。如果数据量过大,可能会导致节点出现资源不足、查询性能下降等问题,从而影响业务的正常运行。因此,对 Cassandra 集群的数据量进行监控和优化,可以帮助我们更好地管理和维护 Cassandra 集群。监控数据量可以通过监测磁盘使用情况、分布式存储的数据分布情况等指标来实现。如果数据量过大,可以考虑增加节点数量、升级硬件配置、进行数据迁移等措施来缓解压力,从而提高系统的可用性和性能。

4.客户端读写分布比例

最后,我们推荐监控的一个指标是客户端的读写分布比例,Cassandra 是一个支持高吞吐量、低延迟的分布式数据库,通常用于存储大量的读写数据。如果读写分布比例不均衡,可能会导致集群出现瓶颈,从而影响系统的性能和可用性。通过监控客户端的读写分布比例,我们可以及时发现问题,采取措施来优化集群的读写性能。例如,可以通过增加节点数量、调整分区策略、优化查询语句等手段来实现优化。

读写延迟和吞吐量

Cassandra 作为数据库服务,其读写延迟和吞吐量是我们必须要关注的指标之一。Cassandra 以其高吞吐量、低延迟的特点著称,因此在实际应用中,读写延迟和吞吐量是衡量 Cassandra 集群性能的重要指标。

1.读写延迟

读写延迟是 Cassandra 集群性能的重要指标,如果读写延迟较高,则可能会导致系统响应时间长、节点之间数据同步慢影响数据一致性、节点出现高负载、系统出现瓶颈等问题。因此,保持读写延迟的合理水平是确保 Cassandra 集群高可用和高性能的重要因素之一。如果发现读写延迟较高,运维人员可以通过关注其他监控数据来排查问题。读写延迟的增加可能是由多种因素导致的,例如缓存/布隆过滤器/硬盘占用等。因此,针对不同的问题,可以采取不同的排查和优化措施来提高集群的性能和可用性。

2.吞吐量

读写吞吐量是反映当前 Cassandra 集群每秒处理的读写请求次数的指标,如果吞吐量过高导致节点出现高负载,可能会影响系统的稳定性和可用性。高负载可能会导致节点出现瓶颈,从而影响系统的响应时间和可用性。因此,如果吞吐量过高,运维人员需要引起警惕,并采取有效的措施来缓解负载压力,例如增加节点数量、修改路由策略等。

如果集群性能较强,可以适当提高吞吐量的监控阈值,以反映集群的实际性能水平。这样可以更好地反映 Cassandra 集群的性能和可用性,从而更好地支持业务需求。但需要注意的是,吞吐量的阈值不能过于乐观,需要综合考虑集群的硬件性能、业务需求和系统特点等多个因素,以确保集群的高可用和高性能。

缓存和布隆过滤器

缓存和布隆过滤器能够直接显著影响 Cassandra 数据库的性能。缓存可以提高查询的性能和效率,减少对磁盘的读取次数,从而提高系统的响应速度和吞吐量。如果缓存命中率高,可以显著提高 Cassandra 集群的性能和可用性。布隆过滤器可以降低数据库的查询负载,通过减少不必要的查询请求,提高集群的吞吐量和性能。如果布隆过滤器的误判率低,可以减少查询的操作次数,从而提高集群的性能和可用性。

我们推荐监控 Cassandra 服务中 key cache 命中率以及 Bloom filter 误判率这两项指标。

  1. Key cache 命中率

Key cache 是 Cassandra 中的一种缓存机制,用于存储最常用的数据块和索引数据。当应用程序请求数据时,Cassandra 首先会查找 Key cache,如果数据块或索引数据已经存在于 Key cache 中,则可以直接返回结果,避免了对磁盘的访问。因此,Key cache 的命中率直接反映 Cassandra 集群的性能和效率。如果 Key cache 命中率较低,可能会导致 Cassandra 集群响应时间变长,影响系统的性能和可用性。

  1. Bloom filter 误判率

Bloom filter 是 Cassandra 中用于快速查询数据是否存在的一种数据结构。Bloom filter 虽能快速判断数据是否存在,但会存在误判的情况。Bloom filter 的误判率反映了 Cassandra 集群查询数据的准确性和效率。如果 Bloom filter 误判率较高,可能会导致 Cassandra 集群查询效率下降,从而影响系统的性能和可用性。

异常和错误

异常和错误是 Cassandra 服务中需要监控的核心指标之一,反映了系统的异常情况,例如节点宕机、数据丢失、网络故障等问题。当异常和错误指标非0时,通常意味着系统出现了问题,需要及时排查和解决。例如,如果节点宕机,可能需要重新启动或替换节点,以恢复集群的正常运行。如果数据丢失,可能需要采取数据恢复措施,以确保数据的完整性和可靠性。

在某些情况下,异常和错误指标可能会出现误报或误判的情况。例如,某些异常和错误可能只是暂时的,可以自动恢复,不需要进行手动干预。因此,在分析异常和错误指标时,也需要结合其他指标,例如读写延迟、吞吐量、CPU 和内存使用率等指标,来判断和排查问题。

我们推荐监控异常请求,错误请求、dropped message 三项指标。

  1. 异常请求:异常请求指 Cassandra 集群在处理读写请求时出现异常的情况,例如请求超时、请求被拒绝等等。异常请求的出现通常意味着 Cassandra 集群出现了问题,需要及时排查和解决。因此,监控异常请求是确保 Cassandra 集群高可用和高性能的关键指标之一。

  2. 错误请求:错误请求指 Cassandra 集群在处理读写请求时出现错误的情况,例如请求的数据不存在、数据类型不匹配等等。错误请求的出现可能会影响 Cassandra 集群的查询效率和准确性,从而影响系统的性能和可用性。因此,监控错误请求也是 Cassandra 集群监控的重要指标之一。

  3. Dropped message:Dropped message 指在 Cassandra 集群间节点之间进行通信时出现丢失消息的情况。Dropped message 的出现通常意味着 Cassandra 集群间通信出现异常,可能会影响集群的可用性和性能。因此,监控 Dropped message 也是 Cassandra 集群监控的重要指标之一。

硬件资源占用

在 Cassandra 监控中,监控 CPU、内存、硬盘和网络的使用情况是比较重要的指标。在这个模块,我们可以深入挖掘这些指标的监控数据,以更好地了解 Cassandra 集群的性能和可用性。

  1. CPU 使用率:CPU 是 Cassandra 集群的计算资源,CPU 使用率反映了集群的计算负载情况。高 CPU 使用率可能会导致集群响应变慢,影响系统的性能和可用性。因此,监控 CPU 使用率是确保 Cassandra 集群高性能和高可用的重要指标之一。

  2. 内存使用率:内存是 Cassandra 集群的重要资源,内存使用率反映了集群的内存负载情况。高内存使用率可能会导致集群出现高负载,影响系统的性能和可用性。因此,监控内存使用率也是 Cassandra 集群监控的重要指标之一。

  3. 硬盘使用率:硬盘是 Cassandra 集群的存储资源,硬盘使用率反映了集群存储的负载情况。高硬盘使用率可能会导致集群存储压力过大,影响系统性能和可用性。因此,监控硬盘使用率也是 Cassandra 集群监控的重要指标之一。

  4. 网络使用率:网络是 Cassandra 集群的通信资源,网络使用率反映了集群节点之间通信的负载情况。高网络使用率可能会导致集群通信异常,影响系统的性能和可用性。因此,监控网络使用率也是 Cassandra 集群监控的重要指标之一。

存储占用

Memtable、SSTable 和 Commit Log 是 Cassandra 服务中存储数据的三部分,各自承担着不同的作用,在Cassandra 读写操作中起到了重要作用,我们推荐对这三部分数据的存储占用情况进行监控。

  1. Memtable 存储占用:对 Memtable 存储占用情况进行监控,可以及时发现集群中写入性能和效率的问题。如果Memtable 存储占用过大,可能会导致写入性能下降,影响系统的性能和可用性。因此,监控 Memtable 存储占用情况能够帮助运维人员及时采取措施,优化集群的写入性能和效率。

  2. SSTable 存储占用:对 SSTable 存储占用情况进行监控,可以及时发现集群中存储容量不足的问题。如果 SSTable 存储占用过大,可能会导致存储容量不足,从而影响系统的性能和可用性。因此,监控 SSTable 存储占用情况能够帮助运维人员及时采取措施,增加集群的存储容量,确保集群的高可用性和高性能。

  3. Commit Log 存储占用:对 Commit Log 存储占用情况进行监控,能够及时发现集群中故障恢复问题。如果 Commit Log 存储占用过大,可能会导致故障恢复时间变长,影响系统的可靠性和稳定性。因此,监控 Commit Log存储占用情况能够帮助运维人员及时采取措施,优化集群的故障恢复能力,确保集群的高可靠性和高可用性。

线程池状态

我们推荐对 Cassandra 的线程池进行监控,分别统计 active task、blocked task 和 pending task 数量进行实时监控。

  1. Active task:Active task 指正在执行中的任务数量。如果 Active task 数量过高,可能会导致线程池过载,影响系统的性能和可用性。

  2. Blocked task:Blocked task 指正在等待获取锁的任务数量。如果 Blocked task 数量过高,可能会导致线程池阻塞,影响系统的性能和可用性。

  3. Pending task:Pending task 指正在等待执行的任务数量。如果 Pending task 数量过高,可能会导致任务积压,影响系统的性能和可用性。

通过监控这三项指标,可以及时发现线程池中的性能问题,从而采取相应的措施,优化线程池的性能和效率。同时,监控线程池也可以帮助运维人员及时发现线程池过载、阻塞和任务积压等问题,从而确保 Cassandra 集群的高可用和高性能。

JVM 监控

Cassandra 作为一个基于 Java 编写的应用,在监控中也需要监控 JVM 相关的三项指标,分别是 JVM 应用吞吐率、JVM 垃圾回收时间和 JVM 内存使用情况。这些指标对于保障 Cassandra 的高可用和高性能非常重要。

  1. JVM 应用吞吐率:JVM 的应用吞吐率是指 JVM 在单位时间内完成的任务数量,也就是吞吐量。高吞吐率表示 JVM 性能较好,反之则表JVM 性能较差。因此,监控 JVM 应用吞吐率可以在J VM 性能下降时及时发现问题,从而采取措施进行优化。

  2. JVM 垃圾回收时间:JVM 垃圾回收时间是指 JVM 在进行垃圾回收时所需要的时间,高垃圾回收时间会导致JVM 性能下降。因此,监控 JVM 垃圾回收时间可以帮助运维人员及时发现垃圾回收过程中的性能问题,从而优化 JVM 性能。

  3. JVM 内存使用情况:JVM 的内存使用情况是指 JVM 在运行过程中所占用的内存大小。如果 JVM 内存使用过高,可能会导致内存溢出,影响系统的性能和可用性。因此,监控JVM的内存使用情况能够帮助运维人员及时发现内存问题,从而采取措施进行优化。

关键告警规则

在对 Cassandra 进行告警规则配置时,我们推荐基于以上采集得到的指标,从以下几个方面进行告警规则的配置,分别是集群健康状态、资源使用情况、读写延迟和吞吐量、异常和错误及 JVM,以下是一些推荐的告警规则。

集群健康状态

我们推荐对集群中 Cassandra 宕机节点的比例进行监控,并根据需要灵活设置阈值。

在设置阈值时,需要考虑到 Cassandra 集群的规模、硬件配置、数据负载以及业务需求等因素。一般来说,如果集群中有多个节点,建议将宕机节点的比例控制在 5% 以下,如果集群规模较小,则可以设置更严格的阈值。但是,需要注意的是,过于严格的阈值可能会导致误报,过于宽松的阈值则可能会导致漏报。因此,在设置阈值时,需要根据实际情况进行调整和优化。

资源使用情况

在资源使用情况中,我们推荐对 Cassandra 集群中各个节点的 CPU、内存以及硬盘使用率配置告警规则:

  1. CPU使用率:建议设置 CPU 使用率的告警阈值,当节点的 CPU 使用率超过阈值时,可以发出告警通知相关人员及时处理,以防止 Cassandra 集群进入不稳定状态甚至出现宕机等问题,以保障 Cassandra 集群的高可用和高性能。

  2. 内存使用率:建议设置内存使用率的告警阈值,当节点的内存使用率超过阈值时,可以发出告警通知相关人员及时处理,防止因内存不足导致系统崩溃。

  3. 硬盘使用率:建议设置硬盘使用率的告警阈值,当节点的硬盘使用率超过阈值时,可以发出告警通知相关人员及时处理,防止因磁盘空间不足导致数据丢失等问题。

读写延迟和吞吐量

Cassandra 作为一个数据库服务,其读写延迟和吞吐量是极为重要的性能指标,因此都需要配置告警规则。

  1. 读写延迟:建议当读写延迟超过一定阈值时触发告警规则。在 Cassandra 集群中,读写延迟是一个非常重要的性能指标,当读写延迟超过一定阈值时,往往会导致应用程序响应变慢,甚至造成数据丢失,因此需要对其进行监控和告警。在设置读写延迟的告警规则时,需要根据实际情况进行调整和优化。一般来说,可以设置较短的阈值,例如1秒或更短的时间。当读写延迟超过设定的阈值时,就会触发告警,通知相关人员及时处理问题。此外,也可以根据业务需求和数据负载进行调整,以便尽可能地满足应用程序的需求。

  2. 吞吐量:吞吐量反映了 Cassandra 服务当前单位时间内处理的请求数量,过高的吞吐量可能会导致系统进入不稳定状态,甚至出现宕机的情况。当 Cassandra 集群的吞吐量过高时,会导致系统资源的紧张,例如 CPU、内存和磁盘等资源可能会达到瓶颈,从而影响系统的稳定性和可用性。此外,过高的吞吐量还可能会导致数据的一致性问题,例如因写入冲突而产生的数据丢失等问题。因此,我们建议对 Cassandra 集群的吞吐量设置相应的告警规则,以便及时发现和处理过高的吞吐量问题。在设置告警规则时,需要根据实际情况进行调整和优化,例如根据业务需求和数据负载进行调整,以尽可能地满足应用程序的需求。

异常和错误

当 Cassandra 服务中出现异常和错误时,需要引起警惕。Cassandra 是一个分布式的数据库系统,异常和错误可能会对数据的一致性和可用性造成很大影响,因此需要对其进行监控和处理。

我们推荐对超时请求、失败请求以及 Dropped Message 三种异常和错误情况配置告警规则。这些异常和错误可能会影响 Cassandra 集群的可用性和性能,因此需要对其进行监控和处理。

  1. 超时请求:当 Cassandra 服务无法在指定的时间内响应请求时,就会出现超时请求的情况。超时请求可能会导致客户端无法获取所需的数据,影响系统的可用性和性能。因此,我们建议对超时请求进行监控,并设置相应的告警规则,以便及时发现和处理问题。

  2. 失败请求:当 Cassandra 服务无法成功完成请求时,就会出现失败请求的情况。失败请求可能会导致数据的不一致性,影响系统的可用性和性能。因此,我们建议对失败请求进行监控,并设置相应的告警规则,以便及时发现和处理问题。

  3. Dropped Message:Cassandra 集群中的消息可能会丢失,例如由于网络问题或节点故障等原因。这些丢失的消息可能会导致数据的不一致性,影响系统的可用性和性能。因此,我们建议对 Dropped Message 进行监控,并设置相应的告警规则,以便及时发现和处理问题。

JVM 相关

我们推荐对 Cassandra 服务中 GC 的时间占比配置告警规则。频繁的 GC 操作可能会对应用程序的性能产生很大影响,因此需要对其进行监控和处理。

在 Cassandra中,GC(Garbage Collection)是一项重要的操作,用于回收无用的内存。当 GC 操作频繁出现时,可能会占用大量的 CPU 时间,影响系统的性能和可用性。因此,我们建议对 Cassandra 服务中 GC 的时间占比进行监控,并设置相应的告警规则,以便及时发现和处理问题。

在设置告警规则时,需要根据实际情况进行调整和优化。一般来说,可以设置较短的 GC 时间占比阈值,例如10%或更短的时间。当 GC 时间占比超过设定的阈值时,就会触发告警,通知相关人员及时处理问题。

监控体系搭建

自建 Prometheus 监控

目前广泛采用的 Cassandra 监控方案主要是基于 JMX 的监控方案。用户可以选择自行编写或者从开源社区选择合适的 Agent,然后在 Cassandra 服务启动时挂载对应的 Agent,实现对 Cassandra 集群的监控。

在挂载了对应的 agent 之后,用户需要在自建的 Prometheus 中注册服务,然后基于 Grafana 等工具定制 Cassandra监控大盘。

上在自建 Cassandra 监控方案中,可能会遇到一些问题和挑战。以下是一些可能会出现的问题和挑战:

  1. 社区的 Agent 质量良莠不齐:在开源社区中,有很多 Cassandra 监控 Agent 可供选择。但这些 Agent 质量和性能可能不尽相同。有些 Agent 可能存在 Bug 或性能问题,可能会影响 Cassandra 集群的性能和可用性。

  2. 指标缺乏解释:在监控 Cassandra 时,需要监控很多指标。但是,这些指标的含义和解释可能并不清晰,需要运维人员对其进行解释和理解。如果缺乏指标的解释,可能会导致运维人员对 Cassandra 集群的状态和性能理解不全面,无法及时发现问题。

  3. 自建的大盘不够专业:在自建 Cassandra 监控大盘时,需要对数据进行处理和可视化。但是,如果缺乏专业的技术和工具,可能会导致自建的大盘不够专业,无法满足运维人员的需求。

为了避免这些问题和挑战,我们推荐使用阿里云可观测监控 Prometheus 版去监控 Cassandra 数据库,真正做到开箱即用,一键集成。

可观测监控 Prometheus 版

目前仅 Prometheus 实例 for ECS 类型实例支持该组件接入,用户需要将 VPC 实例接入可观测监控 Prometheus 版。具体操作,请参见 Prometheus实例 for ECS。

Prometheus实例 for ECS:https://help.aliyun.com/document_detail/274450.htm#concept-1062555

登录 Prometheus 控制台。在页面左上角选择目标地域,选择 VPC 的 Prometheus 监控实例,在集成中心点击 Cassandra 组件的安装。

在这里插入图片描述

根据提示完成组件的安装步骤,在安装过程中需要用户自行下载和部署 JMX Agent(已提供 Agent 的下载链接)。

在这里插入图片描述

阿里云提供的 Cassandra 监控中采集了大量的指标,用户点击 Cassandra 卡片之后可以查看。

在这里插入图片描述

此外,提供了专业的大盘和内置的告警规则,来达到开箱即用的目的。

在这里插入图片描述
在这里插入图片描述

参考链接:

[1] https://www.cloudwalker.io/2020/05/17/monitoring-Cassandra-with-prometheus/

[2] https://www.datadoghq.com/blog/how-to-monitor-Cassandra-performance-metrics/

[3] https://www.datadoghq.com/blog/how-to-collect-Cassandra-metrics/

[4] https://docs.datadoghq.com/integrations/Cassandra/

[5] https://www.jianshu.com/p/cc619b5bccf6

[6] https://www.jianshu.com/p/684a4a1715e4

[7] https://www.jianshu.com/p/8cf836a55a68

点击此处,了解更多产品详情

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/44379.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu录屏软件Kazam

1. 安装 1.1. 桌面右键“打开终端” 1.2. 安装kazam这款软件。 sudo apt-get install kazam 2. 使用 2.1. 安装后打开,我们看看这款软件界面还是很友好很简洁的。 2.2. 除了录像我们还可以截图,也可以选择全屏、窗口、区域的方式录制。 2.3. 如果要录…

构建自己的ChatGPT:从零开始构建个性化语言模型

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

【Unity2D】设置一物体默认在其他物体之上不被遮挡

比如我想让机器人显示在箱子的前面。 点击箱子,将其层级设置在机器人的后面。 即修改箱子的Order in Layer 在机器人之后 物体默认的Order in Layer 都是0 ,将箱子的Order in Layer修改为-1即可 这样将确保先绘制机器人,然后绘制箱子。这样…

【小黄碎碎念】如何解析和替换字符串中的 Markdown 文本?正则表达式与 flexmark-java 库

前言 本周,笔者将之前的基于 Servlet 的个人博客项目进行了迭代,基于 SpringBoot SpringMVC Mybatis Redis 进行实现。额外实现密码的明文加密处理(加盐算法)、修改随笔、随笔主页等功能,并将 session 存储到 Redis…

App测试中ios和Android的区别

1、Android长按home键呼出应用列表和切换应用,然后右滑则终止应用; 2、多分辨率测试,Android端20多种,ios较少; 3、手机操作系统,Android较多,ios较少且不能降级,只能单向升级&…

ffmpeg中filter_query_formats函数解析

ffmpeg中filter_query_formats主要起一个pix fmt引用指定的功能。 下下结论&#xff1a; 先看几个结构体定义&#xff1a; //删除了一些与本次分析不必要的成员 struct AVFilterLink {AVFilterContext *src; ///< source filterAVFilterPad *srcpad; ///<…

Feign远程调用如何携带form url

这是一个需要携带参数在form url上的请求&#xff0c;正常调用方式是这样的 响应&#xff1a; 在Feign中&#xff0c;应该怎么调用呢?? 定义OpenFeignClient接口 FeignClient(value "client-service", url "http://127.0.0.1/api") public interface…

pytorch工具——认识pytorch

目录 pytorch的基本元素操作创建一个没有初始化的矩阵创建一个有初始化的矩阵创建一个全0矩阵并可指定数据元素类型为long直接通过数据创建张量通过已有的一个张量创建相同尺寸的新张量利用randn_like方法得到相同尺寸张量&#xff0c;并且采用随机初始化的方法为其赋值采用.si…

记一次简单的MySql注入试验

试验环境&#xff1a; 1.已经搭建好的php服务器&#xff0c;并可以通过访问到localhost/index.php&#xff1b; 2.已经安装好数据库&#xff0c;并创建表test&#xff0c;表内有name、age等字段&#xff0c;并随便创建几个假数据用于测试&#xff1b;如图&#xff1a; 开始测…

万向节死锁

要理解万向节死锁的产生原因&#xff0c;首先要理解欧拉角变换&#xff0c;欧拉角变换是基于最初始的坐标进行变换而非变换后的坐标进行变换。 欧拉角变换需要空间中的三个角&#xff08;即变换后每个轴的偏移量&#xff09;&#xff0c;另外还有每个轴的变换顺序。值得注意的…

安装:【vue】npm install -g @vue/cli出现错误

安装Vue脚手架&#xff0c;cli就是Command Line Interface 命令行接口 工具 进行到npm install -g vue/cli这一步出现错误&#xff0c;操作步骤如下&#xff1a; 1.通过 wins打开开始栏的搜索框&#xff0c;输入cmd&#xff0c;管理员身份运行 2.先下载node.js 不知道有没有…

应用案例 | 实现第三方控制系统下HART智能设备的集中管理与维护

一 背景 在过程工业向数字化转型的过程中&#xff0c;设备管理系统扮演者着关键的角色——帮助企业集中管理和监控现场设备&#xff0c;并实现全面的设备管理和维护。通过实时监测和控制设备的运行状态、性能和健康状况&#xff0c;设备管理系统能够提前发现设备故障、减少生产…

Transformer+医学图像最新进展【2023】

Transformer主要用于自然语言处理领域。近年来,它在计算机视觉(CV)领域得到了广泛的应用。医学图像分析(MIA,Medical image analysis)作为机器视觉(CV,Computer Vision)的一个重要分支,也极大地受益于这一最先进的技术。 机构:新加坡国立大学机械工程系、中山大学智能系…

链动2+1营销系统开发模式深度解析

链动21模式其实是一种针对快消品行业的营销模式&#xff0c;主要逻辑就是用薄利多销丰厚返利的方式来吸引客户&#xff0c;同时快速裂变团队。 这个模式的玩法也很简单&#xff0c;只有代理和老板两种身份&#xff0c;代理身份是用户购买499元产品可以解锁&#xff0c;同时享受…

es通过rest接口_search、_delete_by_query查询与删除数据

1、rest接口查询数据 rest查询: http://localhost:9200/index_name/_search 查询表达式&#xff1a; {"query": {"wildcard": {"accountID": {"value": "v*"}}} }postman请求截图&#xff1a; 2、使用Rest接口删除数据 …

Mysql表的查找进阶

重点细节知识&#xff1a;NULL是表示表里这个格子是空着的&#xff0c;NULL参与各种运算都是->false&#xff0c;但是只有这个才是可以用NULL等于NULL成功的 <>。,看一下&#xff0c;下图的区别&#xff0c;下面的是连空也算上了 补充一个is 用法&#xff0c;和上面语…

python实现远程服务器的操作

前言 测试过程中经常会遇到需要将本地的文件上传到远程服务器上&#xff0c;或者需要将服务器上的文件拉到本地就行操作&#xff0c;以前安静经常会用到xftp工具。今天介绍一种python库Paramiko&#xff0c;可以帮助我们通过代码的方式进行完成对远程服务器的上传和下载操作。…

OpenCV for Python 实战(一):获取图片拍摄GPS地址并自动添加水印

Hello 我们在OpenCV每天的基础博客当中已经更新了很多了&#xff0c;那么今天我们就来结合前几天的内容。做一个获取属性然后添加对应属性的水印。那让我们赶快开始吧~ 文章目录 图片EXIFPython 获取EXIFexifread库使用方法转换成文字地址 添加水印cv2.putText() 每日总结 图片…

了解应用层

应用层 1. 概述2. 应用程序组织方式2.1 C/S方式2.1 P2P方式 3. 动态主机配置协议DHCP3.1 DHCP工作流程 4. 域名系统DNS4.1 域名结构4.2 域名分类4.3 域名服务器4.3.1 分类 4.4 DNS域名解析过程 5. 文件传输协议FTP5.1 FTP工作流程 6. 电子邮件系统6.1 邮件信息格式6.2 简单邮件…

信息的表示与处理 (深入理解计算机系统第二章)

刚学习这本书没多久&#xff0c;感觉里面讲的东西挺多的&#xff0c;前后的关联性比较强。学着后面的还需要看看前的才可以更好的理解。 2.1信息存储 无符号(unsigned) 编码是基于传统的二进制表示法的&#xff0c;表示大于或者等于零的数字。 二进制补码(twos-complement)编…