Amazon CloudWatch グラフの検索式がリリースされました!

こんにちは 園部です。

CloudWatch で、新しい機能がリリースされましたので、早速やってみたいと思います!

Amazon CloudWatch Launches Search Expressions

Search Expressions とは?

You can now use search expressions to define Amazon CloudWatch dashboards.

  • CloudWatch ダッシュボードで、グラフを指定する際に利用できる検索式です。

This enables you to create dashboards that update automatically as new resources are created that match the search query, providing up-to-the-minute visibility with reduced operational overhead.

  • 定義した検索クエリにヒットするリソースが作成された際に、自動でグラフへ反映されます。

やってみた

公式ドキュメント(英語) を参考にやっていきます。

検証ケース

  • CPUUtilization に関するグラフおよびダッシュボードを作成します。
  • 既存で、EC2が1台存在している状態から +1台 し、グラフへ反映されることを確認します。

既存の状況

  • EC2が1台(For-Search-Expressions01)起動しています。

  • CloudWatch メトリクスに、上記のインスタンスに関するメトリクスが蓄積されています。

ダッシュボードの作成

マネジメントコンソールへログイン >>> CloudWatchへ移動 >>> ダッシュボードを選択 >>> ダッシュボードの作成を選択 >>> ダッシュボード名を入力 >>> ダッシュボードの作成を選択 >>> キャンセルを選択

検索式(Search Expressions)を利用したグラブの追加

作成したダッシュボードへ移動 >>> ウィジェットの追加を選択

今回は、折れ線グラフを選択 >>> 設定を選択

グラフ化したメトリクスタブを選択 >>> 数学式の追加を選択 >>> グラフタイトルを入力し、ウィジェットの作成を選択

※ 今回は、デフォルトの設定を利用します。

「詳細」欄に、デフォルトの内容が表示されます。

SEARCH('{AWS/EC2,InstanceId} MetricName="CPUUtilization"', 'Average', 300)

EC2の新規起動とダッシュボードへの反映

EC2へ移動 >>> 既存のインスタンスを選択 >>> アクションを選択 >>> 同様のものを作成を選択

起動後に、しばらくすると、ダッシュボードに追加したグラフに、新しく起動したインスタンスが追加されています。

検索式(Search Expressions)の使い方

構文

公式ドキュメント(英語) に、構文について記載がありますので、少し見ていきたいと思います。

SEARCH(' {Namespace, DimensionName1, DimensionName2, ...}, SearchTerm', 'Statistic', Period)
  • 上記の通り、CloudWatchで利用されている項目 を検索条件としています。
  • 検索式の最大文字数は1024文字です。また1つのグラフに最大5つまで検索式を利用できます。
  • 部分一致と完全一致が利用可能です。
  • ANDやNOTなどのブール演算子も利用可能です。
  • 数学式の一部として利用可能です。

サンプル

公式ドキュメント(英語) に、サンプルが複数記載されています。 一部、取り上げてみます。

  • インスタンスID 単位で、EC2 CPUUtilization(300秒間の平均) を表示します。 (今回の検証ケース)
SEARCH(' {AWS/EC2,InstanceId} MetricName="CPUUtilization" ', 'Average', 300)
  • 二つのネームスペースにまたがって、CPUUtilization メトリクスを表示します。
SEARCH(' MetricName="CPUUtilization" AND ("AWS/ECS" OR "AWS/ES") ', 'Average', 300)
  • ネームスペースが "AWS"以外、カスタムメトリクスを表示します。
SEARCH(' NOT Namespace=AWS ', 'Average', 120)
  • ネームスペース、ディメンション、メトリクスに、Errorsという文言が入っている内容を表示します。
SEARCH(' Errors ', 'Average', 300)

さいごに

簡単なケースにはなりますがやってみました。
サービスやシステムに沿ったディメンションを追加して、ラベルリングされているとより効果的な検索が可能になると思います。
検索条件を上手に利用することで、今まで見れなかった切り口や、手運用でカバーしていた部分が解消されるケースもあるのではないでしょうか。