このトピックでは、Managed Service for Prometheus を使用して Cassandra を監視する方法を説明します。
前提条件
Prometheus インスタンスが作成されている必要があります。詳細については、以下をご参照ください。
ステップ 1:Cassandra JMX エージェントのデプロイ
-
Cassandra を実行している ECS インスタンスに、Cassandra のバージョンに一致する Cassandra JMX エージェントをダウンロードします。
-
ダウンロードしたエージェントパッケージを
MCAC_ROOTディレクトリに解凍し、次の内容を cassandra-env.sh ファイルに追記します。MCAC_ROOT=/path/to/directory JVM_OPTS="$JVM_OPTS -javaagent:${MCAC_ROOT}/lib/datastax-mcac-agent.jar"重要Cassandra JMX エージェントは、Prometheus がデータをスクレイプできるようにポート 9103 を公開します。このポートを変更するには、${MCAC_ROOT}/config/collectd.conf.tmpl ファイル内の値を目的のポート番号に変更してください。
LoadPlugin write_prometheus <Plugin write_prometheus> Port "9103" </Plugin> -
設定が完了したら、Cassandra アプリケーションを再起動します。ECS サーバーで
curl localhost:{jmx_port}/metricsコマンドを実行します。{jmx_port}は、JMX エージェントが公開するポート番号 (デフォルトは 9103) に置き換えてください。インストールに成功すると、データが返ります。# HELP collectd_collectd_cache_size write_prometheus plugin: 'collectd' Type: 'cache_size', Dstype: 'gauge', Dsname: 'value' # TYPE collectd_collectd_cache_size gauge collectd_collectd_cache_size{collectd="cache",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1"} 6985 16 # HELP collectd_collectd_derive_total write_prometheus plugin: 'collectd' Type: 'derive', Dstype: 'derive', Dsname: 'value' # TYPE collectd_collectd_derive_total counter collectd_collectd_derive_total{collectd="write_queue",type="dropped",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1"} 0 168768 # HELP collectd_collectd_queue_length write_prometheus plugin: 'collectd' Type: 'queue_length', Dstype: 'gauge', Dsname: 'value' # TYPE collectd_collectd_queue_length gauge collectd_collectd_queue_length{collectd="write_queue",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1"} 144 168 # HELP collectd_contextswitch_total write_prometheus plugin: 'contextswitch' Type: 'contextswitch', Dstype: 'derive', Dsname: 'value' # TYPE collectd_contextswitch_total counter collectd_contextswitch_total{instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1"} 3... 168768 # HELP collectd_cpu_total write_prometheus plugin: 'cpu' Type: 'cpu', Dstype: 'derive', Dsname: 'value' # TYPE collectd_cpu_total counter collectd_cpu_total{cpu="0",type="idle",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 50160255 16876 collectd_cpu_total{cpu="0",type="interrupt",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 0 1687686 collectd_cpu_total{cpu="0",type="nice",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 226 1687686335 collectd_cpu_total{cpu="0",type="softirq",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 13644 16876 collectd_cpu_total{cpu="0",type="steal",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 0 16876863350 collectd_cpu_total{cpu="0",type="system",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 231356 16876 collectd_cpu_total{cpu="0",type="user",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 1519742 168768 collectd_cpu_total{cpu="0",type="wait",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 585 1687686335 collectd_cpu_total{cpu="1",type="idle",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 50596353 16876 collectd_cpu_total{cpu="1",type="interrupt",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 0 1687686 collectd_cpu_total{cpu="1",type="nice",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 219 1687686335 collectd_cpu_total{cpu="1",type="softirq",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 9320 168768 collectd_cpu_total{cpu="1",type="steal",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 0 16876863350 collectd_cpu_total{cpu="1",type="system",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 129114 16876 collectd_cpu_total{cpu="1",type="user",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 1504382 168768 collectd_cpu_total{cpu="1",type="wait",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 50115892 16876 collectd_cpu_total{cpu="2",type="softirq",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 4906 168768 collectd_cpu_total{cpu="2",type="steal",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 0 16876863350 collectd_cpu_total{cpu="2",type="system",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 230256 16876 collectd_cpu_total{cpu="2",type="user",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 1562142 168768 collectd_cpu_total{cpu="2",type="wait",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 8267 16876863 collectd_cpu_total{cpu="3",type="idle",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 50612210 16876 collectd_cpu_total{cpu="3",type="interrupt",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 0 1687686 collectd_cpu_total{cpu="3",type="nice",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 218 1687686335 collectd_cpu_total{cpu="3",type="softirq",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 2815 168768 collectd_cpu_total{cpu="3",type="steal",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 0 16876863350 collectd_cpu_total{cpu="3",type="system",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 129656 16876 collectd_cpu_total{cpu="3",type="user",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 1506299 168768 collectd_cpu_total{cpu="3",type="wait",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 183 1687686335
ステップ 2: Cassandra の統合
にログインします。 Prometheusコンソールのマネージドサービス。
-
左側メニューで、アクセスセンター をクリックします。
-
アクセスセンター ページの データベース セクションで、[Cassandra] をクリックします。
-
[Cassandra] パネルの 接続を開始 タブで、パラメーターを設定し、OK をクリックします。
パラメーター
説明
[環境タイプの選択]
環境タイプを選択します。
-
コンテナサービス環境
-
ECS (Virtual Private Cloud (VPC))
クラスターの選択
対象のクラスターを選択します。
[Pod ラベル]
Cassandra サービスを実行する Pod のラベルです。一意のラベルを使用することを推奨します。
[サービスポート]
ステップ 1 でインストールした Cassandra JMX エージェントが使用するポートです。デフォルトのポートが自動的に入力されます。
[メトリクスパス]
ステップ 1 でインストールした Cassandra JMX エージェントのメトリクスエンドポイントです。デフォルトのパスが自動的に入力されます。
[スクレイピング間隔 (秒)]
メトリクスをスクレイピングする間隔 (秒) です。デフォルト値は 30 です。
-
ステップ 3: Cassandra ダッシュボードの表示
にログインします。 Prometheusコンソールのマネージドサービス。
-
ナビゲーションペインで、データインポート管理 をクリックします。
-
データインポート管理 ページで、[インストール済み] タブをクリックします。目的の環境を見つけて、その名前をクリックし、詳細ページを開きます。
-
[コンポーネント管理] タブで、[コンポーネントタイプ] セクションの [Cassandra] をクリックし、[ダッシュボード] タブをクリックして、すべてのダッシュボード名を確認します。
ページには、[Cassandra 詳細] と [Cassandra サマリー] の 2 つのダッシュボードが表示されます。
-
ダッシュボード名をクリックして、Grafana ダッシュボードを開きます。
ステップ 4:Cassandra アラートの設定
-
[コンポーネント管理] タブで、[コンポーネントタイプ] セクション内の [Cassandra] をクリックし、アラートルール タブをクリックして、デフォルトのアラートルールを表示します。
デフォルトのアラートルールには、以下が含まれます。
リクエストタイムアウト
失敗したリクエスト
合計メッセージ
ディスク使用率
メモリ使用率
CPU 使用率
クライアント接続
-
カスタムアラートルールを作成することもできます。詳細については、「Prometheus アラートルールの作成」をご参照ください。
主なメトリクス
クラスターとノードの情報
|
メトリクス |
レベル |
説明 |
解説 |
|
mcac_client_connected_native_clients |
Major |
CQL 接続数 |
接続数が多すぎるとシステムリソースを消費し、クライアントのレイテンシーが増加します。 |
|
mcac_table_live_disk_space_used_total |
Major |
SSTable が使用するディスク領域 |
値が高い場合、ディスク領域が不足し、データアクセスのレイテンシーが増加する可能性があります。 |
|
mcac_table_snapshots_size |
推奨 |
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 |
キーキャッシュのヒット率 |
値が低い場合、アプリケーションの読み取りパフォーマンスが低下し、ユーザーエクスペリエンスに影響する可能性があります。 |
|
mcac_table_row_cache_hit_total |
Major |
行キャッシュヒット数 |
値が低い場合、アプリケーションの読み取りパフォーマンスが低下し、ユーザーエクスペリエンスに影響する可能性があります。 |
|
mcac_table_row_cache_miss_total |
推奨 |
行キャッシュミス数 |
値が高い場合、アプリケーションの読み取りパフォーマンスが低下し、ユーザーエクスペリエンスに影響する可能性があります。 |
|
mcac_table_row_cache_hit_out_of_range_total |
推奨 |
ディスクアクセスが必要だった行キャッシュのヒット数 |
値が高い場合、アプリケーションの読み取りパフォーマンスが低下し、ユーザーエクスペリエンスに影響する可能性があります。 |
|
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 |
読み取り操作あたりに読み取られる SSTable の数 |
値が高い場合、クライアント読み取りレイテンシーが増加します。 |
|
mcac_commit_log_total_commit_log_size |
Major |
コミットログが使用するディスク領域 |
値が高い場合、ディスク領域が不足し、読み取り/書き込みパフォーマンスが低下するほか、データ復旧時間が長くなる可能性があります。 |
|
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 |
スレッドプール内の保留中のタスクの数 |
保留中のタスクが多すぎると、過剰なシステムリソースを消費し、対応するリクエストがタイムアウトするほか、システムがクラッシュする可能性もあります。 |
|
mcac_thread_pools_completed_tasks |
Major |
スレッドプール内の完了したタスクの数 |
このメトリクスは、システムのスループットを反映します。値が高いほどシステムパフォーマンスが高いことを示します。 |
JVM メトリクス
|
メトリクス |
レベル |
説明 |
解説 |
|
mcac_jvm_memory_used |
Critical |
使用中の JVM ヒープメモリ |
値が高い場合、メモリが不足し、ガベージコレクション (GC) が頻繁に発生して、アプリケーションのスループットが低下する可能性があります。 |
|
mcac_jvm_gc_time |
Critical |
ガベージコレクション (GC) に費やした時間 |
値が高い場合、GC が頻繁に発生していることを示します。システムがユーザーワークロードを実行できる時間が短くなるため、リクエストがタイムアウトしたり、システムがクラッシュしたりする可能性があります。 |