Top View


Author 山下達也

CloudWatch Syntheticsで外形監視

2022/02/26

CloudWatch Syntheticsって何よ

CloudWatch Synthetics は、特定のエンドポイントを登録することで定期的に死活監視を実行してくれるサービスです。 詳しい説明は下記のAWSブログで説明してくれているので割愛し、今回は実際に設定して動きを確認してみます。

設定してみるよ

今回は「https://example.com/ 」をエンドポイントに指定して、監視をする設定をしてみます。

その後、「https://hogehoge.example.com/ 」と言う存在しないURLを設定して、疎通失敗時にどのような項目が観れるのか確認していきます。

1. CloudWatch Syntheticsページから「Canaryを作成」を押下

まずはCloudWatchの管理画面より「Synthetics Canaries」のページへいきます。

「Canaryを作成」のボタンがあるので、クリック。

Image from Gyazo

2. Canaryの設定をしていく

今回は、「https://example.com」と言うURLを監視する設定にしたいので、「ハートビートのモニタリング」を選択します。

Image from Gyazo

名前を入力します。

その後、「テストするアプリケーションまたはエンドポイントURL」に今回監視対象の「https://example.com」を指定します。

※ さらに複数個、エンドポイントを指定することもできます。

Image from Gyazo

上記で入力したURLが自動で入っていることが確認できます。

Image from Gyazo

監視リクエストを送信する頻度を入力します。 今回は5分おきリクエストされるように設定します。

Image from Gyazo

監視リクエスト実施結果データが自動で保存されますが、データの保存先を指定することができます。

Image from Gyazo

失敗時にCloudWatchアラームを発火させることができます。

今回は5分間隔で1件以上失敗があった場合にAlert状態になるように設定します。

これで設定完了なので、「Canaryを作成」を押下。

Image from Gyazo

これで設定は完了です。

設定後、どんな感じで動いてる?

死活監視リクエスト 成功時

設定後すぐにリクエストが実行されました。

下記画像の矢印部分で青点が表示され成功したことがわかります。

また、実行されたステップのところでも成功したことがわかります。

さらに、スクリーンショットも取得されているようで、「1」と表記されている部分をクリックしてみるとリクエスト時の画面の状態を見ることができます。

Image from Gyazo

Image from Gyazo

死活監視リクエスト 失敗時

CloudWatch Syntheticsでの確認

失敗時の挙動を見ていきます。

右上の「アクション」から「編集」を選択します。

Image from Gyazo

スクリプトの下記画像部分に「https://hogehoge.example.com」と存在しないURLを入力し、保存します。

Image from Gyazo

保存後、監視リクエストが実行され、画像の矢印部分のように赤点が表示されていおり、失敗していることがわかります。

また、「実行されたステップ」の部分でも失敗していることがわかります。

Image from Gyazo

「ログ」の部分をみるとスクリプトの実行ログをみることもできます。

また、「ログ」ボタンの横には「HARファイル」と言うタブもあり、harファイルも閲覧することができます。

Image from Gyazo

CloudWatch Alarmでの確認

設定時にCloudWatch Alarmも設定したので、確認してみます。

下記のように、アラームが設定されており、失敗が検知されアラート状態になっていることが確認できます。

Image from Gyazo

その他設定できること

S3バケットに実行結果が保存される

設定時に、S3バケットの設定をしましたが、そのS3バケットにリクエスト実行毎にログやスクリーンショット、harファイルなどが保存されていることが確認できます。

Image from Gyazo

URLは5個以上設定できる

スクリプト上で監視対象URLを設定すると5個以上設定できます。

ソースコードを直接いじりますが、配列にURLを追加するだけです。

Image from Gyazo

下記のようにステップ毎に成功、失敗を表示してくれます。

Image from Gyazo

ステップ名毎にCWアラームを設定できる

CloudWatch Alarmで、ステップ毎の監視結果をアラート設定することもできます。

下記の画像のようにCW Syntheticsを設定した際に、CW Metrics上に「CloudWatchSynthetics」と言うカスタムネームスペースができ、その中にメトリックが保存されるので、その情報をアラームの対象にすると良いです。

Image from Gyazo

Image from Gyazo

まとめ

CloudWatch Syntheticsについて紹介しました。

CloudWatchでモニタリング関連を一括管理したい時に、痒いところに手が届いて良いですね。

おまけ

ちなみに、「Synthetics Canary」の「Canary」ってカナリア(鳥)のことを指していて、一昔前に炭鉱現場で有毒ガスの検知に使われていたみたいです。

有毒ガスの検知 = 死活監視 みたいな形で名付けられてて面白いですね。

山下達也

山下達也

AWS / Ruby / Rails あたりをやってます。