Amazon Web Services ブログ

CloudWatch Metric Streams — AWS メトリクスをパートナーと自身のアプリにリアルタイムで送信

2009 年に Amazon CloudWatch の立ち上げを行った際(Elastic Load Balancing、Auto Scaling、および Amazon CloudWatch の Amazon EC2 の新機能をリリース)、EC2 インスタンスのパフォーマンスメトリクス(CPU 負荷、ディスク I/O、ネットワーク I/O)を追跡し、それらを 1 分間隔でロールアップし、2週間にわたり保存しました。当時、パフォーマンスメトリクスは、インスタンスの状態をモニタリングし、 Auto Scaling をドライブするために使用されました。現在の CloudWatch は、はるかに総合的で洗練されたサービスになっています。最新の追加機能には、 すべての EBS ボリュームタイプに対して 1 分単位のメトリクス CloudWatch Lambda InsightsMetrics Explorer などが含まれます 。

AWS パートナーが CloudWatch メトリクスを使用して、あらゆる種類のモニタリング、アラート、コスト管理のためのツールを作成しました。パートナーはメトリクスにアクセスするために、それぞれの顧客の ListMetrics 関数と GetMetricData 関数の呼び出したポーリングフリートを作成しました。

これらのフリートは、各パートナーの顧客が作成した AWS リソースの数と、リソースごとに取得される CloudWatch メトリクスの数に比例して拡張が必要です。このポーリングは、各パートナーで行う必要のある単に差別化されていない手間のかかる作業です。この作業は、付加価値がなく、もし他のことに充てればより良い投資ができる貴重な時間を奪っています。

新しい Metric Streams
CloudWatch サイドメニュー(ダッシュボード、アラーム、メトリクスなど)AWS パートナーや他のユーザーが CloudWatch メトリクスに迅速かつ大規模にアクセスできるように、CloudWatch Metric Streams を起動しています。ポーリング (5~10 分のレイテンシーが発生) の代わりに、メトリクスが Kinesis Data Firehose ストリームに配信されます。これは拡張性が高く、はるかに効率的な、次の 2 つの重要なユースケースをサポートしています。

パートナーサービス — AWS パートナーが所有するエンドポイントにデータを書き込む Kinesis Data Firehose にメトリクスをストリーミングできます。これにより、パートナーはポーリングフリートを大幅に縮小し、主要なコストやパフォーマンスのメトリクスが予想外に変化した場合に、より迅速に対応できるツールを構築できます。

データレイク — 独自の Kinesis Data Firehose にメトリクスをストリーミングできます。そこから、必要なデータ変換を適用し、 Amazon Simple Storage Service (S3) または Amazon Redshift にメトリクスをプッシュできます。S3 SelectAmazon SageMakerAmazon EMRAmazon AthenaAmazon Kinesis Data Analytics などにおいて、すべての AWS 分析ツールで自由に利用できます。弊社のお客様は、これを利用して請求データとパフォーマンスデータを組み合わせ、コストの最適化、リソースパフォーマンス、リソース使用率を測定し改善しています。

CloudWatch Metric Streams はフルマネージド型で、セットアップが非常に簡単です。ストリームは、2~3 分以内に送信先に配信され、任意の量のメトリクスを処理するように拡張できます。作成した各ストリームに利用可能なメトリクスをすべて送信するか、利用可能な AWS(EC2、S3 など)またはカスタム名前空間を選択することもできます。

ストリームが設定されると、1~2 分以内にメトリクスのフローが開始されます。フローは、必要に応じて停止および再開することができます。これは、テストやデバッグに便利です。ストリームの設定で、バイナリの Open Telemetry 0.7 形式と人間が読める JSON 形式のいずれかを選択します。

各 Metric Stream は、特定の AWS リージョンに常駐し、メトリクスを単一の送信先に配信します。複数のパートナーにメトリクスを配信する場合は、パートナーごとに Metric Stream を作成する必要があります。複数の AWS アカウントやリージョンにまたがる集中型データレイクを作成する場合は、いくつかの IAM ロールを設定する必要があります(詳細については、「Controlling Access with Amazon Kinesis Data Firehose (Amazon Kinesis Data Firehose を使用したアクセスの制御) 」を参照してください)。

Metric Stream の作成
Metric Stream を作成する 2 つの方法を見ていきましょう。まず、Quick S3 セットアップオプションを使用して、データを Kinesis Data Firehose に送信し、そこから S3 にデータを転送します。次に、AWS Partner New Relic のエンドポイントに書き込む Firehose を使用します。

CloudWatch コンソールを開き、目的のリージョンを選択し、左側のナビゲーションで [ストリーム] をクリックします。ページを確認し、[ストリームの作成] をクリックして続行します。

コンソールの CloudWatch Metric Streams のホームページ

ストリーミングするメトリクスを選択します。[すべてのメトリクス] を選択して不要なメトリクスを除外するか、[選択した名前空間] をクリックして必要なものを含めることができます。[全て]に移動して、Firehose を除外します。

Metric Stream の作成 - パート 1、全てまたは任意選択

[Quick S3 セットアップ] を選択し、このセクションの他の設定はそのままにします(利用可能なすべてのオプションが表示されるように拡張されました)。

Metric Stream の作成 - S3 バケットと IAM ロールのオプション

次に、ストリームの名前 (MyMetrics-US-East-1A) を入力し、作成されるリソースを確認して、[Metric Stream の作成] をクリックします。

Metric Stream の名前を設定し、作成するリソースを確認します

ストリームは数秒以内に作成され、アクティブになります。

Metric Stream はアクティブです

オブジェクトが 1~2 分以内に S3 バケットに表示されます。

S3 バケットにオブジェクトが現れます

上記のツールのいずれかを使用してメトリクスを分析、あるいは生のデータを見ることができます。

NotePad++ 上に JSON形式で表示される単一のメトリクスオブジェクト

各 Metric Stream は、独自の CloudWatch メトリクスセットを生成します。

メトリクスストリームのメトリクス

実行中のストリームを停止できます。

実行中のストリームを停止する方法

それを起動します。

停止したストリームを再開する方法

CloudFormation テンプレートを使用して Metric Stream を作成することもできます。以下は抜粋です。

AWSTemplateFormatVersion: 2010-09-09
Resources:
  MetricStream:
    Type: 'AWS::CloudWatch::MetricStream'
    Properties:
      OutputFormat: json
      RoleArn: !GetAtt
        - MetricStreamToFirehoseRole
        - Arn
      FirehoseArn: !GetAtt
        - FirehoseToS3Bucket
        - Arn

ここでは、パートナースタイルのユースケースを見ていきましょう。 New Relic のチームが必要な IAM ロールと Metric Stream を作成した CloudFormation テンプレートでセットアップしました。API キーと S3 バケット名を入力するだけで、テンプレートによりすべての手間のかかる作業が実行されました。内容は以下の通りです。

New Relic UI に表示されるメトリクス

知っておくべきこと
このようなものです。 次に、注意点をいくつか挙げます。

リージョン — Metric Streams は、AWS 中国(北京)リージョンと AWS 中国(寧夏)リージョンを除くすべてのコマーシャル AWS リージョンで利用できるようになりました。前述のように、必要なアカウントとリージョンごとに Metric Stream を作成する必要があります(これは CloudFormation スタックセットの優れたユースケースです )。

料金 — 1000 メトリックの更新ごとに、および Kinesis Data Firehose に関連する料金に対して 0.003 USD をお支払いいただきます。詳細については、 料金ページをご覧ください 。

メトリクス — CloudWatch Metric Streams は、すべての CloudWatch メトリクスと互換性がありますが、タイムスタンプが 2 時間を超えたメトリクスは送信しません。これには、S3 の日々のストレージメトリクスや一部の請求メトリクスが含まれます。

パートナーサービス
Datadog、Dynatrace、New Relic、Splunk、Sumo Logic などの AWS パートナーが、メトリクスへのアクセスをより簡単かつ効率的にするために、この機能を設計しました。これにより、パートナーはより優れたツールを構築できるようになりました。弊社はこれらのパートナーと協力して、CloudWatch Metric Streams の使用を開始できるよう支援してきました。ここでは、パートナーの経験を共有するために書いたブログ記事をいくつか紹介します。(この記事が公開されているリンクで更新しています。)

今すぐご利用いただけます
CloudWatch Metric Streams が利用可能になりました。これを利用して、お客様または AWS パートナーの Kinesis Data Firehose にメトリクスをストリーミングできるようになりました。詳細については、ドキュメントを確認し、Amazon CloudWatch の AWS フォーラムにフィードバックを送信してください。

Jeff