本文介紹如何使用Prometheus監控Cassandra。
前提條件
已創建Prometheus實例,具體操作,請參見:
步驟一:自行部署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給Prometheus暴露的數據抓取端口為9103,如果需要修改為其他的端口,則修改${MCAC_ROOT}/config/collectd.conf.tmpl文件中的如下圖所示的內容為想要提供的端口。
完成上述配置之后,重新啟動Cassandra應用程序,在ECS服務器上執行命令
curl localhost:{jmx端口}/metrics
,查看是否正常有數據返回,如果有數據返回,則說明Cassandra JMX Agent已經正確安裝。
步驟二:接入 Cassandra
在左側導航欄,單擊接入中心。
在接入中心頁面的數據庫區域,單擊 Cassandra。
在Cassandra面板的開始接入頁簽完成接入,然后單擊確定。
參數
說明
選擇所屬環境類型
可以接入以下兩種服務環境:
容器服務環境
ECS(VPC)
選擇集群
選擇目標集群。
Pod 標簽
部署 Cassandra 服務 Pod 的標簽(建議使用有特定標識的標簽)
服務端口
步驟一中安裝的 Cassandra JMX Agent 的端口,默認端口號會自動填充。
Metrics 采集路徑
步驟一中安裝的 Cassandra JMX Agent 指標透出路徑,默認路徑會自動填充。
Metric 采集間隔(單位/秒)
可觀測監控 Prometheus 版采集指標數據的時間間隔,默認30秒。
步驟三:查看Cassandra大盤數據
在左側導航欄,單擊接入管理。
在接入管理頁面的已接入環境頁簽中,選擇目標環境,在目標環境列表中,單擊目標環境名稱進入容器環境詳情頁面。
在組件管理頁簽下的組件類型區域,單擊Cassandra,然后單擊大盤,即可查看所有的大盤名稱。
單擊目標大盤名稱,查看對應的Grafana大盤。
步驟四:配置 Cassandra 監控告警
在組件管理頁簽下的組件類型區域,單擊Cassandra,然后單擊告警規則,即可查看默認創建的告警規則。
您還可以根據業務需求新增告警規則,創建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過于頻繁,系統用于執行用戶任務時間較少,可能導致客戶端請求超時,甚至導致系統崩潰等。 |