如何使用Prometheus监控Cassandra

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

前提条件

已创建Prometheus实例,具体操作,请参见:

步骤一:自行部署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给Prometheus暴露的数据抓取端口为9103,如果需要修改为其他的端口,则修改${MCAC_ROOT}/config/collectd.conf.tmpl文件中的如下图所示的内容为想要提供的端口。

    we

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

    el

步骤二:接入 Cassandra

  1. 登录Prometheus控制台

  2. 在左侧导航栏,单击接入中心

  3. 接入中心页面的数据库区域,单击 Cassandra

    image

  1. Cassandra面板的开始接入页签完成接入,然后单击确定

    参数

    说明

    选择所属环境类型

    可以接入以下两种服务环境:

    • 容器服务环境

    • ECS(VPC)

    选择集群

    选择目标集群。

    Pod 标签

    部署 Cassandra 服务 Pod 的标签(建议使用有特定标识的标签)

    服务端口

    步骤一中安装的 Cassandra JMX Agent 的端口,默认端口号会自动填充。

    Metrics 采集路径

    步骤一中安装的 Cassandra JMX Agent 指标透出路径,默认路径会自动填充。

    Metric 采集间隔(单位/秒)

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

步骤三:查看Cassandra大盘数据

  1. 登录Prometheus控制台

  2. 在左侧导航栏,单击接入管理

  3. 接入管理页面的已接入环境页签中,选择目标环境,在目标环境列表中,单击目标环境名称进入容器环境详情页面。

    image

  4. 组件管理页签下的组件类型区域,单击Cassandra,然后单击大盘,即可查看所有的大盘名称。

    image

  5. 单击目标大盘名称,查看对应的Grafana大盘。

步骤四:配置 Cassandra 监控告警

  1. 组件管理页签下的组件类型区域,单击Cassandra,然后单击告警规则,即可查看默认创建的告警规则。

    image

  2. 您还可以根据业务需求新增告警规则,创建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过于频繁,系统用于执行用户任务时间较少,可能导致客户端请求超时,甚至导致系统崩溃等。