LoginSignup
7
2

More than 3 years have passed since last update.

【初心者】Amazon CloudWatch Synthetics を使ってみる

Posted at

目的

  • 先日AWS東京リージョンの障害があり、「監視はAWS東京リージョンの外からしたほうがよいかも…」と思っていた時に、CloudWatch Syntheticsの話を聞いたので、どんなものか試してみる。

Amazon CloudWatch Synthetics とは(自分の理解)

やったこと

  • 監視対象のWEBサーバの作成(普通のEC2インスタンス/nginx)
  • 監視対象のWEBサーバとは別のVPCにて、NAT GatewayからInternet抜けできるsubnetを作成
  • CloudWatch Syntheticsの監視スクリプト(canary)を作成(上記のsubnetをlambdaの動作場所として指定)
  • 固定されたSrcIP(NAT Gateway経由)から監視対象のWEBサーバの正常性監視ができることを確認
  • WEBサーバにてリンク切れを発生させると、エラー検知できることを確認

構成図

syn00.png

手順

事前準備

  • 構成図の通り、以下の環境を作成しておく。
    • VPC1/Subnet1: Webサーバ(EC2インスタンス/nginx)を起動させる用のSubnet。(Public Subnet)
    • VPC2/Subnet2: canary(監視スクリプト)の実体となるLambdaを起動させる用のSubnet。Nat Gatewayでのインターネットアクセス可能にしておく。

監視対象のWEBサーバの作成

  • 監視対象のWEBサーバ(nginx)を作成し、EIPを付与してインターネット公開する。
  • index.html のコンテンツを以下とする。
index.html
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <title>Test Page for the Nginx HTTP Server on Amazon Linux</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
        <h1>Synthticsからアクセスされるページ</h1>
        <p>
        <a href="mikan.html">mikan: みかんの説明ページ</a>
        </p>
        <p>
        <a href="ringo.html">ringo: りんごの説明ページ</a>
        </p>
    </body>
</html

syn01a.png

CloudWatch Synthetics の監視スクリプト(canary)の作成

  • CloudWatch - Synthetics - Canary を作成 を選択し、監視スクリプト(canary)を作成する。
    • 設計図を使用する(初心者なので)
    • 設計図: リンク切れチェッカー
    • アプリケーションまたはエンドポイントURL: 監視対象のWEBサーバのEIP
    • VPC設定: 作成したVPC2/Subnet2 を指定する。

syn10a.png
syn11a.png

動作確認

正常時の動作

  • 監視アクセスに成功すると、成功としてカウントされ、スクリーンショット等も取得される。(私の環境では日本語は文字化けしているが…)

syn12a.png

  • WEBサーバ側のアクセスログにはcanaryのARNが保存される。
/var/log/nginx/access.log
x.x.x.x - - [12/May/2020:16:03:22 +0000] "GET /mikan.html HTTP/1.1" 404 3665
 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Hea
dlessChrome/75.0.3738.0 Safari/537.36 CloudWatchSynthetics/arn:aws:synthetics:ap
-northeast-1:xxxxxxxxxxxxxx:canary:mksamba-canary" "-"

リンク切れ発生時の動作

  • WEBサーバにて、index.html内でリンク先として指定しているringo.htmlを削除後、再度監視アクセスを行うとエラーになる。ringo.htmlが404 Not Foundになっており、それがエラー原因であることが表示される。

syn13a.png

所感

  • 監視対象とは別リージョンで起動すればリージョン障害の影響を受けずに監視ができそう。
  • 簡単な監視はすぐできそうだが、監視項目をきちんと定めて動作させるには、生成されるLambda Function(node.js)の内容理解やカスタマイズが必要かも…。
7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2