转载

Cloud Insight 现在已经支持监控 Cassandra 啦!

Cassandra 是什么?

Apache Cassandra 以其可扩展性和容错分布式数据库系统而被人所熟知。Cassandra 起源于Facebook 最初创建于 Amazon Dynamo 和谷歌 BigTable 的一个项目,并从此成长为一个在苹果和 Netflix 等公司大量使用的开源系统。以下是一些 Cassandra 的关键属性:

  • 高扩展性和高可用性(Cassandra 集群是分散的,因此没有单点故障)
  • 可以近似线性的(集群扩大一倍,吞吐量扩大2倍)
  • 非常高的写入吞吐量和良好的读取吞吐量
  • 可调节的一致性和对复制的支持
  • 自然容纳(例如,时间序列数据)

拥有以上属性的 Cassandra 在中国之前的路走的不是很顺畅,几年前它还算是新兴产品,在稳定性和最佳实践上都没有有利的说服力,加之 Facebook 和 Twitter 等因考虑自己架构而放弃使用 Cassandra,改用 HBase 等其他数据库,还有在中国关于 Cassandra 的文章本来就少,不了解它的人也更不会去尝试,种种原因使得之前国内使用 Cassandra 没有呈现火的趋势。

但近几年随着其版本提升,应用实践增多,先后有 Instagram 迁移到 Cassandra,Facebook 部分项目放在 Cassandra 上,Cassandra 2015峰会上与会者人数超过6000人等事件,奥地利咨询公司 Solid IT 汇编的数据显示,2015 年 Cassandra 是除 MongoDB 外最受欢迎的的 NoSQL 数据库,也是世界上增长速度第三快的数据库系统。

Cloud Insight 现在已经支持监控 Cassandra 啦!

在 Apache Cassandra 的官网首页都写了现在全球已经有1500多个公司在使用:

Cassandra is in use at Constant Contact,CERN, Comcast, eBay, GitHub, GoDaddy,Hulu, Instagram, Intuit, Netflix, Reddit, The Weather Channel, and over 1500 more companies that have large, active data sets.

此外,专注于 Cassandra 的初创公司 DataStax 在13年获得了4500万美元的 D 轮融资,它的成功也代表着 Cassandra 巨大的市场空间,证明它能够处理大规模的在线应用程序,而且保证了性能的稳定性。

以上种种,促使众多软件开发者开始使用 Cassandra,同样滋生的还有支持Cassandra 性能监控的软件服务,例如国内的Cloud Insight ,就支持监控 Cassandra ,显示下图等指标。

Cloud Insight 现在已经支持监控 Cassandra 啦!

Cloud Insight 部分指标说明

通过 Cloud Insight ,你可以抓取并可以进行分析的指标有很多,本文只介绍一部分,更多指标见 Cloud Insight Cassandra :

  • 吞吐量,尤其是读写请求
  • 延迟,尤其是读写延迟
  • 磁盘使用情况,尤其是每个节点上的磁盘空间
  • 异常报错和超出,尤其是异常报错

通过 Cloud Insight ,你可以监控以上指标,按照喜好分门别类的设置自定义仪表盘,并依照这些指标分别配置预警,查看其产生的事件流,想想也是很美嗒。

吞吐量

  • cassandra.db.write_count
  • cassandra.db.write_operations
  • cassandra.db.read_operations

监视任何给定时间的查询速率,提供用户如何与 Cassandra 交互的图表。而且,由于 Cassandra 擅长处理大批量的写操作,所有你肯定要密切关注读取速率,警惕一些潜在问题或用户查询模式发生的显著变化。

Cassandra 很善于处理大量的写入操作,重点监控 Cassandra 写入指标,可以跟踪集群的总体活动水平,要留意任何异常尖峰或骤降,并对此进行进一步的调查。

延迟

  • cassandra.db.recent read latency_micros
  • cassandra.db.recent write latency_micros
  • cassandra.db.total range latency_micros
  • cassandra.db.total read latency_micros
  • cassandra.db.total write latency_micros

Cassandra 的读操作通常比写操作慢得多,因为读取涉及更多的 I/O。如果经常更新,那就可能跨越几个 SSTables,增加了读取的等待时间。因此,读取延迟是一个非常重要的指标,尤其是如果 Cassandra 查询是一个面向用户应用的数据服务。慢读取可以指出硬件或数据模型的问题,或者需要调整的参数,如压缩策略。

Cassandra 的写操作通常远远快于读操作,因为写请求在被知道前只需要记录在内存中,并追加到一个持久的提交日志里就算成功。具体的延迟水平将取决于你的使用情况。长期的慢写入就是系统性问题,这时可能需要将磁盘升级为速度更快的固态硬盘或检查一致性设置,(例如,设置一致性 EACH_QUORUM ,则需要地理上相距很远的数据中心之间的通信)。写操作指标任何一个突然的变化,都可能有问题,如网络问题或者变化使用模式(例如,数据库插入的大小发生显著增加的情况)。

磁盘

  • cassandra.db.load
  • cassandra.db.total disk space_used

监测所使用的每个节点的磁盘可以提醒群集不平衡或资源约束。根据自己的 Cassandra 集群的使用和所选择的压缩策略,可以监视磁盘利用率,以确定什么时候应该增加更多的节点群集,以确保 Cassandra 总是有足够的空间来运行压实。

异常报错和超出

  • cassandra.db.exception_count
  • cassandra.internal.currently blocked tasks
  • cassandra.internal.total blocked tasks

无论什么原因,当群集出现无法处理传入的请求流时,你需要立刻知道这个情况。一个窗口到出现潜在问题就会增加 Cassandra 抛出异常的数量,如超时异常,这反映了一个请求不完整的(但不是失败)处理 Cassandra 的数量。

另一种检测潜在问题是监测 Cassandra 的任务状态作为它的请求处理。Cassandra 每种类型的任务(例如,ReadStage 任务)都有传入任务队列,并分配了一定数量的线程来执行这些任务。如果所有线程都在使用,任务将在队列等待可用线程。任何时刻任务的队列的数量由 pending tasks 指标显示。一旦挂起的任务队列已满,Cassandra 将把当前阻塞作为 currently blocked,当然这些任务最终可能接受或执行。

如何监控 Cassandra

想要监控 Cassandra ,首先你要安装 Cloud Insight 探针,注册账号,一键复制:

CI_LICENSE_KEY= bash -c "$(curl -L https://download.oneapm.com/oneapm_ci_agent/install_agent.sh)"   

安装成功后在 web 上会有一个应用产生,接下来就是配置 Cassandra 监控,Cloud Insight 监控 Cassandra 是通过 JMX 来获取指标,详情见JMX 远程监控,即首先要开启 JMX 监控,配置好 JMX 之后找到配置文件所在的目录,例如 Linux 系统,配置文件在 /etc/oneapm-ci-agent/conf.d 里,复制一份 cassandra.yaml ,配置文件中需要修改 host 和 port (JMX 监控的端口),使 Cloud Insight Agent 可以与 Cassandra 通信:

instances:     - host: localhost     port: 7199     user: username     password: password     name: cassandra_instance     #trust_store_path: /path/to/trustStore.jks # Optional, should be set if ssl is enabled     #trust_store_password: password     #java_bin_path: /path/to/java #Optional, should be set if the agent cannot find your java executable  # List of metrics to be collected by the integration  init_config:     conf:     - include:         domain: org.apache.cassandra.db         attribute:           - BloomFilterDiskSpaceUsed           - BloomFilterFalsePositives           - BloomFilterFalseRatio           - Capacity           - CompressionRatio           - CompletedTasks           - ExceptionCount           - Hits           - RecentHitRate           - RowCacheRecentHitRate           - KeyCacheRecentHitRate           - LiveDiskSpaceUsed           - LiveSSTableCount           - Load           - MaxRowSize           - MeanRowSize           - MemtableColumnsCount           - MemtableDataSize           - MemtableSwitchCount           - MinRowSize           - ReadCount           - Requests           - Size           - TotalDiskSpaceUsed           - TotalReadLatencyMicros           - TotalWriteLatencyMicros           - UpdateInterval           - WriteCount           - PendingTasks       exclude:         keyspace: system         attribute:           - MinimumCompactionThreshold           - MaximumCompactionThreshold           - RowCacheKeysToSave           - KeyCacheSavePeriodInSeconds           - RowCacheSavePeriodInSeconds           - PendingTasks           - Scores           - RpcTimeout     - include:         domain: org.apache.cassandra.internal         attribute:           - ActiveCount           - CompletedTasks           - CurrentlyBlockedTasks           - TotalBlockedTasks     - include:         domain: org.apache.cassandra.net         attribute:           - TotalTimeouts 

重启 Cloud Insight ,使配置生效。也可以通过执行 Info 命令,来验证配置是否成功:

sudo /etc/init.d/oneapm-ci-agent  restart   sudo /etc/init.d/oneapm-ci-agent  info   

当出现以下信息,则代表安装成功:

Checks   ======  [...]  cassandra   ---------   - instance #0 [OK]   - Collected 8 metrics & 0 events 

安装成功后,过2分钟你就可以看到 Cassandra 的指标数据,你可以通过自定义仪表盘设置你所关心的数据,可以监控每一个 Cassandra 关键指标。通过设置标签,对所有主机进行分组展示,也可以从炫酷的拓补图上看到哦。你还可以设定一个告警策略,一旦指标数据有异常,可以迅速让团队成员知道,例如请求吞吐量在很短的时间内下降到一定值就可以做一个报警策略。

总结

如果你在使用 Cassandra(如果现在没有使用那就赶紧用起来),想要让关键指标可视化,能够自定义设置仪表盘,把你想看的指标放在一起;还可以设置告警,一旦数据有任何异常都可以通知团队成员,那当仁不让的要选Cloud Insight 了。此外,使用它任何内部事件都会有事件流记录下来,例如报警策略的设置修改,关闭,开启,探针的启动等。功能如此强大,还不快来体验?

正文到此结束
Loading...