[速報] CloudWatchの監視メトリクスをKinesis経由でストリーム送信可能な新機能「CloudWatch Metric Streams」が登場しました!

タイトルそのまんまですが、CloudWatchのメトリクスがKinesis Data Firehoseに流し込めるようになりました。監視SaaSでこの機能を使えばAPIポーリングのタイムラグが解消できますし、S3にため込んで保存期間を何年でも任意に延長可能になります。
2021.04.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Amazon CloudWatch に新しい機能、Metric Stream が登場しました!

いままでCloudWatchのメトリクスデータを、New RelicやDatadogのような外部のSaaSから参照しようと思ったら、定期的にAPIでポーリングするしかありませんでした。そのため、(この公式Blogにも書いてますが)メトリクスの種類によっては5〜10分程度の遅延が発生することになってました。

今回の機能で、CloudWatch側で更新されると同時にSaaS側へもpushされることになるため、同じタイミングで参照できるようになります。これはうれしいですね!

CloudWatch Metric Streamで出来ること

要は、CloudWatch MetricのデータをKinesis Data Firehoseに流し込むことができる機能です。
Firehose はストリームデータをS3やAWS Lambdaなどに流し込める他、外部の一部SaaSやHTTPエンドポイントに送信できるため、この機能を使って以下のようなことが出来るようになります。

  • Amazon S3に送信、長期間保存&アーカイブ
  • Amazon ESやRedshiftに送信、独自に分析・ダッシュボード作成
  • AWS Lambdaに送信、データの集計や変形処理
  • 外部SaaSに送信、他の(AWS外の)監視データと一元管理

特に、CloudWatchはメトリクスデータを最長455日まで保管でしたから、監査目的で3年程度保管しなければならないなどの要件があった場合、面倒なこともあったかと思います。そういった制限から自由になるのは大きいのではないでしょうか。

また上に書いたように、CloudWatch -- SaaS間のポーリングによる遅延がほぼ無くなることで、より「いま」に近い状態を観測できたり異常に気づいたりできるようになったのも嬉しいですね!

なおドキュメントだとわかりにくいですが、送信するメトリクスは CloudWatch のネームスペース単位でフィルタがかけられますので、不要なメトリックまで送信してコストが。。。となることはありません。安心ですね!

画像はAWS Blogより引用

CloudWatch Metric Streamのデータ形式

以下の二種類から選択できます。

OpenTelemetry 0.7 は、昨年11月に発行された最新版です。また、同じく本日 OTLP (OpenTelemetry Protocol)もStableになり、「メトリクスの交換フォーマットとして使えるようになっ」ています。おそらくタイミングを合わせたのだと思いますが、今回のこの機能が初日からNew RelicDatadogDynatraceSplunk、そしてSumo Logicで使えるようになったのも、この辺りの規格の進行が影響しているのかなと思われます。

JSONフォーマットはうれしいですね。自家製でデータをパースしたり、後々調査のために保存しておくことを考えると、とりあえずJSONで出しとけと出来るのはありがたいです。

CloudWatch Metric Streamが使えるリージョン

現在利用可能な商用リージョンのうち、中国に位置する Beijing と Ningxia 以外とのこと。
大阪リージョンでも利用可能でした!

すぐに使える?

上述したとおりAWS側は多くのリージョンで即日利用可能ですが、サードパーティ製の製品と組み合わせているような場合には当然、サードパーティ側の対応が必要です。
初期パートナーとしては上でもふれたように、以下の 5 製品が対象となってます。

他の監視SaaSも今後対応がすすんでいくと思いますので、そちらをお使いの場合は楽しみに待っていましょう!

お値段

1,000メトリクスごとに 0.003 USD、となってます。
これは、APIリクエストで取得する時の「1,000メトリクスごとに 0.01 USD」に比べると 1/3 程度になっています。

(記事執筆時点で英語ドキュメントのみ)

これに加えてKinesis Data Firehoseの利用費(最初の 500TB まで 0.036USD)もかかりますが、概ねAPIよりは安くなるのかな?という感じはします。この辺りはポーリング間隔などのユースケースも絡んできますので、各自ご確認をお願いします。

とりあえず試すには?

S3バケットにため込むだけなら、Metric StreamのUIに「クイックセットアップ」が用意されているので簡単に試せます。
是非試してみてください!

まとめ

新機能、Amazon CloudWatch Metric Streamをご紹介しました。これまで監視SaaSといえば、CloudWatchのAPIをポーリングすることでコストや遅延の発生がつきまとっていました。この機能が使えればもう(?)安心ですね!

CloudWatchももちろん優秀でこれだけでも十分使えるのですが、オンプレミスや他のハイブリッドクラウドなどと連携するには限界があります。Werner氏も「いろいろ使っていき(意訳)」と言っていますね。個人的な憶測ですが、タイミング的にManaged Service for Prometeusもこの機能が裏で動いてるのかな?と思いました。

他SaaSとの連携もこれから試してみたいと思います。