procstat プラグインでプロセスメトリクスを収集する - Amazon CloudWatch

procstat プラグインでプロセスメトリクスを収集する

procstat プラグインでは、個別のプロセスからメトリクスを収集できます。このプラグインは、Linux サーバーと、サポート対象バージョンの Windows Server を実行するサーバーでサポートされます。このセクションでは、procstat 用に CloudWatch エージェントを設定し、CloudWatch エージェントによってインポートされるメトリクスを表示する方法について説明します。また、procstat によって収集されるメトリクスをリストします。

procstat 向けの CloudWatch エージェントの設定

procstat プラグインを使用するには、CloudWatch エージェント設定ファイルの procstat セクションに metrics_collected セクションを追加します。モニターリングするプロセスを指定するには 3 つの方法があります。これらの方法のうち使用できるのは 1 つのみですが、この 1 つの方法を使用して複数のプロセスを指定してモニターリングできます。

  • pid_file: 作成するプロセス識別番号 (PID) ファイルの名前でプロセスを選択します。

  • exe: 正規表現の照合ルールを使用して、指定した文字列と一致するプロセス名のプロセスを選択します。一致は「含む」一致です。つまり、一致する用語として agent を指定した場合、cloudwatchagent のような名前を持つプロセスは、その用語に一致します。詳細については、「Syntax」を参照してください。

  • pattern: プロセスの起動に使用するコマンドラインでプロセスを選択します。正規表現の照合ルールを使用して指定した文字列と一致するコマンドラインを持つすべてのプロセスが選択されます。コマンドで使用されるパラメータやオプションも含めて、コマンドライン全体がチェックされます。

    一致は「含む」一致です。つまり、一致する用語として -c を指定した場合、-config のようなパラメータを持つプロセスは、その用語に一致します。

  • drop_original_metrics - オプション。metrics セクションの aggregation_dimensions フィールドを使用してメトリクスを集計結果にロールアップしている場合、デフォルトでは、エージェントは集計メトリクスと、ディメンションの値ごとに分離された元のメトリクスの両方を送信します。元のメトリクスを CloudWatch に送信したくない場合は、メトリクスのリストを使用してこのパラメータを指定できます。このパラメータとともに指定されたメトリクスには、CloudWatch にレポートされるディメンションごとのメトリクスがありません。代わりに、集計されたメトリクスのみがレポートされます。これにより、エージェントが収集するメトリクスの数が減り、コストが削減されます。

以上の複数のセクションを含めた場合でも、CloudWatch エージェントで使用される方法は 1 つのみです。複数のセクションを指定すると、CloudWatch エージェントは pid_file セクションを使用します (ある場合)。これが存在しない場合は、exe セクションを使用します。

Linux サーバーの場合、exe セクションまたは pattern セクションで指定した文字列は正規表現として評価されます。Windows Server を実行するサーバーの場合、これらの文字列は WMI クエリとして評価されます。文字列の例は pattern: "%apache%" などです。詳細については、「LIKE Operator」を参照してください。

どの方法を使用する場合でも、省略可能な metrics_collection_interval パラメータを含めることができます。このパラメータは、これらのメトリクスを収集する間隔を秒単位で指定します。このパラメータを省略すると、デフォルト値の 60 秒が使用されます。

以下のセクションの例では、procstat セクションのみをエージェント設定ファイルの metrics_collected セクションに追加しています。実際の設定ファイルでは、他のセクションも metrics_collected に追加できます。詳細については、「CloudWatch エージェント設定ファイルを手動で作成または編集する」を参照してください。

pid_file による設定

次の例の procstat セクションでは、PID ファイルの example1.pid および example2.pid の作成プロセスをモニターリングします。プロセスごとに異なるメトリクスが収集されます。example2.pid の作成プロセスからのメトリクスは、10 秒間隔で収集されます。example1.pid プロセスからのメトリクスは、デフォルト値の 60 秒間隔で収集されます。

{ "metrics": { "metrics_collected": { "procstat": [ { "pid_file": "/var/run/example1.pid", "measurement": [ "cpu_usage", "memory_rss" ] }, { "pid_file": "/var/run/example2.pid", "measurement": [ "read_bytes", "read_count", "write_bytes" ], "metrics_collection_interval": 10 } ] } } }

exe による設定

次の例の procstat セクションでは、文字列の agent または plugin と一致する名前を持つすべてのプロセスをモニターリングします。各プロセスから同じメトリクスが収集されます。

{ "metrics": { "metrics_collected": { "procstat": [ { "exe": "agent", "measurement": [ "cpu_time", "cpu_time_system", "cpu_time_user" ] }, { "exe": "plugin", "measurement": [ "cpu_time", "cpu_time_system", "cpu_time_user" ] } ] } } }

pattern による設定

次の例の procstat セクションでは、文字列の config または -c と一致するコマンドラインを持つすべてのプロセスをモニターリングします。各プロセスから同じメトリクスが収集されます。

{ "metrics": { "metrics_collected": { "procstat": [ { "pattern": "config", "measurement": [ "rlimit_memory_data_hard", "rlimit_memory_data_soft", "rlimit_memory_stack_hard", "rlimit_memory_stack_soft" ] }, { "pattern": "-c", "measurement": [ "rlimit_memory_data_hard", "rlimit_memory_data_soft", "rlimit_memory_stack_hard", "rlimit_memory_stack_soft" ] } ] } } }

Procstat で収集されるメトリクス

次の表は、procstat プラグインで収集できるメトリクスの一覧です。

CloudWatch エージェントは、以下のメトリクス名の先頭に procstat を追加します。収集元が Linux サーバーであるか、Windows Server を実行するサーバーであるかに応じて構文は異なります。たとえば、cpu_time メトリクスは、収集元が Linux である場合は procstat_cpu_time と表示され、収集元が Windows Server である場合は procstat cpu_time と表示されます。

メトリクス名 次で利用可能 説明

cpu_time

Linux

プロセスで CPU を使用する時間。このメトリクスは、1/100 秒単位で測定されます。

単位: 個

cpu_time_guest

Linux

プロセスがゲストモードになっている時間です。このメトリクスは、1/100 秒単位で測定されます。

タイプ: 浮動小数点

単位: なし

cpu_time_guest_nice

Linux

プロセスが nice ゲストで実行されている時間です。このメトリクスは、1/100 秒単位で測定されます。

タイプ: 浮動小数点

単位: なし

cpu_time_idle

Linux

プロセスがアイドルモードになっている時間です。このメトリクスは、1/100 秒単位で測定されます。

タイプ: 浮動小数点

単位: なし

cpu_time_iowait

Linux

プロセスが I/O 操作の完了を待機している時間です。このメトリクスは、1/100 秒単位で測定されます。

タイプ: 浮動小数点

単位: なし

cpu_time_irq

Linux

プロセスが中断を処理している時間です。このメトリクスは、1/100 秒単位で測定されます。

タイプ: 浮動小数点

単位: なし

cpu_time_nice

Linux

プロセスが nice モードになっている時間です。このメトリクスは、1/100 秒単位で測定されます。

タイプ: 浮動小数点

単位: なし

cpu_time_soft_irq

Linux

プロセスがソフトウェアの中断を処理している時間です。このメトリクスは、1/100 秒単位で測定されます。

タイプ: 浮動小数点

単位: なし

cpu_time_steal

Linux

仮想化環境で実行中に、他のオペレーティングシステムでの実行に費やされる時間です。このメトリクスは、1/100 秒単位で測定されます。

タイプ: 浮動小数点

単位: なし

cpu_time_stolen

Linux、Windows Server

プロセスが盗まれた時間になっている時間です。これは、仮想化環境で他のオペレーティングシステムに費やされる時間です。このメトリクスは、1/100 秒単位で測定されます。

タイプ: 浮動小数点

単位: なし

cpu_time_system

Linux、Windows Server、macOS

プロセスがシステムモードになっている時間。このメトリクスは、1/100 秒単位で測定されます。

タイプ: 浮動小数点

単位: カウント

cpu_time_user

Linux、Windows Server、macOS

プロセスがユーザーモードになっている時間。このメトリクスは、1/100 秒単位で測定されます。

単位: カウント

cpu_usage

Linux、Windows Server、macOS

任意の容量でプロセスがアクティブになっている時間の割合。

単位: パーセント

memory_data

Linux、macOS

プロセスで使用するデータ用メモリの量。

単位: バイト

memory_locked

Linux、macOS

プロセスでロックされているメモリの量。

単位: バイト

memory_rss

Linux、Windows Server、macOS

プロセスが使用している実際のメモリ (常駐セット) の量。

単位: バイト

memory_stack

Linux、macOS

プロセスで使用されているスタックメモリの量。

単位: バイト

memory_swap

Linux、macOS

プロセスで使用されているスワップメモリの量。

単位: バイト

memory_vms

Linux、Windows Server、macOS

プロセスで使用されている仮想メモリの量。

単位: バイト

num_fds

Linux

このプロセスが開いているファイルディスクリプタの数です。

単位: なし

num_threads

Linux、Windows、macOS

このプロセス内におけるスレッドの数です。

単位: なし

pid

Linux、Windows Server、macOS

プロセス識別子 (ID)。

単位: なし

pid_count

Linux、Windows Server、macOS

プロセスに関連付けられたプロセス ID の数。

このメトリクスのフルネームは、Linux サーバーおよび macOS コンピュータでは procstat_lookup_pid_count、Windows サーバーでは procstat_lookup pid_count です。

単位: なし

read_bytes

Linux、Windows Server

プロセスがディスクから読み取ったバイト数。

単位: バイト

write_bytes

Linux、Windows Server

プロセスがディスクに書き込んだバイト数。

単位: バイト

read_count

Linux、Windows Server

プロセスが実行したディスク読み込みオペレーションの数。

単位: なし

rlimit_realtime_priority_hard

Linux

このプロセスに設定できる最大リアルタイム優先度のハード制限です。

単位: なし

rlimit_realtime_priority_soft

Linux

このプロセスに設定できる最大リアルタイム優先度のソフト制限です。

単位: なし

rlimit_signals_pending_hard

Linux

このプロセスでキューに入れられる最大シグナル数のハード制限です。

単位: なし

rlimit_signals_pending_soft

Linux

このプロセスでキューに入れられる最大シグナル数のソフト制限です。

単位: なし

rlimit_nice_priority_hard

Linux

このプロセスで設定できる最大 nice 優先度のハード制限です。

単位: なし

rlimit_nice_priority_soft

Linux

このプロセスで設定できる最大 nice 優先度のソフト制限です。

単位: なし

rlimit_num_fds_hard

Linux

このプロセスが開くことができるファイルディスクリプタの最大数のハード制限です。

単位: なし

rlimit_num_fds_soft

Linux

このプロセスが開くことができるファイルディスクリプタの最大数のソフト制限です。

単位: なし

write_count

Linux、Windows Server

プロセスが実行したディスク書き込みオペレーションの数。

単位: なし

involuntary_context_switches

Linux

プロセスのコンテキストが意図せずに切り替えられた回数。

単位: なし

voluntary_context_switches

Linux

プロセスのコンテキストが意図的に切り替えられた回数。

単位: なし

realtime_priority

Linux

プロセスで現在使用されているリアルタイム優先度。

単位: なし

nice_priority

Linux

プロセスで現在使用されている nice 優先度。

単位: なし

signals_pending

Linux

プロセスによる処理待ち中のシグナルの数。

単位: なし

rlimit_cpu_time_hard

Linux

プロセスの CPU 時間のハードリソース制限。

単位: なし

rlimit_cpu_time_soft

Linux

プロセスの CPU 時間のソフトリソース制限。

単位: なし

rlimit_file_locks_hard

Linux

プロセスのファイルロックのハードリソース制限。

単位: なし

rlimit_file_locks_soft

Linux

プロセスのファイルロックのソフトリソース制限。

単位: なし

rlimit_memory_data_hard

Linux

プロセスのデータ用メモリに関するハードリソース制限。

単位: バイト

rlimit_memory_data_soft

Linux

プロセスのデータ用メモリに関するソフトリソース制限。

単位: バイト

rlimit_memory_locked_hard

Linux

プロセスのロックされたメモリに関するハードリソース制限。

単位: バイト

rlimit_memory_locked_soft

Linux

プロセスのロックされたメモリに関するソフトリソース制限。

単位: バイト

rlimit_memory_rss_hard

Linux

プロセスの物理メモリに関するハードリソース制限。

単位: バイト

rlimit_memory_rss_soft

Linux

プロセスの物理メモリに関するソフトリソース制限。

単位: バイト

rlimit_memory_stack_hard

Linux

プロセススタックに関するハードリソース制限。

単位: バイト

rlimit_memory_stack_soft

Linux

プロセススタックに関するソフトリソース制限。

単位: バイト

rlimit_memory_vms_hard

Linux

プロセスの仮想メモリに関するハードリソース制限。

単位: バイト

rlimit_memory_vms_soft

Linux

プロセスの仮想メモリに関するソフトリソース制限。

単位: バイト

CloudWatch エージェントによってインポートされたプロセスメトリクスの表示

プロセスメトリクスを CloudWatch にインポートした後、これらのメトリクスを時系列グラフとして表示し、これらのメトリクスをモニターリングし、指定したしきい値に違反した場合に通知できるアラームを作成できます。以下の手順では、プロセスメトリクスを時系列グラフとして表示する方法を示します。アラームの設定の詳細については、「 Amazon CloudWatch でのアラームの使用」を参照してください。

CloudWatch コンソールでプロセスメトリクスを表示するには
  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

  2. ナビゲーションペインで [Metrics (メトリクス)] を選択します。

  3. エージェントによって収集されたメトリクスの名前空間を選択します。デフォルトでは、これは CWAgent ですが、CloudWatch エージェント設定ファイルで別の名前空間を指定している場合があります。

  4. メトリクスのディメンション (例: インスタンス別メトリクス) を選択します。

  5. [All metrics] タブには、名前空間内のそのディメンションのメトリクスがすべて表示されます。以下の操作を行うことができます。

    1. メトリクスをグラフ表示するには、メトリクスの横にあるチェックボックスを選択します。すべてのメトリクスを選択するには、テーブルの見出し行にあるチェックボックスを選択します。

    2. テーブルを並べ替えるには、列見出しを使用します。

    3. リソースでフィルタするには、リソース ID を選択し、[Add to search] を選択します。

    4. メトリクスでフィルタするには、メトリクスの名前を選択し、[Add to search] を選択します。

  6. (オプション) このグラフを CloudWatch ダッシュボードに追加するには、[Actions] (アクション)、[Add to dashboard] (ダッシュボードに追加) の順に選択します。