CloudWatchにカスタムメトリクスをプッシュするにはどうすればよいですか?

最終更新日: 2022年10月11日

Amazon CloudWatchにカスタムメトリクスをプッシュするにはどうすればよいですか?

簡単な説明

AWS のサービスはデフォルトでデータポイントを CloudWatch にプッシュします。ただし、AWS のサービスでサポートされていないメトリクスに基づいて、リソースのパフォーマンスを調整する必要がある場合があるかもしれません。このような場合、統合 CloudWatch エージェントまたは API を使用して、カスタムメトリクスを CloudWatch にプッシュできます。

重要: カスタムメトリクスは、ストレージと API の使用状況に応じて課金されます。

解決方法

CloudWatch エージェントを使用してカスタムメトリクスをプッシュする

統合 CloudWatch エージェントは、システムレベルのメトリクスを収集し、カスタムメトリクスとして CloudWatch に送信します。エージェントを使用して、次から取得したカスタムメトリクスをプッシュできます。

  • Linux サーバーまたは Windows サーバー
  • Amazon Elastic Compute Cloud (Amazon EC2) インスタンスまたはオンプレミスサーバー

Linux の場合は、サポートされているメトリクスのリストを参照してください。

ディスクメトリクスのエージェント設定ファイルメトリクスブロックの例 (Linux):

"disk": 
    {
        "measurement": [
          
          "used_percent"
        ],
        "resources": [
          
          "*"
        ],
        "drop_device": 
        true
      }

Windows の場合、エージェント設定ファイルの Windows Performance Monitor に記載されている任意のカウンターを参照できます。

Processor Counter のエージェント設定ファイルメトリクスブロックの例 (Windows):

"Processor": {
        "measurement": [
          {"name": "% Idle Time", "rename": "CPU_IDLE", "unit": "Percent"},
          "% Interrupt Time",
          "% User Time",
          "% Processor Time"
        ],
        "resources": [
          "*"
        ],
        "append_dimensions": {
          "d1": "win_foo",
          "d2": "win_bar"
        }
      }

また、「StatsD」および「collectd」プロトコルを使用して、アプリケーションやサービスからカスタムメトリクスを取得することもできます。次に、メトリクスがエージェントを介してプッシュされます。StatsD は Linux サーバーと Windows サーバーの両方でサポートされていますが、collectd は Linux サーバーでのみサポートされています。これらのプロトコルを使用するには、次の手順を実行します。

1.    CloudWatch 統合エージェントをインストールします。

2.    CloudWatch の許可を持つインスタンスにロールまたは認証情報を割り当てます

3.    CloudWatch エージェント設定ファイルを作成します

4.    エージェントを起動します

PutMetricData を使用してカスタムメトリクスをプッシュする

ユースケースで CloudWatch 統合エージェントの使用がサポートされていない場合は、PutMetricData API を使用して CloudWatch にカスタムメトリクスをプッシュできます。

例えば、特定のポートの接続をカスタムメトリクスとしてプッシュするには、値をローカルに取得して API で転送できます。

total_conn=$(netstat -an | grep <port> | wc -l) 

aws cloudwatch put-metric-data   --namespace "totalconn"   --metric-name <port> --dimensions Instance=<InstanceId> --value $  total_conn

同様に、AWS SDK を使用して PutMetricData API を使用し、カスタムメトリクスを CloudWatch に送信できます。カスタムメトリクスを送信するために定期的に実行されるローカルスクリプトを作成します。API は、以下の理由から、さまざまなメトリクスと複数の値をプッシュするのに最適です。

  • 1 つの API で最大 1000 のさまざまなメトリクスを使用できます。
  • 値およびカウント数メソッドを使用すると、1 つの PutMetricData リクエストで、メトリクスごとに最大 150 の値を公開できます。
  • メトリクスごとに最大 30 個のディメンションを使用できます。
  • 各 PutMetricData リクエストは、HTTP POST リクエストに対して 1 MB に制限されます。

例えば、メトリクスごとに個別の API コールを行う代わりに、1 つの API 呼び出しを使用して複数のメトリクスをプッシュできます。

aws cloudwatch put-metric-data --namespace "Usage Metrics" --metric-data file://metric.json

metric.json の場所:

[
  {
    "MetricName": "DiskMetric",
    "Value": <value_derived_by_some_calculation>,
    "Unit": "Count"
  },
  {
    "MetricName": "MemoryMetric",
    
    "Value": <value_derived_by_some_calculation>,
    "Unit": "Count"
  }
]

このアプローチでは、API とストレージの数に基づいてカスタムメトリクスが課金されるため、通常はコストを削減できます。このアプローチは、PutMetricData API のスロットリングを減らすのにも役立ちます。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?