web-dev-qa-db-ja.com

CloudWatchは、カスタム指標のディメンション間で集計しません

docs を読んで、私はこのステートメントを見ました。

CloudWatchは、カスタム指標のディメンション間で集計しません

それは巨大な制限ですね。私の見積もりではカスタム指標がほとんど役に立たなくなるので、私はこれを理解していることを確認したいと思います。

たとえば、複数のサーバーから出荷したカスタム指標があるとします。サーバーごとに表示したいが、それらをすべてまとめて表示したい。すべてのサーバー間でそれを集約する方法はありませんか?または、2つのカスタム指標を作成することを余儀なくされます.1つは単一サーバー用、もう1つはすべてのサーバー向けで、サーバーからサーバーごとに1つと、それらすべてを集約するための1つの二重投稿指標ですか?

11
red888

ドキュメントは正しいです。CloudWatchは、カスタム指標のディメンション全体で集計しません(EC2などの他のサービスによって公開された一部の指標では集計されます)。

この機能は、ユースケースにとっては便利で明確に見えるかもしれませんが、一般的なケースでそのような集計がどのように動作するかは明確ではありません。 CloudWatchでは最大10のディメンションを使用できるため、それらのすべての組み合わせを集約すると、多くの無駄なメトリックスが発生し、そのすべてに対して課金されます。たとえば、ディメンションを使用して指標をTestスタックとProdスタックに分割する場合があります。これらは完全に分離されており、それらを集計しても意味がありません。

CloudWatchは、メトリック名とディメンションの完全なセットを一意のメトリック識別子として扱います。あなたの場合、これは、貢献したいメトリックごとに観測を個別に公開する必要があることを意味します。

たとえば、Latencyという名前のメトリックがあり、Serverという名前のディメンションにホスト名を配置しているとします。 3つのサーバーがある場合、これにより3つのメトリックが作成されます。

  • Latency, Server=server1
  • Latency, Server=server2
  • Latency, Server=server3

したがって、質問で述べたアプローチが機能します。すべてのサーバーのデータを示す指標も必要な場合は、各サーバーが個別の指標に公開する必要があります。これは、ServerディメンションにAllServersのような新しい共通の値を使用して行うのが最適です。これにより、次のような4つのメトリックが得られます。

  • Latency, Server=server1 <-server1データのみ
  • Latency, Server=server2 <-server2データのみ
  • Latency, Server=server3 <-server3データのみ
  • Latency, Server=AllServers <-3つのサーバーすべてからのデータ