監測Cassandra羣集
瞭解Cassandra集羣的性能特徵對於診斷問題和規劃能力至關重要。
Cassandra通過Java Management Extensions(JMX)公開一些統計和管理操作。JMX是一種Java技術,提供用於管理和監視Java應用程序的服務工具。可以使用JMX監視或操作Java應用程序公開的任何統計信息或操作作爲MBean。
在正常操作期間,Cassandra會輸出您可以使用兼容JMX的工具進行監控的信息和統計信息,例如:
Cassandra的nodetool
JConsole的
使用相同的工具,您可以執行某些管理命令和操作,例如nodetool flush或nodetool repair。
使用nodetool進行監控
nodetool作用是用於監測Cassandra和執行常規數據庫操作的命令行界面。它通常在一個可操作的Cassandra節點運行。
nodetool支持最重要的JMX度量標準和操作,還包括Cassandra管理的其他有用命令,如proxyhistogram命令。此示例在本地計算機上的三個節點羣集上運行4,500個insert和45,000個select之後,顯示nodetool proxyhistogram的輸出。
$ nodetool proxyhistograms
proxy histograms
Percentile Read Latency Write Latency Range Latency
(micros) (micros) (micros)
50% 1502.50 375.00 446.00
75% 1714.75 420.00 498.00
95% 31210.25 507.00 800.20
98% 36365.00 577.36 948.40
99% 36365.00 740.60 1024.39
Min 616.00 230.00 311.00
Max 36365.00 55726.00 59247.00
有關節點及其當前狀態的摘要,請使用nodetool status命令。例如:
$ nodetool status
Note: Ownership information does not include topology; for complete information, specify a keyspace
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns Host ID Rack
UN 127.0.0.1 47.66 KB 1 33.3% aaa1b7c1-6049-4a08-ad3e-3697a0e30e10 rack1
UN 127.0.0.2 47.67 KB 1 33.3% 1848c369-4306-4874-afdf-5c1e95b8732e rack1
UN 127.0.0.3 47.67 KB 1 33.3% 49578bf1-728f-438d-b1c1-d8dd644b6f7f rack1
nodetool提供查看錶,服務器度量標準和壓縮統計信息的詳細度量標準的命令:
nodetool tablestats:顯示每個表和keyspace的統計信息。
nodetool tablehistograms 提供關於表的統計信息,包括讀/寫延遲,行大小,列數和SSTable數量。
nodetool netstats提供有關網絡操作和連接的統計信息。
nodetool tpstats提供有關線程池中Cassandra操作的每個階段的活動,待處理和已完成任務的數量的統計信息。
使用JConsole進行監控
JConsole是用於監控Java應用程序(如Cassandra)的JMX兼容工具。它包含在Sun JDK 5.0及更高版本中。JConsole使用Cassandra公開的JMX度量和操作,並將其顯示在組織良好的GUI中。對於監控的每個節點,JConsole提供了以下六個單獨的選項卡視圖:
Overview
顯示有關Java VM和監視值的概述信息。Memory
顯示有關內存使用的信息。Threads
顯示關於線程使用的信息。Classes
顯示有關類加載的信息。VM Summary
顯示有關Java虛擬機(VM)的信息。Mbeans
顯示有關MBeans的信息。
“Overview”和“Memory”選項卡包含對Cassandra開發人員非常有用的信息。“Memory”選項卡允許您比較堆和非堆內存的使用情況,並提供一個控件來立即執行Java垃圾回收。
對於特定的Cassandra度量和操作,JConsole最重要的部分是MBeans選項卡。此選項卡列出了以下Cassandra MBean:
org.apache.cassandra.auth
包括權限緩存。org.apache.cassandra.db
包括緩存,表格度量和壓縮。org.apache.cassandra.internal
內部服務器操作,如八卦,提示切換和Memtable值。org.apache.cassandra.metrics
包括有關CQL,客戶端,密鑰空間,讀取修復,存儲和線程池等主題的指標。org.apache.cassandra.net
節點間通信包括FailureDetector,MessagingService和StreamingManager。org.apache.cassandra.request
與讀取,寫入和複製操作相關的任務。org.apache.cassandra.service
包括GCInspector。
當您選擇一個MBean時,其MBeanInfo和MBean描述符將顯示在右側,任何屬性,操作或通知都會顯示在其下面的樹中。例如,選擇並展開org.apache.cassandra.db MBean以查看錶的可用操作會導致顯示如下:
如果您選擇使用JConsole監視Cassandra,請記住,JConsole消耗大量的系統資源。因此,DataStax建議在遠程計算機上運行JConsole,而不要在與Cassandra節點相同的主機上運行JConsole。
JConsole CompactionManagerMBean公開壓縮指標,可以指示何時需要向集羣添加容量。
壓縮指標
監控壓縮性能是瞭解何時向羣集添加容量的一個重要信息。以下屬性通過CompactionManagerMBean公開:
壓實指標
屬性 | 描述 |
---|---|
BytesCompacted | 自服務器[重新]啓動以來壓縮的總字節數 |
CompletedTasks | 自服務器[重新]啓動以來完成的壓縮數 |
PendingTasks | 估計剩餘的壓縮次數 |
TotalCompactionsCompleted | 自服務器[重新]啓動以來的壓縮總數 |
線程池和讀/寫延遲統計信息
Cassandra爲不同的執行階段維護不同的線程池。每個線程池提供活動,掛起和完成的任務數量的統計信息。未決任務列增加的這些池的趨勢表明何時增加額外的容量。建立基準後,在待處理任務列中配置超出正常範圍的報警。在命令行上使用nodetool tpstats來查看下錶中顯示的線程池詳細信息。
讀/寫延遲指標
Cassandra通過StorageProxyMBean跟蹤在服務器級別讀取,寫入和分片操作的延遲(平均值和總計)。
由nodetool tpstats報告的線程池統計信息
屬性 | 描述 |
---|---|
AntiEntropyStage | 與維修有關的任務 |
CacheCleanupExecutor | 與緩存維護相關的任務(計數器緩存,行緩存) |
CompactionExecutor | 與壓實有關的任務 |
CounterMutationStage | 與領先的計數器寫入有關的任務 |
GossipStage | 有關八卦協議的任務 |
HintsDispatcher | 與發送提示相關的任務 |
InternalResponseStage | 與其他內部任務響應相關的任務 |
MemtableFlushWriter | 與清除memtables相關的任務 |
MemtablePostFlush memtable | 刷新完成後與維護相關的任務 |
MemtableReclaimMemory | 與回收memtable內存有關的任務 |
MigrationStage | 與模式維護相關的任務 |
MiscStage | 與各種任務相關的任務,包括快照和刪除主機 |
MutationStage | 與寫入相關的任務 |
Native-Transport-Requests | 與來自CQL的客戶端請求相關的任務 |
PendingRangeCalculator | 任務涉及在引導/解除後重新計算範圍所有權 |
PerDiskMemtableFlushWriter_ * | 有關將memtables刷新到給定磁盤的任務 |
ReadRepairStage | 與執行讀取修復相關的任務 |
ReadStage | 與讀取有關的任務 |
RequestResponseStage | 來自節點內請求的回調任務 |
Sampler | 與抽樣統計有關的任務 |
SecondaryIndexManagement | 與二級索引維護有關的任務 |
ValidationExecutor | 與驗證壓縮相關的任務 |
ViewMutationStage | 與維護物化視圖有關的任務 |
表統計
對於單個表,ColumnFamilyStoreMBean提供與StorageProxyMBean相同的通用延遲屬性。與StorageProxyMBean不同,ColumnFamilyStoreMBean具有許多其他統計信息,這些統計信息對於監視性能趨勢非常重要。其中最重要的是:
表統計
屬性 | 描述 |
---|---|
MemtableDataSize | 此表格數據消耗的總大小(不包括元數據) |
MemtableColumnsCount | 返回memtable中存在的總列數(跨所有鍵) |
MemtableSwitchCount | memtable已被刷新多少次 |
RecentReadLatencyMicros | 自上次調用此bean以來的平均讀取延遲 |
RecentWriterLatencyMicros | 自上次調用此Bean以來的平均寫入延遲 |
LiveSSTableCount | 此表的實時SSTables的數量 |
最近的讀取延遲和寫入延遲計數器對確保操作以一致的方式發生很重要。如果這些計數器在一段時間保持平穩之後開始增加,則可能需要向羣集添加容量。
您可以設置閾值並監控LiveSSTableCount,以確保給定表的SSTable數量不會太多。