0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CloudWatchメトリクスを別システムへ転送する

Last updated at Posted at 2025-08-01

概要

CloudWatchにて収集しているAWSサービスの様々なメトリクスを、別システムに転送するための仕組み及びセットアップ手順を示します。

構成

構成図は次のようになります。
image.png

  • CloudWatch:各種AWSサービスのメトリクスを自動的に収集しています。また、CloudWatch Metric Streamsという機能を利用し、収集したメトリクスをData Firehoseへ転送します
  • Data Firehose:CloudWatchからメトリクスを受け取り、API Gatewayへ転送します
  • API Gateway:Data Firehoseからメトリクスを受け取り、別システムへ転送します

API Gatewayを使わなくとも、Data Firehoseから様々な外部サービスへ転送することができますが、
Amazon Data Firehose ではアクセストークンを"Amz-Firehose-Access-Key"というリクエストヘッダーで送信する仕様になっています。
今回の転送先システムでは、このリクエストヘッダーを受け付けておらず(401エラーが発生してしまうことを確認している)ため、Authorizationヘッダを設定する必要があり、そのためにAPI Gatewayを利用しています。
転送先システムが"Amz-Firehose-Access-Key"に対応しているのであれば、API Gatewayは不要になるので、本手順のAPI Gatewayの箇所は飛ばしてください。

また、メトリクスの情報はBase64エンコードされた状態で転送先システムにて受け取ります。デコードした状態で受け取りたい場合は、Lambda等を利用しデコード処理を組み込んで下さい。本記事ではLambdaによるデコード処理方法は記載対象外とします。

手順

API Gatewayセットアップ

API GatewayのタイプはREST APIにて作成します。
image.png

作成が完了すると、次のような画面になるはずです。
メソッドを作成を押下します。
image.png

メソッドの作成画面では、次のように設定にして下さい。

  • メソッドタイプ:POST
  • 統合タイプ:HTTP
  • HTTPプロキシ統合:有効化
  • HTTPメソッド:POST
  • エンドポイントURL:<転送先システムのエンドポイントURL>
  • コンテンツの処理:パススルー
    image.png

image.png

メソッドの作成後、"統合リクエスト"タブを開き、下記のようにURL リクエストヘッダーのパラメータ設定を行います。名前を"Authorization"とし、マッピング元を"bearer <アクセストークン>"としてください。値は一重符で囲う必要があります。※<アクセストークン>には、転送先システムにて発行された実際のトークンを入力して下さい。
image.png

設定が完了したら、下記のように"テスト"タブから、テストデータを送信することが可能ですので、転送先システムにて受信できるかどうかを確認して下さい。
image.png

テストが完了したら、APIをデプロイして下さい。

image.png

デプロイ後、API gateway向けのURLが発行されるので、curl等で疎通確認して下さい。以下のcurlコマンドはサンプルです。

$ curl -X POST https://<API Gateway URL> -H "Content-Type:application/json" -d "{\"val\":\"from api\"}"

Data firehoseセットアップ

Data firehoseの作成画面では、次のように設定して下さい。

  • ソース:Direct PUT

  • 送信先:HTTPエンドポイント
    image.png

  • HTTPエンドポイントURL:先ほど作成したAPI GatewayのURL

image.png

image.png

  • S3バックアップバケット:任意のS3バケット

image.png

image.png

CloudWatch Metric Streamsセットアップ

CloudWatch Metric Streamsの作成画面では、次のように設定して下さい。

  • 送信先:先ほど作成したData Firehose

image.png

image.png

  • 出力フォーマット:転送先システムに合わせたフォーマットを選択します。今回の転送先システムではJSONに対応しているため、JSONを選択しています。
  • ストリーミングするメトリクス:すべてのメトリクスを転送するか、一部のメトリクスのみを転送するか、選択して下さい。
    image.png

image.png

動作確認

転送先システムにて、データが受信できていることを確認して下さい。
データはBase64エンコードされているため、デコード処理が必要です。デコードすると、以下のようなメトリクス情報が表示されることを確認して下さい。以下はサンプルのデータですが、EC2のメトリクスになります。

{"metric_stream_name":"CustomPartial-DUZS5w","account_id":"xxxxxxxxxxx","region":"us-west-2","namespace":"AWS/EC2","metric_name":"NetworkOut","dimensions":{"InstanceId":"xxxxxxxxxxx"},"timestamp":1737081600000,"value":{"max":1259261.0,"min":14083.0,"sum":1862702.0,"count":5.0},"unit":"Bytes"}
{"metric_stream_name":"CustomPartial-DUZS5w","account_id":"xxxxxxxxxxx","region":"us-west-2","namespace":"AWS/EC2","metric_name":"CPUCreditBalance","dimensions":{"InstanceId":"xxxxxxxxxxx"},"timestamp":1737081600000,"value":{"max":576.0,"min":576.0,"sum":576.0,"count":1.0},"unit":"Count"}
{"metric_stream_name":"CustomPartial-DUZS5w","account_id":"xxxxxxxxxxx","region":"us-west-2","namespace":"AWS/EC2","metric_name":"StatusCheckFailed","dimensions":{"InstanceId":"xxxxxxxxxxx"},"timestamp":1737081780000,"value":{"max":0.0,"min":0.0,"sum":0.0,"count":1.0},"unit":"Count"}

以上でセットアップは完了となります。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?