摘要

最开始做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. [LeetCode] My Calendar II 我的日历之二

    Implement a MyCalendarTwo class to store your events. A new event can be added if adding the event w ...

  2. pyqt5 QGraphicsView颜色动画问题(不兼容,运行不了动画)

    初学动画.无敌踩坑,资料真的是太少了.....本坑是一个大坑,只有解决方法,但实质原因仍不清楚 在一篇资料中了解到我们可以通过QGraphicsView来实现动画QPropertyAnimation ...

  3. PHPCMS v9.6.0 任意文件上传漏洞分析

    引用源:http://paper.seebug.org/273/ 配置了php debug的环境,并且根据这篇文章把流程走了一遍,对phpstorm的debug熟练度+1(跟pycharm一样) 用户 ...

  4. python3爬取女神图片,破解盗链问题

    title: python3爬取女神图片,破解盗链问题 date: 2018-04-22 08:26:00 tags: [python3,美女,图片抓取,爬虫, 盗链] comments: true ...

  5. CodeForces - 724G:Xor-matic Number of the Graph

    两点之间的任意路径都可表示为  随便某一条路径xor任何多个环, 然后可以用线性基来做,这样不会重复的, 另外必须一位一位的处理,xor是不满足结合律的 #include<cstdio> ...

  6. Codeforces Round #460 D. Karen and Cards

    Description Karen just got home from the supermarket, and is getting ready to go to sleep. After tak ...

  7. [BZOJ]1069: [SCOI2007]最大土地面积

    题目大意:给出二维平面上n个点,求最大的由这些点组成的四边形面积.(n<=2000) 思路:求出凸包后旋转卡壳枚举对踵点对作为四边形的对角线,枚举或二分另外两个点,复杂度O(n^2)或O(nlo ...

  8. ●BZOJ 3545 [ONTAK2010]Peaks(离线)

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3545 http://www.lydsy.com/JudgeOnline/problem.ph ...

  9. 【Bzoj 1835 基站选址】

    基站选址的区间里隐藏着DP优化的机密…… 分析:       不论是做过乘积最大还是石子合并,或者是其他的入门级别的区间DP题目的人呐,大米并认为读题后就能够轻松得出一个简洁明了的Dp转移方程.    ...

  10. c语言3种链接属性: 外部(external), 内部(internal),无设置(none)

    c语言中,多个文件组合的时候,有可能标示名相同,那么这个时候编译器如何判别的呢?    c语言中有3种链接属性: 外部(external), 内部(internal),无设置(none)    外部( ...