こんにちは。社内でCloudWatch Syntheticsで外形監視(Web監視)を設定する機会があったので、やり方を紹介します!
CloudWatchで外形監視(Web監視)を行うには、2パターンがあります。一つ目はURL監視で、二つ目はWebシナリオ監視です。今日はURL監視の設定手順と監視を行う際のコストについて、お伝えします。
CloudWatch Synthetics とは
ウェブサイトや API のエンドポイントに対して、 SeleniumやPuppetterと同様に利用ユーザーと同じアクションを実行して、パフォーマンスや可用性をモニタリングできます。
CloudWatch Synthetics では、Canary を設定します。Canaryとは スケジュールに沿って実行されるスクリプトです。Canary では Node.js、Pythonのスクリプトや実行間隔、通知などの設定をします。 スクリプトの作成は、AWS が提供するブループリントを使用する方法やChromeの拡張機能を利用することで、 操作に応じたスクリプトが生成されます。また、CloudWatch Synthetics のライブラリを組み込んで作成する方法があります。
URL死活監視を設定してみる
(1) Cloud Watchから「Synthetics Canaries」を選びます。
(2) Canaryを作成するには、AWSから提供される設計図を利用するか、独自のスクリプトをアップロード、もしくはS3からインポートすることができます。
今回は「設計図を使用する」を選び、「ハートビートのモニタリング」を選びます。
(3) Canary ビルダーでは、Canaryの名称を入力し、監視したいURLを入力します。
(4) Canaryのスクリプトを実行するランタイムバージョンを選びます。ここでは、デフォルトの「syn-nodejs-puppeteer-3.2」のままとします。
(5) スクリプトが実行されるスケジュールとデータの保存期間を選びます。
(6) Canaryの実行結果の保管場所(S3)とIAMロールの設定を行い、作成します。
(7) しばらく待つと、Canaryが作成されました。
(8) 実行がされ、URL監視が成功すると、ステータスが「成功」に変わります。
(9) 可用性タブから監視の結果を確認することができます。実行されたStepはこんな感じで表示されます。
(10) スクリーンショットを設定しておくと、結果を確認することも可能です。
(11) スクリプトの実行ログも確認が可能です。(S3にも保管されます)
利用料金
東京リージョンは、Canary 実行あたり 0.0019USDかかります。
5 分ごとに 1 回実行する 5 つの Canary を作成し、Canary によって生成されたメトリクスのうち 5 つにアラームを追加してデータを 1 か月間保存した想定で利用料金を算出してみます。東京リージョンでの料金算出をしてみました。
5 Canary * 12回実行/1時間 * 24時間/日 * 31日/1ヵ月 = 44,640 Canary 実行
CloudWatch の月額料金
Canary 実行料金 = 44,640 Canary 実行 * 0.0019USD
1 か月あたり 84.82USD
1 か月あたり 5 回のアラーム = 5 * 0.10 USD = 1 か月あたり 0.50 USD
CloudWatch の合計月額料金 = 84.82 USD + 0.50 USD =85.32USD
月額追加料金
Canary 実行ごとに AWS Lambda 関数も実行され、ログと結果が CloudWatch Logs と指定された Amazon S3 バケットに書き込まれます。AWS Lambda、Amazon S3、CloudWatch Logs などの AWS のサービスの料金はサービスの料金ページを参照お願いします。
Lambda 料金 = リクエスト料金 + 時間料金
44,640 実行からのリクエスト * 1,000,000 あたり 0.2 USD + 20 秒間 * 44,640 Canary 実行 * 1 GB のメモリサイズ * 1 秒あたり 0.000016667/GB
= 0.01 USD + 14.88 USD = 1 か月あたり 14.89 USD
CloudWatch Logs 料金 = 収集料金 + ストレージ料金
実行あたり 0.00015 GB の収集 * 44,640 実行 * GB あたり 0.76USD + 実行あたり 0.00015 GB のストレージ * 44,640 Canary 実行 * 1 か月あたり 0.025 USD/GB
= 5.09 USD + 0.17USD = 1 か月あたり 5.26 USD
S3 料金 = プットリクエスト料金 + ストレージ料金
= 44,640 実行のプットリクエスト * 1,000 リクエストあたり 0.005 USD + 実行あたり 0.001 GB のストレージ * 44,640 Canary 実行 * 1か月 * 1 か月あたり 0.025USD/GB
= 0.22 USD + 1.12 USD = 1 か月あたり 1.34 USD
追加月額料金 = 14.89 USD + 5.26 USD + 1.34 USD = 21.19USD
合計月額料金 = 85.32 USD + 21.19 USD = 106.51USD
まとめ
CloudWatch Syntheticsを活用することで、URL死活監視やWebシナリオ監視が簡単にできますね。
ここからは、やってみての所感です。スクリプトの知識は「ほぼ」不要で設定できます。 Webシナリオ監視でログイン操作を伴う場合は、セキュリティ面の考慮が必要だと感じます。 パスワードを保護するために、Parameter StoreやSecret Managerを活用していきたいところですね。
AWSをご利用いただくには、直接契約するより断然お得。
AWS利用料が5%割引、さらに日本円の請求書による支払いが可能です!