zoukankan      html  css  js  c++  java
  • cassandra 监控方案评估

    摘要

    最开始做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/

  • 相关阅读:
    page load时执行JavaScript
    解决Postgres无法连接的问题
    Linux环境设置IP及关闭防火墙
    解决VisualStudio无法调试的问题
    【PostgresSQL】同时更新两个表
    更改系统键盘
    【SQLSERVER】How to check current pool size
    BZOJ 1070: [SCOI2007]修车
    BZOJ 1069: [SCOI2007]最大土地面积
    BZOJ 1068: [SCOI2007]压缩
  • 原文地址:https://www.cnblogs.com/stoneFang/p/6715299.html
Copyright © 2011-2022 走看看