

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 環境の Amazon CloudWatch カスタムメトリクスの発行
<a name="health-enhanced-cloudwatch"></a>

 AWS Elastic Beanstalk 拡張ヘルスレポートによって収集されたデータをカスタムメトリクスとして Amazon CloudWatch に公開できます。CloudWatch にメトリクスをパブリッシュすることにより、時間の経過に伴うアプリケーションのパフォーマンスの変化をモニタリングできるほか、リソースの使用状況やリクエストのレイテンシーが負荷に応じてどのようにスケーリングするかを追跡することによって、発生する可能性のある問題を特定できます。

また、CloudWatch にメトリクスをパブリッシュすることにより、[モニタリンググラフ](environment-health-console.md#environment-health-console-graphs)と[アラーム](using-features.alarms.md)でメトリクスを使用できます。無料のメトリクスである *EnvironmentHealth* は、拡張ヘルスレポートを使用するとき、自動的に有効になります。*EnvironmentHealth* 以外のカスタムメトリクスを使用する場合、[CloudWatch の標準料金](https://aws.amazon.com/cloudwatch/pricing/)が課金されます。

環境の CloudWatch カスタムメトリクスをパブリッシュするには、まず環境で拡張ヘルスレポートを有効にする必要があります。手順については「[Elastic Beanstalk の拡張ヘルスレポートの有効化](health-enhanced-enable.md)」を参照してください。

**Topics**
+ [拡張ヘルスレポートのメトリクス](#health-enhanced-cloudwatch-metrics)
+ [Elastic Beanstalk コンソールを使用した CloudWatch メトリクスの設定](#health-enhanced-cloudwatch-console)
+ [EB CLI を使用した CloudWatch カスタムメトリクスの設定](#health-enhanced-cloudwatch-ebcli)
+ [カスタムメトリクス設定ドキュメントの提供](#health-enhanced-cloudwatch-configdocument)

## 拡張ヘルスレポートのメトリクス
<a name="health-enhanced-cloudwatch-metrics"></a>

環境で拡張ヘルスレポートを有効にすると、拡張ヘルスレポートシステムが [CloudWatch カスタムメトリクス](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/publishingMetrics.html)の 1 つである *EnvironmentHealth* を自動的にパブリッシュします。追加のメトリクスを CloudWatch にパブリッシュするには、[Elastic Beanstalk コンソール](#health-enhanced-cloudwatch-console)、[EB CLI](#health-enhanced-cloudwatch-ebcli)、または [.ebextensions](command-options.md) を使用して、これらのメトリクスで環境を設定します。

環境から、次の拡張ヘルスメトリクスを CloudWatch にパブリッシュすることができます。使用可能なメトリクス - すべてのプラットフォーム

`EnvironmentHealth`  
*環境のみが対象。*他のメトリクスを設定していなければ、拡張ヘルスレポートシステムからパブリッシュされる唯一の CloudWatch メトリクスです。環境の状態は、7 種類の[ステータス](health-enhanced-status.md)のいずれかで表されます。CloudWatch コンソールでは、これらのステータスは以下の値にマッピングされます。  
+ 0 – OK
+ 1 – Info
+ 5 – Unknown
+ 10 – No data
+ 15 – Warning
+ 20 – Degraded
+ 25 – Severe

`InstancesSevere``InstancesDegraded``InstancesWarning``InstancesInfo``InstancesOk``InstancesPending``InstancesUnknown``InstancesNoData`  
*環境のみが対象。*これらのメトリクスは、各ヘルスステータスにある環境内のインスタンスの数を示します。`InstancesNoData` は、データを受け取っていないインスタンスの数を示します (該当する場合)。

`ApplicationRequestsTotal``ApplicationRequests5xx``ApplicationRequests4xx``ApplicationRequests3xx``ApplicationRequests2xx`  
*インスタンスと環境が対象。*インスタンスまたは環境で完了したリクエストの総数と、各ステータスコードカテゴリで完了したリクエストの数を示します。

`ApplicationLatencyP10``ApplicationLatencyP50``ApplicationLatencyP75``ApplicationLatencyP85``ApplicationLatencyP90``ApplicationLatencyP95``ApplicationLatencyP99``ApplicationLatencyP99.9`  
*インスタンスと環境が対象。*リクエストのうち、早い方から *x* パーセントの完了にかかった平均時間を直ちに示します。

`InstanceHealth`  
*インスタンスのみが対象。*インスタンスの現在のヘルスステータスを示します。インスタンスの状態は、7 種類の[ステータス](health-enhanced-status.md)のいずれかで表されます。CloudWatch コンソールでは、これらのステータスは以下の値にマッピングされます。  
+ 0 – OK
+ 1 – Info
+ 5 – Unknown
+ 10 – No data
+ 15 – Warning
+ 20 – Degraded
+ 25 – Severe使用可能なメトリクス - Linux

`CPUIrq``CPUIdle``CPUUser``CPUSystem``CPUSoftirq``CPUIowait``CPUNice`  
*インスタンスのみが対象。*過去 1 分間に CPU が各状態で消費した時間の割合を示します。

`LoadAverage1min`  
*インスタンスのみが対象。*インスタンスに関する過去 1 分間の CPU 負荷の平均値。

`RootFilesystemUtil`  
*インスタンスのみが対象。*使用中のディスク容量の割合を示します。利用可能なメトリクス - Windows

`CPUIdle``CPUUser``CPUPrivileged`  
インスタンスのみが対象。過去 1 分間に CPU が各状態で消費した時間の割合を示します。

## Elastic Beanstalk コンソールを使用した CloudWatch メトリクスの設定
<a name="health-enhanced-cloudwatch-console"></a>

Elastic Beanstalk コンソールを使用して、拡張ヘルスレポートのメトリクスを CloudWatch にパブリッシュし、モニタリンググラフとアラームで使用できるように環境を設定できます。

**Elastic Beanstalk コンソールで CloudWatch カスタムメトリクスを設定するには**

1. [Elastic Beanstalk コンソール](https://console.aws.amazon.com/elasticbeanstalk)を開き、**リージョン**リストで を選択します AWS リージョン。

1. ナビゲーションペインで、[**環境**] を選択し、リストから環境の名前を選択します。

1. ナビゲーションペインで、[**設定**] を選択します。

1. [**モニタリング**] 設定カテゴリで、[**編集**] を選択します。

1. [**Health reporting (ヘルプレポート)**] で、CloudWatch に公開するインスタンスと環境のメトリクスを選択します。複数のメトリクスを選択するには、**Ctrl** キーを押して選択します。

1. ページの最下部で **[適用]** を選択し変更を保存します。

CloudWatch カスタムメトリクスを有効にすると、[[**Monitoring (モニタリング)**] ページ](environment-health-console.md)で使用できるメトリクスのリストにこれらのメトリクスが追加されます。

## EB CLI を使用した CloudWatch カスタムメトリクスの設定
<a name="health-enhanced-cloudwatch-ebcli"></a>

EB CLI を使用すると、環境の設定をローカルに保存し、パブリッシュするメトリクスを定義するエントリを追加してから、その設定を Elastic Beanstalk にアップロードすることによって、カスタムメトリクスを設定できます。保存した設定は、環境を作成する前または作成した後に環境に適用できます。

**EB CLI と保存した設定を使用して CloudWatch カスタムメトリクスを設定するには**

1. [**eb init**](eb-cli3-configuration.md) でプロジェクトフォルダを初期化します。

1. **eb create** コマンドを実行して、環境を作成します。

1. **eb config save** コマンドを実行して、設定テンプレートをローカルに保存します。次の例では、`--cfg` オプションを使用して、設定の名前が指定されています。

   ```
   $ eb config save --cfg {{01-base-state}}
   Configuration saved at: ~/project/.elasticbeanstalk/saved_configs/01-base-state.cfg.yml
   ```

1. 保存した設定ファイルをテキストエディタで開きます。

1. `OptionSettings` > `aws:elasticbeanstalk:healthreporting:system:` で、CloudWatch メトリクスを個別に有効にする `ConfigDocument` キーを追加します。たとえば、次に示す `ConfigDocument` は、環境レベルで `ApplicationRequests5xx` メトリクスと `ApplicationRequests4xx` メトリクスをパブリッシュし、インスタンスレベルで `ApplicationRequestsTotal` メトリクスをパブリッシュします。

   ```
   OptionSettings:
     ...
     aws:elasticbeanstalk:healthreporting:system:
       ConfigDocument:
         CloudWatchMetrics:
           Environment:
             ApplicationRequests5xx: 60
             ApplicationRequests4xx: 60
           Instance:
             ApplicationRequestsTotal: 60
         Version: 1
       SystemType: enhanced
   ...
   ```

   この例では、60 は測定間隔の秒数を示しています。これは、現在サポートされている唯一の値です。
**注記**  
同じ `ConfigDocument` オプション設定で、`CloudWatchMetrics` と `Rules` を組み合わせることができます。`Rules` については、「[環境の拡張ヘルスルールの設定](health-enhanced-rules.md)」で説明しています。  
以前に `Rules` を使用して拡張ヘルスルールを設定している場合、**eb config save** コマンドを使用して取得される設定ファイルには、既に `ConfigDocument` キーが `Rules` セクションにあります。*削除しないでください*。同じ `ConfigDocument` オプション値に `CloudWatchMetrics` セクションを追加します。

1. 設定ファイルを保存し、テキストエディタを閉じます。この例では、更新した設定ファイルは、ダウンロードした設定ファイルとは異なる名前 (`02-cloudwatch-enabled.cfg.yml`) で保存されています。このファイルがアップロードされると、別の保存済み設定が作成されます。ダウンロードしたファイル同じ名前を使用すると、新しいキーペアを作成せずに既存の設定を上書きできます。

1. **eb config put** コマンドを使用して、更新した設定ファイルを Elastic Beanstalk にアップロードします。

   ```
   $ eb config put {{02-cloudwatch-enabled}}
   ```

   保存した設定に対して **eb config** `get` コマンドと `put` コマンドを使用するときは、ファイル拡張子を含めないでください。

1. 実行中の環境に、保存済みの設定を適用します。

   ```
   $ eb config --cfg {{02-cloudwatch-enabled}}
   ```

   `--cfg` オプションは、環境に適用される名前付き設定ファイルを指定します。設定ファイルはローカルまたは Elastic Beanstalk に保存できます。指定した名前を持つ設定ファイルが両方の場所に存在する場合、EB CLI はローカルファイルを使用します。

## カスタムメトリクス設定ドキュメントの提供
<a name="health-enhanced-cloudwatch-configdocument"></a>

Amazon CloudWatch カスタムメトリクスの設定 (config) ドキュメントは、環境レベルとインスタンスレベルでパブリッシュするメトリクスを一覧表示する JSON ドキュメントです。次の例は、すべての利用可能なカスタムメトリクスを Linux で有効にする設定ドキュメントを示しています。

```
{
  "CloudWatchMetrics": {
    "Environment": {
      "ApplicationLatencyP99.9": 60,
      "InstancesSevere": 60,
      "ApplicationLatencyP90": 60,
      "ApplicationLatencyP99": 60,
      "ApplicationLatencyP95": 60,
      "InstancesUnknown": 60,
      "ApplicationLatencyP85": 60,
      "InstancesInfo": 60,
      "ApplicationRequests2xx": 60,
      "InstancesDegraded": 60,
      "InstancesWarning": 60,
      "ApplicationLatencyP50": 60,
      "ApplicationRequestsTotal": 60,
      "InstancesNoData": 60,
      "InstancesPending": 60,
      "ApplicationLatencyP10": 60,
      "ApplicationRequests5xx": 60,
      "ApplicationLatencyP75": 60,
      "InstancesOk": 60,
      "ApplicationRequests3xx": 60,
      "ApplicationRequests4xx": 60
    },
    "Instance": {
      "ApplicationLatencyP99.9": 60,
      "ApplicationLatencyP90": 60,
      "ApplicationLatencyP99": 60,
      "ApplicationLatencyP95": 60,
      "ApplicationLatencyP85": 60,
      "CPUUser": 60,
      "ApplicationRequests2xx": 60,
      "CPUIdle": 60,
      "ApplicationLatencyP50": 60,
      "ApplicationRequestsTotal": 60,
      "RootFilesystemUtil": 60,
      "LoadAverage1min": 60,
      "CPUIrq": 60,
      "CPUNice": 60,
      "CPUIowait": 60,
      "ApplicationLatencyP10": 60,
      "LoadAverage5min": 60,
      "ApplicationRequests5xx": 60,
      "ApplicationLatencyP75": 60,
      "CPUSystem": 60,
      "ApplicationRequests3xx": 60,
      "ApplicationRequests4xx": 60,
      "InstanceHealth": 60,
      "CPUSoftirq": 60
    }
  },
  "Version": 1
}
```

の場合 AWS CLI、 ドキュメントをオプション設定引数の`Value`キーの値として渡します。これは、それ自体が JSON オブジェクトです。この場合、埋め込まれているドキュメントの引用符はエスケープする必要があります。

```
$ aws elasticbeanstalk validate-configuration-settings --application-name my-app --environment-name my-env --option-settings '[
    {
        "Namespace": "aws:elasticbeanstalk:healthreporting:system",
        "OptionName": "ConfigDocument",
        "Value": "{\"CloudWatchMetrics\": {\"Environment\": {\"ApplicationLatencyP99.9\": 60,\"InstancesSevere\": 60,\"ApplicationLatencyP90\": 60,\"ApplicationLatencyP99\": 60,\"ApplicationLatencyP95\": 60,\"InstancesUnknown\": 60,\"ApplicationLatencyP85\": 60,\"InstancesInfo\": 60,\"ApplicationRequests2xx\": 60,\"InstancesDegraded\": 60,\"InstancesWarning\": 60,\"ApplicationLatencyP50\": 60,\"ApplicationRequestsTotal\": 60,\"InstancesNoData\": 60,\"InstancesPending\": 60,\"ApplicationLatencyP10\": 60,\"ApplicationRequests5xx\": 60,\"ApplicationLatencyP75\": 60,\"InstancesOk\": 60,\"ApplicationRequests3xx\": 60,\"ApplicationRequests4xx\": 60},\"Instance\": {\"ApplicationLatencyP99.9\": 60,\"ApplicationLatencyP90\": 60,\"ApplicationLatencyP99\": 60,\"ApplicationLatencyP95\": 60,\"ApplicationLatencyP85\": 60,\"CPUUser\": 60,\"ApplicationRequests2xx\": 60,\"CPUIdle\": 60,\"ApplicationLatencyP50\": 60,\"ApplicationRequestsTotal\": 60,\"RootFilesystemUtil\": 60,\"LoadAverage1min\": 60,\"CPUIrq\": 60,\"CPUNice\": 60,\"CPUIowait\": 60,\"ApplicationLatencyP10\": 60,\"LoadAverage5min\": 60,\"ApplicationRequests5xx\": 60,\"ApplicationLatencyP75\": 60,\"CPUSystem\": 60,\"ApplicationRequests3xx\": 60,\"ApplicationRequests4xx\": 60,\"InstanceHealth\": 60,\"CPUSoftirq\": 60}},\"Version\": 1}"
    }
]'
```

YAML の `.ebextensions` 設定ファイルの場合は、JSON ドキュメントをそのまま提供できます。

```
  option_settings:
    - namespace: aws:elasticbeanstalk:healthreporting:system
      option_name: ConfigDocument
      value: {
  "CloudWatchMetrics": {
    "Environment": {
      "ApplicationLatencyP99.9": 60,
      "InstancesSevere": 60,
      "ApplicationLatencyP90": 60,
      "ApplicationLatencyP99": 60,
      "ApplicationLatencyP95": 60,
      "InstancesUnknown": 60,
      "ApplicationLatencyP85": 60,
      "InstancesInfo": 60,
      "ApplicationRequests2xx": 60,
      "InstancesDegraded": 60,
      "InstancesWarning": 60,
      "ApplicationLatencyP50": 60,
      "ApplicationRequestsTotal": 60,
      "InstancesNoData": 60,
      "InstancesPending": 60,
      "ApplicationLatencyP10": 60,
      "ApplicationRequests5xx": 60,
      "ApplicationLatencyP75": 60,
      "InstancesOk": 60,
      "ApplicationRequests3xx": 60,
      "ApplicationRequests4xx": 60
    },
    "Instance": {
      "ApplicationLatencyP99.9": 60,
      "ApplicationLatencyP90": 60,
      "ApplicationLatencyP99": 60,
      "ApplicationLatencyP95": 60,
      "ApplicationLatencyP85": 60,
      "CPUUser": 60,
      "ApplicationRequests2xx": 60,
      "CPUIdle": 60,
      "ApplicationLatencyP50": 60,
      "ApplicationRequestsTotal": 60,
      "RootFilesystemUtil": 60,
      "LoadAverage1min": 60,
      "CPUIrq": 60,
      "CPUNice": 60,
      "CPUIowait": 60,
      "ApplicationLatencyP10": 60,
      "LoadAverage5min": 60,
      "ApplicationRequests5xx": 60,
      "ApplicationLatencyP75": 60,
      "CPUSystem": 60,
      "ApplicationRequests3xx": 60,
      "ApplicationRequests4xx": 60,
      "InstanceHealth": 60,
      "CPUSoftirq": 60
    }
  },
  "Version": 1
}
```