Table of Contents
CloudWatch Syntheticsって何よ
CloudWatch Synthetics は、特定のエンドポイントを登録することで定期的に死活監視を実行してくれるサービスです。 詳しい説明は下記のAWSブログで説明してくれているので割愛し、今回は実際に設定して動きを確認してみます。
設定してみるよ
今回は「https://example.com/ 」をエンドポイントに指定して、監視をする設定をしてみます。
その後、「https://hogehoge.example.com/ 」と言う存在しないURLを設定して、疎通失敗時にどのような項目が観れるのか確認していきます。
1. CloudWatch Syntheticsページから「Canaryを作成」を押下
まずはCloudWatchの管理画面より「Synthetics Canaries」のページへいきます。
「Canaryを作成」のボタンがあるので、クリック。
2. Canaryの設定をしていく
今回は、「https://example.com」と言うURLを監視する設定にしたいので、「ハートビートのモニタリング」を選択します。
名前を入力します。
その後、「テストするアプリケーションまたはエンドポイントURL」に今回監視対象の「https://example.com」を指定します。
※ さらに複数個、エンドポイントを指定することもできます。
上記で入力したURLが自動で入っていることが確認できます。
監視リクエストを送信する頻度を入力します。 今回は5分おきリクエストされるように設定します。
監視リクエスト実施結果データが自動で保存されますが、データの保存先を指定することができます。
失敗時にCloudWatchアラームを発火させることができます。
今回は5分間隔で1件以上失敗があった場合にAlert状態になるように設定します。
これで設定完了なので、「Canaryを作成」を押下。
これで設定は完了です。
設定後、どんな感じで動いてる?
死活監視リクエスト 成功時
設定後すぐにリクエストが実行されました。
下記画像の矢印部分で青点が表示され成功したことがわかります。
また、実行されたステップのところでも成功したことがわかります。
さらに、スクリーンショットも取得されているようで、「1」と表記されている部分をクリックしてみるとリクエスト時の画面の状態を見ることができます。
死活監視リクエスト 失敗時
CloudWatch Syntheticsでの確認
失敗時の挙動を見ていきます。
右上の「アクション」から「編集」を選択します。
スクリプトの下記画像部分に「https://hogehoge.example.com」と存在しないURLを入力し、保存します。
保存後、監視リクエストが実行され、画像の矢印部分のように赤点が表示されていおり、失敗していることがわかります。
また、「実行されたステップ」の部分でも失敗していることがわかります。
「ログ」の部分をみるとスクリプトの実行ログをみることもできます。
また、「ログ」ボタンの横には「HARファイル」と言うタブもあり、harファイルも閲覧することができます。
CloudWatch Alarmでの確認
設定時にCloudWatch Alarmも設定したので、確認してみます。
下記のように、アラームが設定されており、失敗が検知されアラート状態になっていることが確認できます。
その他設定できること
S3バケットに実行結果が保存される
設定時に、S3バケットの設定をしましたが、そのS3バケットにリクエスト実行毎にログやスクリーンショット、harファイルなどが保存されていることが確認できます。
URLは5個以上設定できる
スクリプト上で監視対象URLを設定すると5個以上設定できます。
ソースコードを直接いじりますが、配列にURLを追加するだけです。
下記のようにステップ毎に成功、失敗を表示してくれます。
ステップ名毎にCWアラームを設定できる
CloudWatch Alarmで、ステップ毎の監視結果をアラート設定することもできます。
下記の画像のようにCW Syntheticsを設定した際に、CW Metrics上に「CloudWatchSynthetics」と言うカスタムネームスペースができ、その中にメトリックが保存されるので、その情報をアラームの対象にすると良いです。
まとめ
CloudWatch Syntheticsについて紹介しました。
CloudWatchでモニタリング関連を一括管理したい時に、痒いところに手が届いて良いですね。
おまけ
ちなみに、「Synthetics Canary」の「Canary」ってカナリア(鳥)のことを指していて、一昔前に炭鉱現場で有毒ガスの検知に使われていたみたいです。
有毒ガスの検知 = 死活監視 みたいな形で名付けられてて面白いですね。
山下達也
AWS / Ruby / Rails あたりをやってます。