本文介绍如何使用Prometheus监控Cassandra。
前提条件
已创建ECS类型的Prometheus实例,具体操作,请参见Prometheus实例 for ECS
使用限制
目前仅Prometheus实例 for ECS类型实例支持该组件接入。
步骤一:部署Cassandra JMX Agent
您需要根据Cassandra的版本下载合适的Cassandra JMX Agent到Cassandra所在的ECS内。
解压缩下载的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文件中的如下图所示的内容为想要提供的端口。
完成上述配置之后,重新启动Cassandra应用程序,在ECS服务器上执行命令
curl localhost:{jmx端口}/metrics
,查看是否正常有数据返回,如果有数据返回,则说明Cassandra JMX Agent已经正确安装。
步骤二:接入Cassandra监控
功能入口
功能入口一:集成中心
- 登录ARMS控制台。
- 在左侧导航栏选择 ,进入可观测监控 Prometheus 版的实例列表页面。
- 单击目标Prometheus实例名称,进入集成中心页面。
功能入口二:接入中心
登录ARMS控制台。
在左侧导航栏单击接入中心,然后在组件应用区域单击Cassandra卡片的添加,然后在弹出的页面根据控制台指引完成组件接入。
接入Cassandra
这里以从集成中心入口为例,介绍接入Cassandra组件的操作,具体步骤如下。
接入Cassandra组件。
若您初次安装Cassandra类型的组件:
在集成中心页面单击未安装区域Cassandra组件卡片的安装。
说明单击该卡片,在弹出的面板中您可以看到关于Cassandra监控常见的指标和大盘缩略预览效果图。这里列举出的指标只是Cassandra常见的一部分关键指标信息,具体请参见下文关键指标说明,待您安装Cassandra成功后,您将会查看到可观测监控 Prometheus 版监控Cassandra的实际指标详情。
若您已安装Cassandra类型的组件,需要再次添加该组件:
在集成中心页面单击已安装区域Cassandra组件卡片的添加。
在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页签查看组件的状态。
步骤三:查看Cassandra监控大盘
通过监控大盘您可以查看可用性、客户端读写延迟和吞吐量、节点CPU/内存/硬盘占用率等监控数据,具体步骤如下。
在集成中心页面单击已安装区域的E-MapReduce组件卡片,然后在弹出的对话框中单击大盘页签可以查看该组件的大盘略缩图和超链接,单击超链接进入阿里云Grafana页面,查看对应观测大盘。这里为您展示几个常见的大盘数据。
集群/节点基础信息
客户端读写延迟和吞吐量
异常和错误
缓存和布隆过滤器
硬件资源使用
存储占用详情
线程池状态
JVM与垃圾回收
步骤四:配置监控告警
在集成中心页面单击已安装区域的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过于频繁,系统用于执行用户任务时间较少,可能导致客户端请求超时,甚至导致系统崩溃等。 |