write down,forget

使用Packetbeat来监控Cassandra

<Category: Beats, cassandra> 查看评论

Cassandra是一个优秀的NOSQL数据库,支持kv和列式存储,并且提供了CQL的类似SQL的查询语法,使用起来非常方便,国内外有很多公司都在使用,今天主要介绍如何使用Packetbeat来对Cassandra进行监控,Packetbeat是Elastic开源的网络流量实时监控工具,目前已支持了一些流行的应用软件,如MongoDB、Redis、MySQL等,当然扩展起来也是非常方便的,Cassandra协议是我最近刚加上去的。

Packetbeat是一个Go语言的程序,所以支持跨平台,并且没有环境依赖的问题,不同的平台会有不同的包提供下载。
使用Packetbeat来监控应用服务有一个好处就是不要对应用做任何修改,完全无侵入式,如果大家了解过APM,常见的APM监控探测方式一般是以应用启动的时候加载一个探针让探针来动态获取运行时信息,而走网络请求抓包的方式连服务都不用重启,当然更不需要修改你程序一行代码。

下载地址:
https://www.elastic.co/downloads//

这里以我的Mac环境为例,下载 beat1 版本的 Mac 发行版,然后解压。

解压之后,打开配置文件:packetbeat.yml,可以看到Cassandra相关的配置节点

如果没有特殊设置,保持默认即可,如果你的程序在传输层使用了压缩,可以配置参数compressor,目前仅支持snappy,另外默认所有的请求都会被捕捉,势必会产生大量的日志,如果你知道哪些请求类型你不关心,可以设置ignored_ops来添加需要过滤的操作类型。

执行命令启动Packetbeat,注意:需要使用sudo来获取root权限进行网络抓包

如果一切正常,应该就可以看到输出了Cassandra模块加载的信息,如下

Packetbeat启动之后,我们就可以对Cassandra服务端发送一些测试命令来看看是否能够截获到
今天演示的所有的程序都运行在Mac本机,所以我们这里再启动一个Cassandra服务端,Cassandra解压运行就可以了,比较简单。

我们使用Cassandra自带的命令行工具来支持CQL请求

我这里准备了几个测试命令,拷贝进去直接执行就行了

最末尾还有3个错误的命令,按道理应该也是可以正确捕捉到才对。

理论上,Packetbeat已经帮你把数据发送到Elasticsearch里面了,我们执行查询看一下。

恩,看到数据了,不过这样分析起来比较费劲,还好我们有Kibana,
Packetbeat为常见协议准备了一些Dashboard,可以直接导入到Kibana里面使用,这里我们打开Kibana,看看我们内置的Dashboard。
fireshot-capture-18-packetbeat-cassandra

可以很方便的看到当前请求的执行情况,每秒请求数,请求类型,返回类型,keyspace使用情况,包括详细的错误日志和事件日志,对于分析Cassandra的使用情况进行性能诊断和故障分析都是非常有用的。

本文来自: 使用Packetbeat来监控Cassandra