当前位置:首页>Linux>Linux Cassandra监控体系搭建:Metrics + Prometheus + Grafana

Linux Cassandra监控体系搭建:Metrics + Prometheus + Grafana

  • 2026-10-21 13:29:24
Linux Cassandra监控体系搭建:Metrics + Prometheus + Grafana

Linux Cassandra监控体系搭建:Metrics + Prometheus + Grafana

一、Cassandra Metrics 概述

1.1 Metrics 类型与来源

Cassandra 通过 Dropwizard Metrics 库(Codahale)暴露指标,所有Metrics通过JMX MBean导出。

分类:

  • Gauge:瞬时值(如当前Heap使用)
  • Counter:累计计数(如总读请求)
  • Timer:延迟统计(P50/P99)
  • Histogram:分布直方图
  • Meter:速率(如QPS)

命名空间:org.apache.cassandra.metrics.type=...

主要类别:

  • ClientRequest:读写延迟、一致性
  • Storage:负载、异常
  • Compaction:Pending、BytesCompacted
  • ThreadPools:Pending/Dropped
  • CQL:Prepared语句
  • Cache:命中率
  • JVM:GC时间、Heap
  • DroppedMessage:丢弃消息
  • Streaming:扩容进度
  • Hints:Hinted Handoff

5.0新增:TrieMemtable metrics、SAI索引统计、UCS子策略

1.2 查看Metrics方式

  • nodetool proxyhistograms / tpstats(部分)
  • JMX工具:jconsole / jmxterm
  • Prometheus + Grafana(生产推荐)

二、JMX to Prometheus Exporter 配置

Cassandra 无内置Prometheus endpoint,需使用JMX Exporter(javaagent模式)。

2.1 下载JMX Exporter

最新版(2025年):https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/1.0.1/jmx_prometheus_javaagent-1.0.1.jar

cd /opt
wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/1.0.1/jmx_prometheus_javaagent-1.0.1.jar

2.2 配置cassandra-env.sh

在 /opt/cassandra/conf/cassandra-env.sh 添加JVM选项:

# JMX Exporter
JVM_OPTS="$JVM_OPTS -javaagent:/opt/jmx_prometheus_javaagent-1.0.1.jar=9404:/opt/cassandra/conf/prometheus.yaml"

# 可选:JMX认证(生产推荐)
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"

2.3 创建prometheus.yaml配置文件

/opt/cassandra/conf/prometheus.yaml(规则过滤+重命名):

lowercaseOutputName:true
lowercaseOutputLabelNames:true
whitelistObjectNames:["org.apache.cassandra.metrics:*"]
blacklistObjectNames:[]

rules:
-pattern:'org.apache.cassandra.metrics<type=(\w+), name=(\w+)><>Value: (\d+)'
name:cassandra_$1_$2
value:$3
labels:{}
help:"Cassandra metric $1 $2"
type:GAUGE

-pattern:'org.apache.cassandra.metrics<type=ClientRequest, scope=(\w+), name=(\w+)><>(Count|Mean|OneMinuteRate|99thPercentile): (.*)'
name:cassandra_client_request_$2_$1
value:$4
help:"Cassandra client request $2 for $1"
type:COUNTER

# Compaction规则
-pattern:'org.apache.cassandra.metrics<type=Compaction, name=(.*)><>(Count|Value): (.*)'
name:cassandra_compaction_$1
value:$3

# 更多规则可自定义过滤噪声Metrics
  • 端口9404:Exporter监听/metrics
  • 重启Cassandra生效

验证:

curl http://localhost:9404/metrics | grep cassandra

生产:防火墙仅限Prometheus访问9404端口。

4.x兼容:相同配置。


三、Prometheus 配置与部署

3.1 Prometheus 安装(单机或Kubernetes)

推荐Prometheus 2.50+(2025最新)。

3.2 prometheus.yml scrape 配置

global:
scrape_interval:15s

scrape_configs:
-job_name:'cassandra'
static_configs:
-targets:
-'10.0.0.10:9404'
-'10.0.0.20:9404'
-'10.0.0.30:9404'
# 所有节点
metrics_path:/metrics
scheme:http

# 可加node_exporter监控OS
-job_name:'node'
static_configs:
-targets:['localhost:9100']
  • 大集群:用consul/sd_config动态发现

3.3 验证

Prometheus UI → Targets:cassandra job UP

查询示例:cassandra_compaction_pending_tasks


四、Grafana Dashboard 搭建

4.1 Grafana 安装与数据源

添加Prometheus数据源。

4.2 推荐Dashboard导入(2025最新)

官方/社区Dashboard ID(Grafana.com):

  • 官方Cassandra Overview:ID 1599(更新支持5.0 Trie metrics)
  • 详细Cassandra Monitoring:ID 5336(社区,包含UCS)
  • JVM & GC:ID 1384
  • Node Exporter Full:ID 1860(OS)

导入方式:Grafana → Import → 输入ID

4.3 关键面板自定义

  • 集群概览:nodetool status模拟(Up节点数、Load、Owns偏差)
  • 读写延迟:cassandra_client_request_latency_99th_percentile
  • Compaction:pending_tasks、bytes_compacted
  • Storage:live_disk_space_used、total_disk_space

5.0专属面板:trie_memtable_offheap_used


五、关键指标详解(分类表)

类别
关键Metrics
正常阈值/关注点
说明与行动建议
集群健康
cassandra_storage_load
<预计数据量
总数据量,容量规划
up{job="cassandra"}
=节点数
节点存活
读写性能
cassandra_client_request_latency_99th_percentile
<50ms(业务而定)
P99延迟,>100ms调查Compaction/GC
cassandra_client_request_range_slice_count
监控增长
读QPS
Compaction
cassandra_compaction_pending_tasks
<50
>100落后严重,调concurrent_compactors
cassandra_compaction_completed_tasks
稳定增长
Compaction速率
存储
cassandra_storage_total_hints_count
低
Hints堆积 → 节点恢复慢
cassandra_table_live_disk_space_used
<70%磁盘
空间使用,>80%告警
JVM/GC
jvm_memory_heap_used
<Heap上限
Heap使用,接近上限 → OOM风险
jvm_gc_pause_seconds_sum
单次<1s
GC暂停时间,长暂停 → 读写抖动
线程池
cassandra_thread_pools_pending_tasks
<100
Pending高 → 积压,扩容
cassandra_dropped_message_dropped
=0
>0消息丢弃,严重瓶颈
缓存
cassandra_cache_key_hits / misses
命中率>80%
Key Cache效率
5.0专属
cassandra_memtable_off_heap_used
<offheap上限
Trie offheap使用

生产监控脚本:PromQL查询这些指标趋势。


六、告警规则示例(Alertmanager)

prometheus/rules.yml:

groups:
-name:cassandra.alerts
rules:
-alert:CassandraNodeDown
expr:up{job="cassandra"}==0
for:5m
labels:
severity:critical
annotations:
summary:"节点 {{ $labels.instance }} 下线"

-alert:CassandraHighLatency
expr:cassandra_client_request_latency_99th_percentile>100
for:10m
labels:
severity:warning

-alert:CompactionBacklog
expr:cassandra_compaction_pending_tasks>100
for:15m
labels:
severity:warning

-alert:DiskSpaceHigh
expr:(node_filesystem_free_bytes/node_filesystem_size_bytes)<0.2
for:5m
labels:
severity:critical

-alert:GCLongPause
expr:rate(jvm_gc_pause_seconds_sum[5m])>2
labels:
severity:warning

集成Slack/企业微信/飞书。


七、生产最佳实践与常见坑

  1. 指标噪声:prometheus.yaml规则过滤无用Metrics
  2. 高基数:避免label过多(instance已够)
  3. 大集群:用Thanos或VictoriaMetrics侧车存储
  4. 安全:Exporter端口内网、JMX认证
  5. 版本兼容:4.x用旧exporter规则,5.0加Trie规则

常见坑:

  • Exporter未启动 → curl 9404无响应 → 检查cassandra-env.sh
  • Metrics丢失 → 规则pattern错误
  • Grafana面板空白 → 数据源/变量错误

最新文章

随机文章