🎄

Amazon CloudWatch Application Signals(Preview) 徹底解説 というタイトルで登壇しました

2023/12/18に公開

こんにちは。
ご機嫌いかがでしょうか。
"No human labor is no human error" が大好きな吉井 亮です。

2023年12月18日に開催された OpsJAWS Meetup#26 で 『Amazon CloudWatch Application Signals(Preview) 徹底解説』 というタイトルで登壇しました。
資料の公開とサマリーをお届けします。

資料

内容

  • CloudWatch Application Signals(Preview) とは
  • 何が嬉しいのか
  • デモ (紙芝居)

CloudWatch Application Signals(Preview) とは

Signals とはどのような意味でしょうか?
OpenTeletmetry の定義 だと、「システムの基礎となるアクティビティを記述するシステム出力」となっています。
おそらくですが、Application Signals はこの定義に沿っていると思います。

Alt text

Application Signals を使うと、アプリケーションの自動計測や運用を簡単に行うことができます。
手動による計装や複雑なメトリクスを作成するといった面倒な作業が不要です。

ADOT 自動計装エージェントによりアプリケーションからメトリクス(実態はログ)とトレースを収集します。
収集されたシグナルはダッシュボードを作成せずとも、アプリケーションのパフォーマンス目標を可視化することができます。
また、複数の AWS サービスと連携することが可能です。

Alt text

プレビュー時点で対応している言語は Java です。JVM は8/11/17 がサポートされています。
Application Signals は OpenTelemetry をベースにしています。OpenTelemetry では Java が最も成熟しているため、プレビュー時点では Java のみのサポートというは理に適っていると思います。
ただ、主要言語の Preview SDK はすでに公開されているので、GA 時には順次サポートされるものと期待感が膨らみます。

Alt text

サポートされているアーキテクチャは EKS、ECS、EC2 です。Application Signals には CloudWatch Agent が必要なためだと想像します。
CloudWatch Agent の GitHub PR929 が Application Signals に関連しているようです。興味がある方は覗いてみてください。

img

プレビュー時点でサポートされているリージョンはご覧の通りです。

img

これは私が勝手に書いた構成要素です。
アプリケーションから ADOT Agent でトレースとログを収集し、CloudWatch Agent へ送信します。CloudWatch Agent でデータフォーマットを変換した後 CloudWatch または X-Ray へと送信されます。

img

プレビュー時点での料金は こちら を参照ください。Application Signals の他に X-Ray、CloudWatch Logs、(使うなら)RUM、Synthetic Canary、アラーム、ダッシュボード の費用が別途かかる想定です。
安くはない料金なので、Application Signals へ送信する SLI と、それを基準にした SLO を慎重に選定する必要があります。また、送信するシグナルのサンプリングはしっかり行いましょう。すべてのサービスリクエストをシグナルとして Application Signals へ送信すると、莫大な料金が発生します。

何が嬉しいのか

img
img

AWS のみで SLO が測定・管理できることがなによりの嬉しいことです。

SLO は。ある課題に対して、取り組まなければならない or まだ取り組まなくても大丈夫 の線引きをするための目標という考え方ができます。
従来の CloudWatch メトリクスやダッシュボードでは、SLO を表現するのが難儀でした。CloudWatch ダッシュボード職人がいれば実現できるかもしれませんが、ダッシュボード職人はチームに必要なさそうです。

img
img

Application Signals なら以下が自動的に表示されます。
SLO 達成度を下回った場合はアラームを飛ばしてもいいと思います。エラーバジェットの減り具合は、朝会での話題にしてもいいと思います。減り幅が大きくなったら要注意です。

  • SLO 達成しているか
  • エラーバジェットは残っているか
  • エラーバジェットの減り具合はどうか (バーンレート)

API とオペレーションごとのレイテンシーや可用性を自動的に表示してくれます。
しばらく運用してこれらを計測してから SLO を設定することができます。現実的な SLO ができるはずです。基準がなくえいやーで設定するよりは、よほどマシです。

他には、サービスの全体像が得られる、依存関係を自動的に表示、といった2つの組み合わせで問題のある箇所の早期発見が可能です。

3行まとめ

img

  • まだプレビュー
  • SLO 簡単に管理
  • 計装も自動、ダッシュボードも自動

AWS で Ops を勉強するための教科書として名高い One Observability Workshop にはやくもワークショップが追加されています。
Application Signals を簡単に体験してみたい方は、こちらを試してみてはいかがでしょうか。

Discussion