Cassandraのクラスターの監視

Cassandraのクラスターのパフォーマンス特性を理解することは、問題の診断とキャパシティ・プランニングに不可欠です。

Cassandraのクラスターのパフォーマンス特性を理解することは、問題の診断とキャパシティ・プランニングに不可欠です。

Cassandraは、Java Management Extensions(

JMX)を介して、多数の統計と管理操作を公開しています。JMXは、Javaアプリケーションおよびサービスを管理および監視するツールを提供するJavaテクノロジーです。JavaアプリケーションがMBeanとして公開した統計情報または操作はすべて、JMXを使用して監視したり、制御したりすることができます。

通常の運用では、Cassandraは、以下のようなJMX対応ツールを使用して監視が可能な情報および統計を出力します。

同じツールを使用して、キャッシュのフラッシュやノードのリペアなどの、特定の管理コマンドおよび操作を実行できます。

nodetoolユーティリティを使用した監視

nodetoolユーティリティは、Cassandraを監視したり、日常のデータベース操作を実行したりするためのコマンドライン・インターフェイスです。nodetoolは、Cassandraディストリビューションに含まれており、通常、Cassandraの動作ノードから直接実行します。

nodetoolユーティリティは、JMXの最も重要なメトリックおよび操作をサポートしています。また、proxyhistogram commandなどのCassandraの管理に役立つ他のコマンドが含まれています。以下の例は、ローカル・コンピューター上にccmで作成した3ノードのクラスターを対象に4,500のINSERT文と45,000のSELECT文を実行した後のnodetool proxyhistogramsの出力を示しています。
$ 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
リングとその健全性の現状に関する簡単なサマリーを出力するには、statusコマンドを使用します。例:
$ nodetool proxyhistograms 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は、各テーブルおよびキースペースの統計を表示します。
  • nodetool cfhistogramsは、読み取り/書き込みのレイテンシー、行サイズ、カラム数、SSTableの数など、テーブルの統計を提供します。
  • nodetool netstatsは、ネットワーク操作および接続に関する統計を提供します。
  • nodetool tpstatsは、スレッド・プールごとに、Cassandraの操作の各段階のアクティブなタスク、保留中のタスク、完了したタスクの数に関する統計を提供します。

DataStax OpsCenter

DataStax OpsCenterは、1つの中央コンソールから、Cassandraクラスターのすべてのノードを監視および管理するグラフィカル・ユーザー・インターフェイスです。DataStax OpsCenterは、DataStaxのサポートとセットで提供されます。登録すれば、開発または実稼働以外の目的で評価版を使用することができます。

OpsCenterでは、他の監視ツールではなかなか得られないサマリー・ビューで、パフォーマンスの傾向を視覚的に表示することが可能です。GUIは、さまざまな期間を対象としたビューだけでなく、1つのデータ・ポイントにドリルダウンする機能を提供します。OpsCenterでは、CassandraまたはDataStax Enterpriseクラスターのリアルタイムおよび履歴の両方のパフォーマンス・データを利用できます。OpsCenterのメトリックは、キャプチャーされ、Cassandra内に格納されます。

OpsCenter内では、表示するパフォーマンスのメトリックをカスタマイズして、監視のニーズを満たすことができます。また、管理者は、ノード管理の日常的な作業をOpsCenterから実行できます。OpsCenter内のメトリックは、テーブル・メトリック、クラスター・メトリック、およびOSメトリックの3つの主要カテゴリに分けられます。利用できるメトリックの多くは、集計されたクラスター全体の情報として表示したり、ノードごとの情報として表示したりできます。

JConsoleを使用した監視

JConsoleは、CassandraなどのJavaアプリケーションを監視するためのJMX対応ツールです。Sun JDK 5.0以降に付属しています。JConsoleは、Cassandraによって公開されているJMXのメトリックおよび操作を消費し、それらを整然としたGUIに表示します。監視対象ノードごとに、6つの別々のタブビューがあります。
  • 概要

    Java VMおよび監視対象の値に関する概要情報を表示します。

  • メモリー

    メモリーの使用に関する情報を表示します。

  • [Threads(スレッド)]

    スレッドの使用に関する情報を表示します。

  • [Classes(クラス)]

    クラス・ローディングに関する情報を表示します。

  • [VM Summary(VMサマリー)]

    Java仮想マシン(VM)に関する情報を表示します。

  • [MBeans]

    MBeansに関する情報を表示します。

[Overview(概要)]および[Memory(メモリー)]タブには、Cassandra開発者にとって非常に役立つ情報が記載されています。[Memory(メモリー)]タブでは、ヒープと非ヒープのメモリー使用量を比較できます。また、Javaガーベージ・コレクションをすぐに実行するためのコントロール機能も備えています。

個々のCassandraのメトリックおよび操作については、JConsoleの最も重要な部分は[MBeans]タブです。このタブには、以下のCassandra MBeansがリストされています。
  • 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では、Cassandraのノードと同じホスト上ではなく、リモート・マシンでJConsoleを実行することを推奨します。

JConsole CompactionManagerMBeanは、クラスターのキャパシティを増やす必要があるタイミングを示すことが可能なコンパクション・メトリックを公開しています。