全部产品
Search
文档中心

应用实时监控服务ARMS:如何使用Prometheus监控Cassandra

更新时间:Aug 09, 2023

本文介绍如何使用Prometheus监控Cassandra。

前提条件

已创建ECS类型的Prometheus实例,具体操作,请参见Prometheus实例 for ECS

使用限制

目前仅Prometheus实例 for ECS类型实例支持该组件接入。

步骤一:部署Cassandra JMX Agent

  1. 您需要根据Cassandra的版本下载合适的Cassandra JMX Agent到Cassandra所在的ECS内。

  2. 解压缩下载的Agent压缩包到MCAC_ROOT,修改cassandra-env.sh文件,追加以下内容。

    MCAC_ROOT=/path/to/directory
    JVM_OPTS="$JVM_OPTS -javaagent:${MCAC_ROOT}/lib/datastax-mcac-agent.jar"
    重要

    Cassandra JMX Agent给Promethues暴露的数据抓取端口为9103,如果需要修改为其他的端口,则修改${MCAC_ROOT}/config/collectd.conf.tmpl文件中的如下图所示的内容为想要提供的端口。

    we
  3. 完成上述配置之后,重新启动Cassandra应用程序,在ECS服务器上执行命令curl localhost:{jmx端口}/metrics,查看是否正常有数据返回,如果有数据返回,则说明Cassandra JMX Agent已经正确安装。

    el

步骤二:接入Cassandra监控

功能入口

功能入口一:集成中心

  1. 登录ARMS控制台
  2. 在左侧导航栏选择Prometheus监控 > Prometheus实例列表,进入可观测监控 Prometheus 版的实例列表页面。
  3. 单击目标Prometheus实例名称,进入集成中心页面。

功能入口二:接入中心

  1. 登录ARMS控制台

  2. 在左侧导航栏单击接入中心,然后在组件应用区域单击Cassandra卡片的添加,然后在弹出的页面根据控制台指引完成组件接入。

接入Cassandra

这里以从集成中心入口为例,介绍接入Cassandra组件的操作,具体步骤如下。

  1. 接入Cassandra组件。

    • 若您初次安装Cassandra类型的组件:

      在集成中心页面单击未安装区域Cassandra组件卡片的安装

      说明

      单击该卡片,在弹出的面板中您可以看到关于Cassandra监控常见的指标和大盘缩略预览效果图。这里列举出的指标只是Cassandra常见的一部分关键指标信息,具体请参见下文关键指标说明,待您安装Cassandra成功后,您将会查看到可观测监控 Prometheus 版监控Cassandra的实际指标详情。

    • 若您已安装Cassandra类型的组件,需要再次添加该组件:

      在集成中心页面单击已安装区域Cassandra组件卡片的添加

  2. STEP2区域的配置页签配置相关参数,并单击确定,完成组件接入。

    参数

    说明

    exporter名称

    当前Exporter名称。

    • 仅可包含小写字母、数字和短划线(-),且短划线不可出现在开头或结尾。

    • 名称具有唯一性。

    ECS标签(服务发现)

    部署Exporter的ECS标签和标签值,Prometheus通过该标签进行服务发现,key取值: acs:emr:nodeGroupType或acs:emr:hostGroupType。

    ECS标签值

    可参考ECS标签值,默认是CORE、MASTER,多个值之间使用半角逗号(,)来分隔。

    JMX Agent监听端口

    Metric的监听端口,以便可观测监控 Prometheus 版访问这些端口获取监控数据。默认9103。

    metrics采集路径

    Prometheus采集Exporter的HTTP Path,使用默认值/metrics。

    metrics采集间隔(秒)

    可观测监控 Prometheus 版采集Cassandra监控数据的时间间隔,默认30秒。

    说明

    STEP2区域的指标页签可查看监控指标。

    已接入的组件会显示在集成中心页面的已安装区域。单击该组件卡片,在弹出的面板中可以查看Targets、指标、大盘、告警、服务发现配置、Exporter等信息。集成中心的更多信息,请参见集成中心

    您还可以在Targets页签查看组件的状态。wr

步骤三:查看Cassandra监控大盘

通过监控大盘您可以查看可用性、客户端读写延迟和吞吐量、节点CPU/内存/硬盘占用率等监控数据,具体步骤如下。

集成中心页面单击已安装区域的E-MapReduce组件卡片,然后在弹出的对话框中单击大盘页签可以查看该组件的大盘略缩图和超链接,单击超链接进入阿里云Grafana页面,查看对应观测大盘。这里为您展示几个常见的大盘数据。

  • 集群/节点基础信息wd

  • 客户端读写延迟和吞吐量qs

  • 异常和错误zx

  • 缓存和布隆过滤器wf

  • 硬件资源使用wa

  • 存储占用详情sw

  • 线程池状态wd

  • JVM与垃圾回收ml

步骤四:配置监控告警

集成中心页面单击已安装区域的Cassandra组件卡片,然后在弹出的面板中单击告警页签,查看Cassandra的所有Prometheus告警规则。

可观测监控 Prometheus 版一键集成Cassandra Exporter,并提供开箱即用的专属监控大盘、告警,将诸多配置与操作实现白屏化,尽可能简化配置服务接入工作量。

可观测监控 Prometheus 版针对Cassandra热点指标提供了多个默认的Prometheus告警规则,常见的Cassandra告警规则预置为模板,帮助运维团队快速搭建起指标看板与告警体系。预置的Cassandra告警规则如下:

指标分类

指标名称

指标含义

节点状态

集群中宕机的节点比例

若该指标大于10,表示集群中存在节点宕机。

节点资源使用情况

节点的CPU使用率

若节点CPU使用率在过去5分钟内超过85%,表示CPU已达到瓶颈。

节点的内存使用率

若节点内存使用率超过85%,表示内存已达到瓶颈。

节点的硬盘使用率

若节点硬盘使用率超过85%,表示硬盘已达到瓶颈。

读写延迟和吞吐量

节点的读取延迟

若在过去1分钟节点读取延迟超过200ms,表示读取延迟已经较高。

节点的写入延迟

若在过去1分钟节点写入延迟超过200ms,表示写入延迟已经较高。

节点的读取吞吐量

若在过去1分钟内节点读取次数超过1000次,表示读取吞吐量已经较高。

节点的写入吞吐量

若在过去1分钟内节点写入次数超过1000次,表示写入吞吐量已经较高。

异常和错误

节点超时请求次数

若在过去1分钟内节点的超时请求次数超过10次,表示节点负载已经较重

节点失败请求次数

若在过去1分钟内节点的错误请求次数超过10次,表示节点负载已经较重。

节点Dropped Message

若在过去1分钟内节点的Dropped Message次数超过10次,表示节点负载已经较重。

JVM

GC时间占比

若在过去5分钟内节点的GC时间占比超过1%,表示垃圾回收过于频繁。

您还可以根据业务需求新增告警规则。创建Prometheus告警规则的具体操作,请参见Prometheus告警规则

关键指标说明

集群/节点基础信息

指标名称

关键级别

指标描述

指标说明

mcac_client_connected_native_clients

Major

CQL连接数

连接数过多会占用系统过多资源,导致客户端延迟变高。

mcac_table_live_disk_space_used_total

Major

cassandra占据的空间

该指标过高可能导致硬盘空间不足以及数据存取延迟增加。

mcac_table_snapshots_size

Recommand

cassandra快照文件大小

快照用于数据恢复,该指标过高可能导致硬盘空间不足从而无法存储下完整的快照。

collectd_uptime

Major

节点开机时间

该指标过高说明系统长期没有进行重启,存在漏洞的系统可能会带来安全隐患。

关键性能指标

指标名称

重要级别

指标描述

指标说明

mcac_table_read_latency

Critical

客户端读取数据的延迟

该指标过高会导致应用程序的读取速度变慢,影响用户体验。

mcac_table_write_latency

Critical

客户端写数据的延迟

该指标过高会导致应用程序的写入速度变慢,影响用户体验。

异常和错误

指标名称

重要级别

指标描述

指标说明

mcac_client_request_timeouts_total

Critical

超时的客户端请求

该指标过高,说明系统负载较高,会严重影响用户体验。

mcac_client_request_failures_total

Critical

出现异常的客户端请求

该指标过高,说明系统负载较高,会严重影响用户体验。

mcac_dropped_message_dropped_total

Critical

丢弃的消息

该指标过高,说明系统负载较高,会严重影响用户体验。

缓存和布隆过滤器

指标名称

重要级别

指标描述

指标说明

mcac_table_key_cache_hit_rate

Major

key_cache的命中率

该指标过低可能会导致应用程序的读取速度变慢,影响用户体验。

mcac_table_row_cache_hit_total

Major

row_cache的命中次数

该指标过低可能会导致应用程序的读取速度变慢,影响用户体验。

mcac_table_row_cache_miss_total

Recommand

row_cache未命中的次数

该指标过高可能会导致应用程序的读取速度变慢,影响用户体验。

mcac_table_row_cache_hit_out_of_range_total

Recommand

row_cache命中但还是去访问磁盘的次数

该指标过高可能会导致应用程序的读取速度变慢,影响用户体验。

mcac_table_bloom_filter_false_ratio

Major

布隆过滤器的误判率

当布隆过滤器误报比例过高时,会导致查询结果中有很多本来不存在的元素被判断为存在,从而浪费查询时间和资源。这会降低查询性能并增加查询成本。

CPU/内存/硬盘使用趋势

指标名称

重要级别

指标描述

指标说明

collectd_cpu_total

Critical

CPU的使用率

该指标过高说明系统负载较高,会导致客户端请求延迟过高,严重影响用户体验。

collectd_memory

Critical

内存的使用率

该指标过高说明系统负载较高,会导致客户端请求延迟升高,严重影响用户体验。

collectd_df_df_complex

Critical

硬盘的使用率

该指标过高说明硬盘可用空间不足,会导致数据无法正常持久化存储,有宕机的风险。

SSTable压缩

指标名称

重要级别

指标描述

指标说明

mcac_table_pending_compactions

Major

进行中的SSTable压缩任务

该指标过高说明系统负载较高,会导致客户端请求延迟升高,建议合理配置SSTable的压缩间隔。

mcac_table_compaction_bytes_written_total

Major

SSTable的压缩速率

该指标过低说明系统压缩速率较慢,会导致压缩任务累积,建议提高节点的硬件配置。

mcac_table_compression_ratio

Major

SSTable的压缩率

该指标过高说明压缩后的文件仍然过大,压缩没有达到预期的效果。

磁盘文件

指标名称

重要级别

指标描述

指标说明

mcac_table_live_ss_table_count

Major

SSTable的数量

该指标越高会导致硬盘占用过高并且读写延迟增加,需合理配置SSTable的压缩策略。

mcac_table_live_disk_space_used_total

Major

SSTable占用的硬盘空间

该指标越高会导致硬盘占用过高并且读写延迟增加,需合理配置SSTable的压缩策略。

mcac_table_ss_tables_per_read_histogram

Major

一次read操作需要读取的SSTable数量

该指标越高会导致客户端读取延迟增加。

mcac_commit_log_total_commit_log_size

Major

Commit Log占用的硬盘空间

该指标过高会导致硬盘空间不足,读写性能下降以及数据恢复时间增加。

mcac_table_memtable_live_data_size

Major

MemTable占用的空间

该指标过高会导致数据写入性能下降,节点稳定性下降。

mcac_table_waiting_on_free_memtable_space

Major

等待释放MemTable花费的时间

该指标过高会导致数据写入性能下降,节点稳定性下降。

线程池状态

指标名称

重要级别

指标描述

指标说明

mcac_thread_pools_active_tasks

Critical

线程池中正在活跃的任务数量

阻塞任务过多会导致占用系统资源过高,响应速度下降甚至系统崩溃。

mcac_thread_pools_total_blocked_tasks_total

Critical

线程池中正处于阻塞状态的任务数量

阻塞任务过多会导致占用系统资源过高,响应速度下降甚至系统崩溃。

mcac_thread_pools_pending_tasks

Critical

线程池中处于pending状态的任务数量

处于pending状态的任务过多会导致占用系统资源过高,这些任务对应的请求超时,甚至导致系统崩溃。

mcac_thread_pools_completed_tasks

Major

线程池中已经完成的任务数量

该指标可以反应系统的吞吐量,该指标越高说明系统的性能优秀。

JVM相关

指标名称

重要级别

指标描述

指标说明

mcac_jvm_memory_used

Critical

已经使用的JVM堆内存大小

该指标越高,可能导致内存不足,触发频繁的垃圾回收,降低应用的吞吐率。

mcac_jvm_gc_time

Critical

应用程序用于GC的时间

该指标过高说明GC过于频繁,系统用于执行用户任务时间较少,可能导致客户端请求超时,甚至导致系统崩溃等。