VM 上のプロセスをモニタリングする

Ops エージェントと以前の Monitoring エージェントは、デフォルトで Compute Engine 仮想マシン(VM)で実行されているプロセスに関する情報を取得するように構成されています。Monitoring エージェントを使用して、Amazon Elastic Compute Cloud(EC2)VM でこれらの指標を収集することもできます。プロセス指標と呼ばれるこの指標セットには、agent.googleapis.com/processes という接頭辞が付いています。これらの指標は、Google Kubernetes Engine(GKE)では収集されません。

2021 年 8 月 6 日より、課金対象の指標に記載されているように、これらの指標に対する料金が導入されます。プロセス指標のセットは課金対象に分類されますが、料金は実装されていません。

このドキュメントでは、プロセスの指標を可視化するツール、これらの指標から取り込むデータの量を決定する方法、関連する料金を最小限に抑える方法について説明します。

プロセス指標の操作

Metrics Explorer またはカスタム ダッシュボードを使用して、作成されたグラフを使用してプロセス指標データを可視化できます。詳細については、ダッシュボードとグラフの使用をご覧ください。また、Cloud Monitoring には、事前定義された 2 つのダッシュボードにプロセス指標のデータが含まれています。

  • Monitoring の [VM インスタンス] ダッシュボード
  • Compute Engine の VM インスタンスの [詳細] ダッシュボード

次のセクションでは、これらのダッシュボードについて説明します。

Monitoring: 集計されたプロセスの指標を表示する

指標スコープ内の集計されたプロセス指標を表示するには、[VM インスタンス] ダッシュボードの [プロセス] タブに移動します。

  1. Google Cloud コンソールのナビゲーション パネルで、[Monitoring] を選択してから、 [ダッシュボード] を選択します。

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

  2. リストから [VM インスタンス] ダッシュボードを選択します。

  3. [プロセス] をクリックします。

次のスクリーンショットは、Monitoring の [プロセス] ページの例を示しています。

Monitoring の **[プロセス]** ページには、集計されたプロセスの指標が表示されます。

[プロセス] タブのグラフを使用して、CPU とメモリの消費が最も多く、ディスク使用率が最も高い指標スコープのプロセスを特定できます。

Compute Engine: リソース消費量の多い VM のパフォーマンス指標を表示する

Google Cloud プロジェクトのリソースを最も多く消費している 5 つの VM を示すパフォーマンス グラフを表示するには、VM インスタンスの [オブザーバビリティ] タブに移動します。

  1. Google Cloud コンソールのナビゲーション パネルで、[Compute Engine] を選択してから、[VM インスタンス] を選択します。

    [VM インスタンス] に移動

  2. [オブザーバビリティ] をクリックします。

次のスクリーンショットは、Compute Engine の [オブザーバビリティ] ページの例を示したものです。

Compute Engine の **オブザーバビリティ** ページには、特定のリソースを消費している上位 5 つの VM が表示されます。

これらの指標を使用して VM の問題を診断する方法については、VM のパフォーマンスに関する問題のトラブルシューティングをご覧ください。

Compute Engine: VM ごとのプロセス指標を表示する

単一の Compute Engine 仮想マシン(VM)で実行されているプロセスのリストと、リソース消費量が最も大きいプロセスのグラフを表示するには、VM の [オブザーバビリティ] タブに移動します。

  1. Google Cloud コンソールのナビゲーション パネルで、[Compute Engine] を選択してから、[VM インスタンス] を選択します。

    [VM インスタンス] に移動

  2. [インスタンス] タブで、検査する VM の名前をクリックします。

  3. [オブザーバビリティ] をクリックして、この VM の指標を表示します。

  4. [オブザーバビリティ] タブのナビゲーション パネルで、[プロセス] を選択します。

次のスクリーンショットは、Compute Engine の [プロセス] ページの例を示したものです。

Compute Engine の **[プロセス]** ページには、VM ごとのプロセス指標が表示されます。

プロセス指標は最大 24 時間保持されるため、特定のプロセスへのリソース消費での時間と属性の異常を振り返ったり、最も高額なリソース ユーザーを特定したりできます。たとえば、次のグラフは CPU リソースを最も多く消費するプロセスを示しています。期間セレクタを使用して、グラフの期間を変更できます。期間セレクタには、直近の 1 時間などのプリセット値があり、カスタム期間を入力することもできます。

プロセス指標を使用すると、リソースを最も多く消費しているプロセスを特定できます。

動作中のプロセスの表には、Linux top コマンドの出力に類似したリソース消費のリストが記載されています。 デフォルトでは、最新のデータのスナップショットが表に表示されます。ただし、グラフで過去の終了時刻の時間を選択すると、その範囲の最後で動作中のプロセスが表に表示されます。

これらの指標を使用して VM の問題を診断する方法については、VM のパフォーマンスに関する問題のトラブルシューティングをご覧ください。

エージェントによって収集されるプロセス指標

Linux エージェントは、次の表に示すすべての指標を、Monitoring エージェント、Amazon Elastic Compute Cloud(EC2)VM を使用して、Compute Engine VM で実行されているロセスから収集します。収集は、Ops エージェント(バージョン 2.0.0 以降)と以前の Monitoring エージェントで無効にできます。

また、Windows VM で実行されている Ops エージェント(バージョン 2.0.0 以降)のプロセス指標の収集を無効にすることもできます。

詳細については、プロセス指標の無効化をご覧ください。

Windows でこれらの指標の収集を無効にするには、Ops エージェントのバージョン 2.0.0 以降にアップグレードすることをおすすめします。詳細については、Ops エージェントのインストールをご覧ください。

プロセス指標の表

次の表の指標タイプの文字列には、agent.googleapis.com/processes/ という接頭辞を付ける必要があります。この接頭辞は表内で省略されています。 ラベルをクエリする場合は、metric.labels. 接頭辞を使用します(例: metric.labels.LABEL="VALUE")。

指標タイプリリース ステージ
表示名
種類、タイプ、単位
モニタリング対象リソース
説明
ラベル
count_by_state GA
プロセス
GAUGEDOUBLE1
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
C特定の状態にあるプロセスの数。Linux のみ。60 秒ごとにサンプリングされます。
state: running、sleeping、zombie など
cpu_time GA
プロセス CPU
CUMULATIVEINT64us{CPU}
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
特定のプロセスの CPU 時間。60 秒ごとにサンプリングされます。
process: プロセス名。
user_or_syst: ユーザーまたはシステム プロセスのどちらか。
command: コマンドを処理する。
command_line: コマンドラインを処理する。最大文字数は 1,024 文字です。
owner: プロセス オーナー。
pid: プロセス ID。
disk/read_bytes_count 一般提供
ディスク読み取り I/O を処理する
CUMULATIVEINT64By
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
ディスク読み取り I/O を処理します。Linux のみ。60 秒ごとにサンプリングされます。
process: プロセス名。
command: コマンドを処理する。
command_line: コマンドラインを処理する。最大文字数は 1,024 文字です。
owner: プロセス オーナー。
pid: プロセス ID。
disk/write_bytes_count 一般提供
ディスク書き込み I/O を処理する
CUMULATIVEINT64By
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
ディスク書き込み I/O を処理する。Linux のみ。60 秒ごとにサンプリングされます。
process: プロセス名。
command: コマンドを処理する。
command_line: コマンドラインを処理する。最大文字数は 1,024 文字です。
owner: プロセス オーナー。
pid: プロセス ID。
fork_count GA
フォーク数
CUMULATIVEINT641
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
プロセスがフォークされた合計数。Linux のみ。60 秒ごとにサンプリングされます。
rss_usage 一般提供
常駐メモリを処理する
GAUGEDOUBLEBy
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
指定されたプロセスの常駐メモリ使用量。Linux のみ。60 秒ごとにサンプリングされます。
process: プロセス名。
command: コマンドを処理する。
command_line: コマンドラインを処理する。最大文字数は 1,024 文字です。
owner: プロセス オーナー。
pid: プロセス ID。
vm_usage 一般提供
仮想メモリを処理する
GAUGEDOUBLEBy
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
特定のプロセスの VM の使用。60 秒ごとにサンプリングされます。
process: プロセス名。
command: コマンドを処理する。
command_line: コマンドラインを処理する。最大文字数は 1,024 文字です。
owner: プロセス オーナー。
pid: プロセス ID。

表の生成日時: 2024-02-01 18:05:28 UTC。

現在の取り込みの判別

Metrics Explorer を使用して、プロセスの指標に対して現在取り込んでいるデータの量を確認できます。次の手順を行います。

  1. Google Cloud コンソールのナビゲーション パネルでモニタリングを選択し、次に Metrics Explorer を選択します。

    Metrics Explorer に移動

  2. クエリビルダー ペインのツールバーで、名前が [MQL] または  [PromQL] のボタンを選択します。

  3. [言語] 切り替えで [MQL] が選択されていることを確認します。言語切り替えボタンは、クエリの書式設定を行うのと同じツールバーにあります。

  4. gce_instance リソースと aws_ec2_instance リソースのプロセス指標ポイントの合計数を表示する手順は次のとおりです。

    1. 次のクエリを入力します。

      def tagged_process_metric name = metric 'agent.googleapis.com/processes/'$name
      | add [metric_suffix: $name];
      
      def process_metrics resource_type = fetch $resource_type
      | { @tagged_process_metric 'cpu_time'
        ; @tagged_process_metric 'disk/read_bytes_count'
        ; @tagged_process_metric 'disk/write_bytes_count'
        ; @tagged_process_metric 'rss_usage'
        ; @tagged_process_metric 'vm_usage'
        ; @tagged_process_metric 'count_by_state'
        ; @tagged_process_metric 'fork_count' }
      | within 1d
      | group_by [metric_suffix], 1m, [row_count: row_count()]
      | union;
      
      { @process_metrics 'gce_instance'
      ; @process_metrics 'aws_ec2_instance' }
      | outer_join 0, 0
      | { rename [], [out: val(0)] | add [resource_type: 'gce_instance']
        ; rename [], [out: val(1)] | add [resource_type: 'aws_ec2_instance'] }
      | union
      | group_by drop[metric_suffix], 1d, .sum
      
    2. [RUN QUERY] をクリックします。結果のグラフには、各リソースタイプの値が表示されます。

指標の費用の見積もり

Monitoring の料金の例は、指標の取り込み料金を見積もる方法を示しています。これらの例は、指標の処理に適用できます。

  • すべてのプロセス指標は 60 秒ごとにサンプリングされ、料金計算のために、すべてのプロセス指標は 8 バイトとしてカウントされるデータポイントを書き込みます。

  • プロセス指標の料金は、料金の例で使用されている、標準的なボリュームコストの 5% に設定されます。したがって、ここで説明するシナリオのすべての指標がプロセス指標であると仮定すると、各シナリオの総コストの 5% をプロセス指標のコストの見積もりとして使用できます。

プロセス指標の収集を無効にする

Ops エージェント(バージョン 2.0.0 以降)と Linux 上の以前の Monitoring エージェントによって、これらの指標の収集を無効にするには、複数の方法があります。

このエージェントは Compute Engine VM でのみ実行されます。Monitoring エージェント、Amazon Elastic Compute Cloud(EC2)VM の場合は、これらの手順はこれらのプラットフォームにのみ適用されます。

2.0.0 より前のバージョンまたは Windows の以前の Monitoring エージェントを実行している場合は、Ops エージェントによる収集を無効にできません。Windows でこれらの指標の収集を無効にするには、Ops エージェントのバージョン 2.0.0 以降にアップグレードすることをおすすめします。詳細については、Ops エージェントのインストールをご覧ください。

一般的な手順を以下に示します。

  1. VM に接続します。

  2. 既存の構成ファイルのコピーをバックアップとして作成します。バックアップとしてのコピーはエージェントの構成ディレクトリの外部に保存して、エージェントが両方のファイルを読み込まないようにします。たとえば、次のコマンドは、Linux 上の Monitoring エージェントの構成ファイルのコピーを作成します。

    cp /etc/stackdriver/collectd.conf BACKUP_DIR/collectd.conf.bak
    
  3. 以下で説明するオプションのいずれかを使用して構成を変更します。

  4. エージェントを再起動して、新しい構成を読み込みます。

    • Monitoring エージェント: sudo service stackdriver-agent restart
    • Ops エージェント: sudo service google-cloud-ops-agent restart
  5. この VM のプロセス指標が収集されていないことを確認します。

    1. [Metrics Explorer] を選択します。

    2. [MQL] をクリックします。

    3. gce_instance リソースの場合は、次のクエリを入力します。VM_NAME は、この VM の名前に置き換えます。

      fetch gce_instance
      | metric 'agent.googleapis.com/processes/cpu_time'
      | filter (metadata.system_labels.name == 'VM_NAME')
      | align rate(1m)
      | every 1m
      

      aws_ec2_instance リソースの場合は、クエリ内の gce_instance を置き換えます。

    4. [クエリを実行] をクリックします。

Linux または Windows 用 Ops エージェント

Ops エージェント用の構成ファイルの場所は、オペレーティング システムによって異なります。

  • Linux の場合: /etc/google-cloud-ops-agent/config.yaml
  • Windows の場合: C:\Program Files\Google\Cloud Operations\Ops Agent\config\config.yaml

Ops エージェントによるすべてのプロセス指標の収集を無効にするには、次の行を config.yaml ファイルに追加します。

metrics:
  processors:
    metrics_filter:
      type: exclude_metrics
      metrics_pattern:
      - agent.googleapis.com/processes/*

この場合、metrics サービスのデフォルト パイプラインに適用される metrics_filter プロセッサ内のコレクションから、プロセス指標が除外されます。

Ops エージェント用の構成オプションの詳細については、Ops エージェントの構成をご覧ください。

Linux 上の Monitoring エージェント

以前の Monitoring エージェントでのプロセス指標の収集を無効にするには、次のオプションがあります。

以降のセクションでは、各オプションと、そのオプションに関連するメリットとリスクを説明します。

エージェントの構成ファイルを変更する

このオプションでは、エージェントのメイン構成ファイルを直接編集して、/etc/stackdriver/collectd.confプロセス指標の収集を有効にするセクションを削除します。

手順

collectd.conf ファイルに対して、3 つのグループを削除する必要があります。

  1. 次の LoadPlugin ディレクティブとプラグイン構成を削除します。

    LoadPlugin processes
    
    <Plugin "processes">
      ProcessMatch "all" ".*"
      Detail "ps_cputime"
      Detail "ps_disk_octets"
      Detail "ps_rss"
      Detail "ps_vm"
    </Plugin>
    
  2. 次の PostCacheChain ディレクティブと PostCache チェーンの構成を削除します。

    PostCacheChain "PostCache"
    
    <Chain "PostCache">
      <Rule "processes">
        <Match "regex">
          Plugin "^processes$"
          Type "^(ps_cputime|disk_octets|ps_rss|ps_vm)$"
        </Match>
        <Target "jump">
          Chain "MaybeThrottleProcesses"
        </Target>
        Target "stop"
      </Rule>
    
      <Rule "otherwise">
        <Match "throttle_metadata_keys">
          OKToThrottle false
          HighWaterMark 5700000000  # 950M * 6
          LowWaterMark 4800000000  # 800M * 6
        </Match>
        <Target "write">
           Plugin "write_gcm"
        </Target>
      </Rule>
    </Chain>
    
  3. PostCache チェーンで使用されている MaybeThrottleProcesses チェーンを削除します。

    <Chain "MaybeThrottleProcesses">
      <Rule "default">
        <Match "throttle_metadata_keys">
          OKToThrottle true
          TrackedMetadata "processes:pid"
          TrackedMetadata "processes:command"
          TrackedMetadata "processes:command_line"
          TrackedMetadata "processes:owner"
        </Match>
        <Target "write">
           Plugin "write_gcm"
        </Target>
      </Rule>
    </Chain>
    
メリットとリスク
  • 利点
    • 指標が一度も収集されないため、エージェントが使用するリソースを減らします。
    • collectd.conf ファイルに他の変更を加えた場合、これらの変更を簡単に保存できます。
  • リスク
    • この構成ファイルを編集するには、root アカウントを使用する必要があります。
    • ファイルに誤字脱字が発生するリスクがあります。

エージェントの構成ファイルを置き換える

このオプションを使用すると、エージェントの主な構成ファイルが、関連するセクションが削除された編集済みのバージョンに置き換えられます。

手順
  1. 編集済みのファイル collectd-no-process-metrics.conf を GitHub リポジトリから /tmp ディレクトリにダウンロードし、次の手順を行います。

    cd /tmp && curl -sSO https://raw.githubusercontent.com/Stackdriver/agent-packaging/master/collectd-no-process-metrics.conf
    
  2. 既存の collectd.conf ファイルを、編集済みのファイルで置き換えます。

    cp /tmp/collectd-no-process-metrics.conf /etc/stackdriver/collectd.conf
    
メリットとリスク
  • 利点
    • 指標が一度も収集されないため、エージェントが使用するリソースを減らします。
    • ファイルを root として手動で編集する必要はありません。
    • 構成管理ツールを使ってファイルを簡単に置き換えることができます。
  • リスク
    • collectd.conf ファイルにその他の変更を加えた場合は、これらの変更を置換ファイルに統合する必要があります。

トラブルシューティング

このドキュメントで説明する手順は、エージェントの構成の変更であるため、次のような問題が発生する可能性があります。

  • 構成ファイルを編集するための十分な権限がない。構成ファイルを root アカウントから編集する必要がある。
  • 構成ファイルを直接編集した場合、構成ファイルに誤字脱字がある。

他の問題の解決方法については、Monitoring エージェントのトラブルシューティングをご覧ください。

Windows 上の Monitoring エージェント

Windows VM 上で稼働する以前の Monitoring エージェントによるプロセス指標の収集を無効にすることはできません。このエージェントは構成できません。Windows でこれらの指標の収集を無効にするには、Ops エージェントのバージョン 2.0.0 以降にアップグレードすることをおすすめします。詳細については、Ops エージェントのインストールをご覧ください。

Ops エージェントを実行している場合は、Linux または Windows 上の Ops エージェントをご覧ください。