Apache Cassandra

Apache Cassandra との統合では、リクエスト、タスク、ストレージの指標を収集し、インスタンスの負荷を分析します。必要に応じて、メモリとガベージ コレクションに関連する一般的な JVM 指標も収集できます。この統合では、システムログ、デバッグログ、ガベージ コレクションのログも収集されます。これらのログが解析され、メッセージ、Java クラス、行番号のフィールドを含む JSON ペイロードが生成されます。

Cassandra の詳細については、Apache Cassandra のドキュメントをご覧ください。

前提条件

Cassandra テレメトリーを収集するには、Ops エージェントをインストールする必要があります。

  • 指標の場合は、バージョン 2.6.0 以降をインストールします。
  • ログの場合は、バージョン 2.5.0 以降をインストールします。

この統合は、Cassandra バージョン 3.11 と 4.0 をサポートしています。

Cassandra インスタンスを構成する

JMX エンドポイントを公開するには、JVM の起動時に com.sun.management.jmxremote.port システム プロパティを設定する必要があります。また、com.sun.management.jmxremote.rmi.port システム プロパティも同じポートに設定することをおすすめします。JMX エンドポイントをリモートで公開するには、java.rmi.server.hostname システム プロパティも設定する必要があります。

デフォルトでは、これらのプロパティは Cassandra デプロイの cassandra-env.sh ファイルで設定されています。

コマンドライン引数を使用してシステム プロパティを設定するには、JVM の起動時にプロパティ名の前に -D を付けます。たとえば、com.sun.management.jmxremote.port をポート 7199 に設定するには、JVM の起動時に次のように指定します。

-Dcom.sun.management.jmxremote.port=7199

Cassandra の Ops エージェントを構成する

Ops エージェントの構成のガイドに従って、Cassandra インスタンスからテレメトリーを収集するために必要な要素を追加し、エージェントを再起動します。

構成の例

次のコマンドは、Cassandra のテレメトリーを収集して取り込み、Ops エージェントを再起動するための構成を作成します。

# Configures Ops Agent to collect telemetry from the app and restart Ops Agent.

set -e

# Create a back up of the existing file so existing configurations are not lost.
sudo cp /etc/google-cloud-ops-agent/config.yaml /etc/google-cloud-ops-agent/config.yaml.bak

# Configure the Ops Agent.
sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
metrics:
  receivers:
    cassandra:
      type: cassandra
      endpoint: service:jmx:rmi:///jndi/rmi://127.0.0.1:7199/jmxrmi
  service:
    pipelines:
      cassandra:
        receivers:
          - cassandra
logging:
  receivers:
    cassandra_system:
      type: cassandra_system
    cassandra_debug:
      type: cassandra_debug
    cassandra_gc:
      type: cassandra_gc
  service:
    pipelines:
      cassandra:
        receivers:
          - cassandra_system
          - cassandra_debug
          - cassandra_gc
EOF

sudo service google-cloud-ops-agent restart
sleep 60

ログの収集を構成する

Cassandra から指標を取り込むには、Cassandra が生成する指標のレシーバーを作成してから、新しいレシーバー用のパイプラインを作成する必要があります。

cassandra_system ログのレシーバを構成するには、次のフィールドを指定します。

フィールド デフォルト 説明
exclude_paths include_paths の照合で除外するファイルシステム パスのパターンのリスト。
include_paths [/var/log/cassandra/system*.log] 各ファイルのテーリングで読み込むファイルシステムのパスのリスト。パスには /var/log/cassandra/system*.log のように、ワイルドカード(*)を使用できます。
record_log_file_path false true に設定すると、ログレコードの取得元のファイルのパスが agent.googleapis.com/log_file_path ラベルの値として出力ログエントリに表示されます。ワイルドカードを使用する場合、レコードを取得したファイルのパスのみが記録されます。
type 値は cassandra_system にする必要があります。
wildcard_refresh_interval 60s include_paths のワイルドカード ファイルのパスの更新間隔。期間を指定します(例: 30s2m)。このプロパティは、ログファイルのローテーションがデフォルトの間隔よりも速く、ロギングのスループットが高い場合に有用です。

cassandra_debug ログのレシーバを構成するには、次の項目を指定します。

フィールド デフォルト 説明
exclude_paths include_paths の照合で除外するファイルシステム パスのパターンのリスト。
include_paths [/var/log/cassandra/debug*.log] 各ファイルのテーリングで読み込むファイルシステムのパスのリスト。パスには /var/log/cassandra/system*.log のように、ワイルドカード(*)を使用できます。
record_log_file_path false true に設定すると、ログレコードの取得元のファイルのパスが agent.googleapis.com/log_file_path ラベルの値として出力ログエントリに表示されます。ワイルドカードを使用する場合、レコードを取得したファイルのパスのみが記録されます。
type 値は cassandra_debug にする必要があります。
wildcard_refresh_interval 60s include_paths のワイルドカード ファイルのパスの更新間隔。期間を指定します(例: 30s2m)。このプロパティは、ログファイルのローテーションがデフォルトの間隔よりも速く、ロギングのスループットが高い場合に有用です。

cassandra_gc ログのレシーバを構成するには、次の項目を指定します。

フィールド デフォルト 説明
exclude_paths include_paths の照合で除外するファイルシステム パスのパターンのリスト。
include_paths [/var/log/cassandra/gc.log.*.current] 各ファイルのテーリングで読み込むファイルシステムのパスのリスト。パスには /var/log/cassandra/system*.log のように、ワイルドカード(*)を使用できます。
record_log_file_path false true に設定すると、ログレコードの取得元のファイルのパスが agent.googleapis.com/log_file_path ラベルの値として出力ログエントリに表示されます。ワイルドカードを使用する場合、レコードを取得したファイルのパスのみが記録されます。
type 値は cassandra_gc にする必要があります。
wildcard_refresh_interval 60s include_paths のワイルドカード ファイルのパスの更新間隔。期間を指定します(例: 30s2m)。このプロパティは、ログファイルのローテーションがデフォルトの間隔よりも速く、ロギングのスループットが高い場合に有用です。

ログの内容

logName は、構成で指定されたレシーバ ID から取得されます。LogEntry 内の詳細なフィールドは、次のとおりです。

cassandra_system ログの LogEntry には次のフィールドが含まれます。

フィールド タイプ 説明
jsonPayload.javaClass 文字列 ログが発生した Java クラス
jsonPayload.level 文字列 ログエントリ レベル
jsonPayload.lineNumber 文字列 ログが発生したソースファイルの行番号
jsonPayload.message 文字列 ログ メッセージ(指定した場合の詳細なスタックトレースを含む)
jsonPayload.module 文字列 ログが発生した Cassandra のモジュール
severity 文字列(LogSeverity ログエントリ レベル(変換済み)。

cassandra_debug ログの LogEntry には次のフィールドが含まれます。

フィールド タイプ 説明
jsonPayload.javaClass 文字列 ログが発生した Java クラス
jsonPayload.level 文字列 ログエントリ レベル
jsonPayload.lineNumber 文字列 ログが発生したソースファイルの行番号
jsonPayload.message 文字列 ログメッセージ
jsonPayload.module 文字列 ログが発生した Cassandra のモジュール
severity 文字列(LogSeverity ログエントリ レベル(変換済み)。

cassandra_gc ログの LogEntry には次のフィールドが含まれます。

フィールド タイプ 説明
jsonPayload.level 文字列 ログエントリのレベル
jsonPayload.message 文字列 ログメッセージ
jsonPayload.pid 文字列 メッセージをロギングする Java プロセスのプロセス ID
jsonPayload.tid 文字列 メッセージをロギングする Java プロセスのスレッド ID
jsonPayload.timeStopped 文字列 ガベージ コレクションのために JVM が停止された秒数
jsonPayload.timeStopping 文字列 JVM がガベージ コレクションの前にスレッドを停止するのに要した秒数
jsonPayload.uptime 文字列 JVM がアクティブであった秒数
severity 文字列(LogSeverity ログエントリ レベル(変換済み)。

指標の収集を構成する

Cassandra から指標を取り込むには、Cassandra が生成する指標のレシーバを作成してから、新しいレシーバ用のパイプラインを作成する必要があります。

このレシーバでは、複数のエンドポイントのモニタリングなど、構成で複数のインスタンスを使用することはできません。このようなインスタンスはすべて同じ時系列に書き込まれるため、Cloud Monitoring ではインスタンスを区別できません。

cassandra 指標のレシーバーを構成するには、次のフィールドを指定します。

フィールド デフォルト 説明
collect_jvm_metrics true サポートされている JVM 指標も収集するようにレシーバを構成します。
collection_interval 60s time duration 値(例: 30s5m)。
endpoint localhost:7199 JMX サービス URL、またはサービス URL の作成に使用されるホストとポート。この値は、service:jmx:<protocol>:<sap> または host:port の形式にする必要があります。host:port フォームの値は、service:jmx:rmi:///jndi/rmi://<host>:<port>/jmxrmi というサービス URL を作成するために使用されます。
password JMX が認証を要求するように構成されている場合、構成されたパスワード。
type 値は、cassandra にする必要があります。
username JMX が認証を要求するように構成されている場合、構成されたユーザー名。

モニタリング対象

次の表に、Ops エージェントが Cassandra インスタンスから収集する指標の一覧を示します。

指標タイプ
種類、タイプ
モニタリング対象リソース
ラベル
workload.googleapis.com/cassandra.client.request.count
CUMULATIVEINT64
gce_instance
operation
workload.googleapis.com/cassandra.client.request.error.count
CUMULATIVEINT64
gce_instance
operation
status
workload.googleapis.com/cassandra.client.request.range_slice.latency.50p
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/cassandra.client.request.range_slice.latency.99p
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/cassandra.client.request.range_slice.latency.max
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/cassandra.client.request.read.latency.50p
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/cassandra.client.request.read.latency.99p
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/cassandra.client.request.read.latency.max
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/cassandra.client.request.write.latency.50p
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/cassandra.client.request.write.latency.99p
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/cassandra.client.request.write.latency.max
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/cassandra.compaction.tasks.completed
CUMULATIVEINT64
gce_instance
 
workload.googleapis.com/cassandra.compaction.tasks.pending
GAUGEINT64
gce_instance
 
workload.googleapis.com/cassandra.storage.load.count
GAUGEINT64
gce_instance
 
workload.googleapis.com/cassandra.storage.total_hints.count
CUMULATIVEINT64
gce_instance
 
workload.googleapis.com/cassandra.storage.total_hints.in_progress.count
GAUGEINT64
gce_instance
 

構成を確認する

このセクションでは、Cassandra レシーバが正しく構成されていることを確認する方法について説明します。Ops エージェントがテレメトリーの収集を開始するまでに 1~2 分かかる場合があります。

Cassandra のログが Cloud Logging に送信されていることを確認するには、次のようにします。

  1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。

  2. エディタに次のクエリを入力し、[クエリを実行] をクリックします。
    resource.type="gce_instance"
    (log_id("cassandra_system") OR log_id("cassandra_debug") OR log_id("cassandra_gc"))
    

Cassandra 指標が Cloud Monitoring に送信されていることを確認する手順は次のとおりです。

  1. Google Cloud コンソールで、[Metrics Explorer] ページに移動します。

    Metrics Explorer に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。

  2. クエリビルダー ペインのツールバーで、[MQL] または [MQL] という名前のボタンを選択します。
  3. [MQL] 切り替えで [MQL] が選択されていることを確認します。言語切り替えボタンは、クエリの書式設定と同じツールバーにあります。
  4. エディタに次のクエリを入力し、[クエリを実行] をクリックします。
    fetch gce_instance
    | metric 'workload.googleapis.com/cassandra.client.request.count'
    | every 1m
    

ダッシュボードを表示

Cassandra 指標を表示するには、グラフまたはダッシュボードが構成されている必要があります。 Cassandra インテグレーションには、1 つ以上のダッシュボードが含まれています。インテグレーションを構成して Ops エージェントが指標データの収集を開始すると、ダッシュボードは自動的にインストールされます。

インテグレーションをインストールすることなく、ダッシュボードの静的プレビューを表示することもできます。

インストールされているダッシュボードを表示する手順は次のとおりです。

  1. Google Cloud コンソールで [ダッシュボード] ページに移動します。

    [ダッシュボード] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。

  2. [ダッシュボード リスト] タブを選択し、[統合] カテゴリを選択します。
  3. 表示するダッシュボードの名前をクリックします。

インテグレーションを構成してもダッシュボードがインストールされていない場合は、Ops エージェントが実行されていることを確認します。ダッシュボードにグラフの指標データがない場合、ダッシュボードのインストールは失敗します。Ops エージェントが指標の収集を開始した後に、ダッシュボードがインストールされます。

ダッシュボードの静的プレビューを表示する手順は次のとおりです。

  1. Google Cloud コンソールで [統合] ページに移動します。

    [インテグレーション] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。

  2. [デプロイメント プラットフォーム] フィルタの [Compute Engine] をクリックします。
  3. Cassandra のエントリを見つけて、[詳細を表示] をクリックします。
  4. [ダッシュボード] タブを選択すると、静的プレビューが表示されます。ダッシュボードがインストールされている場合は、[ダッシュボードを表示] をクリックして移動できます。

Cloud Monitoring のダッシュボードについて詳しくは、ダッシュボードとグラフをご覧ください。

[インテグレーション] ページの使用方法については、インテグレーションを管理するをご覧ください。

アラート ポリシーをインストールする

アラート ポリシーは、指定した条件が成立した際に通知するように Cloud Monitoring に指示します。 Cassandra インテグレーションには、1 つ以上のアラート ポリシーが含まれています。これらのアラート ポリシーは、Monitoring の [インテグレーション] ページで表示してインストールできます。

使用可能なアラート ポリシーの説明を表示してインストールする手順は次のとおりです。

  1. Google Cloud コンソールで [統合] ページに移動します。

    [インテグレーション] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。

  2. Cassandra のエントリを見つけて、[詳細を表示] をクリックします。
  3. [アラート] タブを選択します。このタブには、利用可能なアラート ポリシーの説明と、それらをインストールするためのインターフェースが表示されます。
  4. アラート ポリシーをインストールします。アラート ポリシーでは、アラートがトリガーされた通知の送信先を特定する必要があるため、インストール環境の情報が必要になります。アラート ポリシーをインストールする手順は次のとおりです。
    1. 利用可能なアラート ポリシーのリストから、インストールするアラート ポリシーを選択します。
    2. [通知の構成] セクションで、1 つ以上の通知チャンネルを選択します。通知チャンネルの使用を無効にすることもできますが、無効にすると、アラート ポリシーは通知なく起動します。Monitoring でステータスを確認できますが、通知は受信しません。

      通知チャンネルの詳細については、通知チャンネルを管理するをご覧ください。

    3. [ポリシーの作成] をクリックします。

Cloud Monitoring のアラート ポリシーの詳細については、アラートの概要をご覧ください。

[インテグレーション] ページの使用方法については、インテグレーションを管理するをご覧ください。

次のステップ

Ansible を使用して Ops エージェントをインストールし、サードパーティ アプリケーションを構成してサンプル ダッシュボードをインストールする方法については、[Ops エージェントをインストールして、サードパーティ アプリケーションのトラブルシューティングを行う](https://www.youtube.com/watch?v=GQgNygd-XJU&t=7s) の動画をご覧ください。