はじめに
CloudWatchにはSyntheticsという、アプリケーションの死活監視(外形監視)を行うサービスがあります。
Canaryを作成し、APIのエンドポイントやWebページのリンクを設定することでそのエンドポイントをスクリプトで定期的に叩きに行き、落ちていた場合はSNSで通知や、CloudWatchAlarmを鳴らしたりできます。
以下公式説明です。
Amazon CloudWatch Synthetics を使用して、スケジュールに沿って実行される設定可能なスクリプトである Canary を作成し、エンドポイントと API をモニタリングできます。Canary は顧客と同じルートをたどり、同じアクションを実行します。これにより、アプリケーションに顧客トラフィックがない場合でも、顧客エクスペリエンスを継続的に検証できます。Canary を使用すると、顧客が問題を検出する前に問題を検出できます。
料金
料金はCanaryの実行回数に依存します。
1ヶ月あたり100回の実行まで無料枠があり、100回を超過すると1回あたり0.0019USDかかります。(東京リージョン)
その他、Lambdaの実行料金・CloudWatch Logs・S3の料金などがかかるようです。
試してみる
サンプルサイトの準備
ECRにある適当に作ったアプリのコンテナをAppRunnerでデプロイします。
(App Runner非常に楽でよいですよね..)
動作確認程度なので、トップページにリンクがある簡単なサンプルサイトを用意しました。
Syntheticsの設定
CloudWatch Syntheticsの設定を行います。
CloudWatchのメニューから「Synthetics Canaries - Canaryを作成」を選択します。
今回は、リンク切れチェッカー機能を試してみます。
以下デフォルトから変更を加えた部分です。
-
Canaryビルダー
- 名前:sample-canary
- アプリケーションまたはエンドポイントURL:AppRunnerから出力されたURL
- フォローされているリンクの最大数:10
-
スケジュール
- 一回実行(消し忘れ課金予防の為)
-
データストレージ,アクセス許可
- 任意の適切な設定
設定画面もわかりやすくて良いです。
実行
作製したCanaryを選択し、「開始」を押下します。
終了後、「可用性」タブを見てみるとリンク先までチェックしていることがわかります。
次に、サーバから一つのファイルを削除し、再度起動します。
404を検知して失敗していることがわかります。
まとめ
CloudWatch Syntheticsのリンク切れチェッカー機能を試してみました。
CloudWatch Syntheticsには、他にもページのスクリーンショットを取って比較し、差異があればアラームを上げる機能など様々な監視が行える機能があります。料金も高すぎるということはなく、設定も簡単なので積極的に使いたいですね。