摘要

最开始做cassandra monitor 方案的选型时,主要是从cassandra 本身入手,后来发现cassandra运行在JVM上,所有的metrics都是通过JMX 暴露出来。所以又可以使用一些通用的Java Application 的监控方案,作者在调查了很多的实现方案后,最终将范围缩小在graphite,newrelic,opscenter三种解决方案。本文只给出各自的优劣势,具体选用哪种,相信读者自有判断。

想了解更多cassandra 知识请访问 http://www.webpersonaldeveloper.cn

opscenter VS graphite VS newrelic

  1. 环境部署
  2. 收集的metrics对比
  3. 扩展功能
  4. 开发维护成本
  5. cassandra 版本限制
  6. 总结

环境部署

opscenter:

从datastax 下载opscenter,install完了以后,就可以在opscenter 的UI 上面安装cassandra cluster,然后在cluster 上面安装opscenter agent.cassandra 和agent可以在opscenter 的UI上面安装,也可以在各个Node上面安装

graphite:

主要有三部分构成graphite 绘图,Carbon作为缓存,Whisper存储数据。此外通常需要使用grafana 来作为UI显示,因为graphite绘图太丑了,功能也有限。graphite 环境搭建及配置及其复杂,需要安装很多的插件,所以版本适配也很麻烦。不过有了docker以后一切变得简单了。

https://github.com/kamon-io/docker-grafana-graphite

(可以fork这个repo然后按照你的需求更改)

部署好graphite server,还需要在每个cassandra 配置发送

新建一个metrics.yaml

graphite:
period: 30
timeunit: 'SECONDS'
prefix: 'cassandra-cluster-prefix.node1'
hosts:
 - host: 'xxx'
   port: 2003
predicate:
  color: "white"
  useQualifiedName: true
  patterns:
    - "^org.+"
    - "^jvm.+"
    - "^java.lang.+"

然后在cassandra-env.sh 配置JVM启动项

JVM_OPTS="$JVM_OPTS -Dcassandra.metricsReporterConfigFile=metrics.yaml"

newrelic:

只用配置下newrelic 的config,然后run plugin

https://github.com/threelegs/newrelic-plugins

warning

newrelic cassandra 的plugin很多年没有更新了,所以应该支持Cassandra 2.x版本,不支持Cassandra 3.x的版本。

不过自己开发也很简单,只是有些metrics 名字,包名换了,可以自己fork下来进行修改。

opscenter=newrelic>graphite(即使使用docker,graphite还是部署最复杂的一个)

收集的metrics对比

cassandra metrics

cassandra metrics 主要就是JMX 暴露出来的MBean,包括Read/Write request,latency.还有一些是compaction task等信息。我们通过JConsole 工具就能够查看,不过是JConsole 界面过于丑陋,以及无法保存历史数据,绘制图形也不美观等种种缺点导致我们不去使用它。

opscenter=graphite=newrelic cassandra metrics 三种收集方案都可以收集到,没什么差异。

os metrics

OS metrics 包括cpu,内存,disk使用情况。

opscenter集成在一起,看起来很方便;graphite需要使用第三方插件collectd进行收集;newrelic 同样也可以。

opscenter=newrelic>graphite

application metrics

cassandra 是数据库服务,但是作为monitor,通常需要查看整体情况。client请求出现问题了,我们可能不仅需要分析数据库,还需要分析application server.当然希望能够将application server 的信息与cassandra整合到同一页面而不是多个监控平台。opscenter 没法做到,graphite 可以,newrelic 可以

graphite=newrelic>opscenter

扩展功能

历史数据保存

opscenter、graphite 都是支持参数配置保存多少天的。

newrelic 需要钱才可以保存更多天。

权限管理

opscenter支持admin对权限进行管理,但是所有的metrics作为一个整体,无法控制让某些用户只看某部分metrics

https://docs.datastax.com/en/latest-opsc/opsc/configure/opscManageUsers.html

graphite 支持organization,不同的organization可以有不同的dashboard.organization中可以添加user,user 角色有四种admin,editor,read only editor,view. 不同的用户在不同的organization中可以有不同的角色。

newrelic 支持admin,user,restricted user三种,不同的用户可以看到不同的内容。

开发维护成本

opscenter 不需要开发,维护如果使用datastax 商业版的cassandra,交license费用即可。其他就是opscenter server的费用

graphite开源,但是环境部署需要时间和金钱,另外,graphite 有很多的插件构成整个monitor服务,这些插件的维护需要成本。在作者搭建过程就遇到很多的问题。比如多个server的数据聚合问题,读取数据不正确。这些都是需要运营投入到更多的时间的。要是系统不稳定,多投入一个运营,对于公司来说也是一笔不小的投入。

newrelic 有免费版,但是功能受限,像上面提到的历史数据保存,只能保存一天。收费版就不便宜了。但是newrelic有个独有的好处,是SaaS服务。当需要监控的数据规模增多的时候,不用自己构建监控集群。在这点上,opscenter,graphite 则需要构建cluster 环境

金钱上 graphite>opscenter>newrelic

人力上 newrelic>opscenter>graphite

cassandra 版本限制

opscenter最新版本只支持cassandra opensource 2.1,datastax enterprise 4.8,截止目前,cassandra opensource 已经release 3.7了。所以opscenter 版本比较滞后。graphite 是通用版本,可支持最新版本。

newrelic 是plugin形式,需要根据cassandra 更新的metrics来更新plugin 发送的metrics。

graphite=newrelic>opscenter

总结

无论从监控的metrics收集还是监控工具本身的管理来说,三种方案都能提供对应的解决方案。在其他方面略有差异

1.opscenter 很容易部署,另外集成了对cassandra 的常用操作。无需再登录到cassandra server 上,使用命令行来操作了。他本身不仅仅是个monitor工具,还是个cassandra的操作UI界面。opscenter 有个致命的缺点,cassandra版本受限,如果你想使用最新的cassandra无法实现,这点上觉得是致命的缺陷,是因为一个辅助的监控工具,而影响到主要的数据库功能。

2.graphite

开源是graphite的优势,社区活跃是支撑。有人力能够投入尽管选用此方案。

3.newrelic 没有什么技术问题需要去解决,花钱解放生产力,如果监控的内容不是产品的核心,也未尝不是一种好方案

以上仅作者意见,只作参考

参考

http://blog.ailms.me/2014/08/17/note-about-graphite-arch.html

http://docs.grafana.org/troubleshooting/

cassandra 监控方案评估的更多相关文章

  1. 【译】Kubernetes监控实践(2):可行监控方案之Prometheus和Sensu

    本文介绍两个可行的K8s监控方案:Prometheus和Sensu.两个方案都能全面提供系统级的监控数据,帮助开发人员跟踪K8s关键组件的性能.定位故障.接收预警. 拓展阅读:Kubernetes监控 ...

  2. 移动端性能监控方案Hertz

    移动端性能监控方案Hertz 吴凯 瑞利 富强 徐宏 ·2016-12-19 16:10 性能问题是造成App用户流失的罪魁祸首之一.App的性能问题包括崩溃.网络请求错误或超时.响应速度慢.列表滚动 ...

  3. 字节跳动 iOS Heimdallr 卡死卡顿监控方案与优化之路

    点这里申请 本文主要介绍Heimdallr对卡死.卡顿异常的监控原理,并结合长时间的业务沉淀发现的问题进行不断迭代和优化,逐步实现全面.稳定.可靠的历程. 作者:字节跳动终端技术--白昆仑 前言 卡死 ...

  4. Kubernetes 集群和应用监控方案的设计与实践

    目录 Kubernetes 监控 监控对象 Prometheus 指标 实践 节点监控 部署 Prometheus 部署 Kube State Metrics 部署 Grafana 应用如何接入 Pr ...

  5. 前端性能监控方案window.performance 调研(转)

    1. 业界案例 目前前端性能监控系统大致为分两类:以GA为代表的代码监控和以webpagetest为代表的工具监控. 代码监控依托于js代码并部署到需监控的页面,手动计算时间差或者使用浏览器的的API ...

  6. OpenStack 虚拟机监控方案确定

    Contents [hide] 1 监控方案调研过程 1.1 1. 虚拟机里内置监控模块 1.2 2. 通过libvirt获取虚拟机数据监控. 2 a.测试openstack的自待组件ceilomet ...

  7. Redis监控方案

    Redis 监控最直接的方法当然就是使用系统提供的 info 命令来做了,你只需要执行下面一条命令,就能获得 Redis 系统的状态报告. redis-cli info 内存使用 如果 Redis 使 ...

  8. 斌哥的 Docker 进阶指南—监控方案的实现

    过去的一年中,关于 Docker 的话题从未断过,而如今,从尝试 Docker 到最终决定使用 Docker 的转化率依然在逐步升高,关于 Docker 的讨论更是有增无减.另一方面,大家的注意力也渐 ...

  9. 一张表搞懂各种 Docker 监控方案 - 每天5分钟玩转 Docker 容器技术(86)

    前面我们已经介绍了ps/top/stats.Sysdig.Weave Scope.cAdvisor 和 Prometheus 多种容器监控工具和方案,是时候做一个比较了.下面将从五个方面来对比它们之间 ...

随机推荐

  1. jqgrid表格插件总结

    jqgrid整了好多天,最重要得是理清思路,故做下记录,让大家少走弯路 1  配置环境,下载几个包导入(自行百度),从官网上下载一个案例导入,可以简单显示一个静态的画面(注意json包之间的兼容性) ...

  2. 机器学习基石:02 Learning to Answer Yes/No

    Perceptron Learning Algorithm 感知器算法, 本质是二元线性分类算法,即用一条线/一个面/一个超平面将1,2维/3维/4维及以上数据集根据标签的不同一分为二. 算法确定后, ...

  3. 实验吧_密码忘记了(vim编辑器+代码审计)&天网管理系统(php弱比较+反序列化)

    密码忘记了 一开始尝试了各种注入发现都无效,在网页源码中找到了admin 的地址,输入地址栏发现并没有什么有用的信息,随便输个邮箱,网页返回了一个地址 ./step2.php?email=youmai ...

  4. [POI 2006]OKR-Periods of Words

    Description 题库链接 定义 \(A\) 串为 \(B\) 串的循环串,当且仅当 \(A\) 是 \(B\) 的前缀(不包括 \(B\) 本身),且 \(B\) 为连续的 \(A\) 串拼接 ...

  5. 计蒜客NOIP模拟赛5 D1T1 机智的 AmyZhi

    那年一个雨季,AmyZhi 在校门外弯身买参考书. 这时 SiriusRen 走过来,一言不合甩给她一道“自认为”很难的题: --------------- 给你一个数字 NN(NN 的范围是 11  ...

  6. [USACO07NOV]牛继电器Cow Relays

    题目描述 给出一张无向连通图,求S到E经过k条边的最短路. 输入输出样例 输入样例#1: 2 6 6 4 11 4 6 4 4 8 8 4 9 6 6 8 2 6 9 3 8 9 输出样例#1: 10 ...

  7. 【LSGDOJ 1852】青蛙的烦恼 DP

    题目描述 池塘中有n片荷叶恰好围成了一个凸多边形,有一只小青蛙恰好站在1号荷叶上,小青蛙想通过最短的路程遍历所有的荷叶(经过一个荷叶一次且仅一次),小青蛙可以从一片荷叶上跳到另外任意一片荷叶上. 输入 ...

  8. bzoj2669[cqoi2012]局部极小值 容斥+状压dp

    2669: [cqoi2012]局部极小值 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 774  Solved: 411[Submit][Status ...

  9. Java的数组排序

    对数组进行排序 使用到的排序算法有: 1 选择排序   2 冒泡排序   3 插入排序    4 JavaAPI提高排序算法 选择排序的原理: 1 将数组中每个元素与第一个元素比较,如果这个元素小于第 ...

  10. input type="tel" 数字输入框显示圆点

    最近开发中遇到一个这样的需求,要求input输入框在手机端出现数字键盘的同时显示圆点,试过各种方法都不太理想, 最终经过查阅大量资料后,终于实现了需求. ●我们一般的密码输入框是这样的: <in ...