

# procstat プラグインでプロセスメトリクスを収集する
<a name="CloudWatch-Agent-procstat-process-metrics"></a>

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

**注記**  
`procstat` プラグインは、Amazon ECS 環境の Fargate 起動タイプではサポートされていません。

**Topics**
+ [procstat 用の CloudWatch エージェントの設定](#CloudWatch-Agent-procstat-configuration)
+ [Procstat で収集されるメトリクス](#CloudWatch-Agent-procstat-process-metrics-collected)
+ [CloudWatch エージェントによってインポートされたプロセスメトリクスの表示](#CloudWatch-view-procstat-metrics)

## procstat 用の CloudWatch エージェントの設定
<a name="CloudWatch-Agent-procstat-configuration"></a>

procstat プラグインを使用するには、CloudWatch エージェント設定ファイルの `procstat` セクションに `metrics_collected` セクションを追加します。モニターリングするプロセスを指定するには 3 つの方法があります。これらの方法のうち使用できるのは 1 つのみですが、この 1 つの方法を使用して複数のプロセスを指定してモニターリングできます。
+ `pid_file`: 作成するプロセス識別番号 (PID) ファイルの名前でプロセスを選択します。
+ `exe`: 正規表現の照合ルールを使用して、指定した文字列と一致するプロセス名のプロセスを選択します。一致は「含む」一致です。つまり、一致する用語として `agent` を指定した場合、`cloudwatchagent` のような名前を持つプロセスは、その用語に一致します。詳細については、「[Syntax](https://github.com/google/re2/wiki/Syntax)」を参照してください。
+ `pattern`: プロセスの起動に使用するコマンドラインでプロセスを選択します。正規表現の照合ルールを使用して指定した文字列と一致するコマンドラインを持つすべてのプロセスが選択されます。コマンドで使用されるパラメータやオプションも含めて、コマンドライン全体がチェックされます。

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

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

Linux サーバーの場合、`exe` セクションまたは `pattern` セクションで指定した文字列は正規表現として評価されます。Windows Server を実行するサーバーの場合、これらの文字列は WMI クエリとして評価されます。文字列の例は `pattern: "%apache%"` などです。詳細については、「[LIKE Operator](https://docs.microsoft.com/en-us/windows/desktop/WmiSdk/like-operator)」を参照してください。

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

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

### pid\_file で設定する
<a name="CloudWatch-Agent-procstat-configuration-pidfile"></a>

次の例の `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 による設定
<a name="CloudWatch-Agent-procstat-configuration-exe"></a>

次の例の `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 による設定
<a name="CloudWatch-Agent-procstat-configuration-pattern"></a>

次の例の `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 で収集されるメトリクス
<a name="CloudWatch-Agent-procstat-process-metrics-collected"></a>

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

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


| メトリクス名 | 次で利用可能 | 説明 | 
| --- | --- | --- | 
| `cpu_time` | Linux | プロセスで CPU を使用する時間。このメトリクスは、1/100 秒単位で測定されます。<br />単位: 数 | 
| `cpu_time_guest` | Linux | プロセスがゲストモードになっている時間です。このメトリクスは、1/100 秒単位で測定されます。<br />タイプ: 浮動小数点<br />単位: なし | 
| `cpu_time_guest_nice` | Linux | プロセスが nice ゲストで実行されている時間です。このメトリクスは、1/100 秒単位で測定されます。<br />タイプ: 浮動小数点<br />単位: なし | 
| `cpu_time_idle` | Linux | プロセスがアイドルモードになっている時間です。このメトリクスは、1/100 秒単位で測定されます。<br />タイプ: 浮動小数点<br />単位: なし | 
| `cpu_time_iowait` | Linux | プロセスが I/O 操作の完了を待機している時間です。このメトリクスは、1/100 秒単位で測定されます。<br />タイプ: 浮動小数点<br />単位: なし | 
| `cpu_time_irq` | Linux | プロセスが中断を処理している時間です。このメトリクスは、1/100 秒単位で測定されます。<br />タイプ: 浮動小数点<br />単位: なし | 
| `cpu_time_nice` | Linux | プロセスが nice モードになっている時間です。このメトリクスは、1/100 秒単位で測定されます。<br />タイプ: 浮動小数点<br />単位: なし | 
| `cpu_time_soft_irq` | Linux | プロセスがソフトウェアの中断を処理している時間です。このメトリクスは、1/100 秒単位で測定されます。<br />タイプ: 浮動小数点<br />単位: なし | 
| `cpu_time_steal` | Linux | 仮想化環境で実行中に、他のオペレーティングシステムでの実行に費やされる時間です。このメトリクスは、1/100 秒単位で測定されます。<br />タイプ: 浮動小数点<br />単位: なし | 
| `cpu_time_stolen` | Linux、Windows Server | プロセスが盗まれた時間になっている時間です。これは、仮想化環境で他のオペレーティングシステムに費やされる時間です。このメトリクスは、1/100 秒単位で測定されます。<br />タイプ: 浮動小数点<br />単位: なし | 
| `cpu_time_system` | Linux、Windows Server、macOS | プロセスがシステムモードになっている時間。このメトリクスは、1/100 秒単位で測定されます。<br />タイプ: 浮動小数点<br />単位: 数 | 
| `cpu_time_user` | Linux、Windows Server、macOS | プロセスがユーザーモードになっている時間。このメトリクスは、1/100 秒単位で測定されます。<br />単位: 数 | 
| `cpu_usage` | Linux、Windows Server、macOS | 任意の容量でプロセスがアクティブになっている時間の割合。<br />単位: パーセント | 
| `memory_data` | Linux、macOS | プロセスで使用するデータ用メモリの量。<br />単位: バイト | 
| `memory_locked` | Linux、macOS | プロセスでロックされているメモリの量。<br />単位: バイト | 
| `memory_rss` | Linux、Windows Server、macOS | プロセスが使用している実際のメモリ (常駐セット) の量。<br />単位: バイト | 
| `memory_stack` | Linux、macOS | プロセスで使用されているスタックメモリの量。<br />単位: バイト | 
| `memory_swap` | Linux、macOS | プロセスで使用されているスワップメモリの量。<br />単位: バイト | 
| `memory_vms` | Linux、Windows Server、macOS | プロセスで使用されている仮想メモリの量。<br />単位: バイト | 
| `num_fds` | Linux | このプロセスが開いているファイルディスクリプタの数です。<br />単位: なし | 
| `num_threads` | Linux、Windows、macOS | このプロセス内におけるスレッドの数です。<br />単位: なし | 
| `pid` | Linux、Windows Server、macOS | プロセス識別子 (ID)。<br />単位: なし | 
| `pid_count` | Linux、Windows Server、macOS | プロセスに関連付けられたプロセス ID の数。<br />このメトリクスのフルネームは、Linux サーバーおよび macOS コンピュータでは `procstat_lookup_pid_count`、Windows サーバーでは `procstat_lookup pid_count` です。<br />単位: なし | 
| `read_bytes` | Linux、Windows Server | プロセスがディスクから読み取ったバイト数。<br />単位: バイト | 
| `write_bytes` | Linux、Windows Server | プロセスがディスクに書き込んだバイト数。<br />単位: バイト | 
| `read_count` | Linux、Windows Server | プロセスが実行したディスク読み込みオペレーションの数。<br />単位: なし | 
| `rlimit_realtime_priority_hard` | Linux | このプロセスに設定できる最大リアルタイム優先度のハード制限です。<br />単位: なし | 
| `rlimit_realtime_priority_soft` | Linux | このプロセスに設定できる最大リアルタイム優先度のソフト制限です。<br />単位: なし | 
| `rlimit_signals_pending_hard` | Linux | このプロセスでキューに入れられる最大シグナル数のハード制限です。<br />単位: なし | 
| `rlimit_signals_pending_soft` | Linux | このプロセスでキューに入れられる最大シグナル数のソフト制限です。<br />単位: なし | 
| `rlimit_nice_priority_hard` | Linux | このプロセスで設定できる最大 nice 優先度のハード制限です。<br />単位: なし | 
| `rlimit_nice_priority_soft` | Linux | このプロセスで設定できる最大 nice 優先度のソフト制限です。<br />単位: なし | 
| `rlimit_num_fds_hard` | Linux | このプロセスが開くことができるファイルディスクリプタの最大数のハード制限です。<br />単位: なし | 
| `rlimit_num_fds_soft` | Linux | このプロセスが開くことができるファイルディスクリプタの最大数のソフト制限です。<br />単位: なし | 
| `write_count` | Linux、Windows Server | プロセスが実行したディスク書き込みオペレーションの数。<br />単位: なし | 
| `involuntary_context_switches` | Linux | プロセスのコンテキストが意図せずに切り替えられた回数。<br />単位: なし | 
| `voluntary_context_switches` | Linux | プロセスのコンテキストが意図的に切り替えられた回数。<br />単位: なし | 
| `realtime_priority` | Linux | プロセスで現在使用されているリアルタイム優先度。<br />単位: なし | 
| `nice_priority` | Linux | プロセスで現在使用されている nice 優先度。<br />単位: なし | 
| `signals_pending` | Linux | プロセスによる処理待ち中のシグナルの数。<br />単位: なし | 
| `rlimit_cpu_time_hard` | Linux | プロセスの CPU 時間のハードリソース制限。<br />単位: なし | 
| `rlimit_cpu_time_soft` | Linux | プロセスの CPU 時間のソフトリソース制限。<br />単位: なし | 
| `rlimit_file_locks_hard` | Linux | プロセスのファイルロックのハードリソース制限。<br />単位: なし | 
| `rlimit_file_locks_soft` | Linux | プロセスのファイルロックのソフトリソース制限。<br />単位: なし | 
| `rlimit_memory_data_hard` | Linux | プロセスのデータ用メモリに関するハードリソース制限。<br />単位: バイト | 
| `rlimit_memory_data_soft` | Linux | プロセスのデータ用メモリに関するソフトリソース制限。<br />単位: バイト | 
| `rlimit_memory_locked_hard` | Linux | プロセスのロックされたメモリに関するハードリソース制限。<br />単位: バイト | 
| `rlimit_memory_locked_soft` | Linux | プロセスのロックされたメモリに関するソフトリソース制限。<br />単位: バイト | 
| `rlimit_memory_rss_hard` | Linux | プロセスの物理メモリに関するハードリソース制限。<br />単位: バイト | 
| `rlimit_memory_rss_soft` | Linux | プロセスの物理メモリに関するソフトリソース制限。<br />単位: バイト | 
| `rlimit_memory_stack_hard` | Linux | プロセススタックに関するハードリソース制限。<br />単位: バイト | 
| `rlimit_memory_stack_soft` | Linux | プロセススタックに関するソフトリソース制限。<br />単位: バイト | 
| `rlimit_memory_vms_hard` | Linux | プロセスの仮想メモリに関するハードリソース制限。<br />単位: バイト | 
| `rlimit_memory_vms_soft` | Linux | プロセスの仮想メモリに関するソフトリソース制限。<br />単位: バイト | 

## CloudWatch エージェントによってインポートされたプロセスメトリクスの表示
<a name="CloudWatch-view-procstat-metrics"></a>

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

**CloudWatch コンソールでプロセスメトリクスを表示するには**

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1. ナビゲーションペインで [**Metrics (メトリクス)**] を選択してください。

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

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

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

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

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

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

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

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