Amazon CloudWatch Synthetics의 동작 확인

Amazon CloudWatch Synthetics에서는 Canary를 생성하여 엔드포인트 및 API를 모니터링할 수 있습니다.

■해보는 계



이번은 기본적인 동작을 확인하고 싶을 뿐이므로, 「설계도를 사용한다」라고 해 「하트 비트의 모니터링」을 시험한다.
「이름」은 적당하게 입력해, 「어플리케이션 또는 엔드포인트」는 적당하게 작성해 둔 WEB 서버의 주소를 지정해 두었다.


「스크립트 에디터」에서는 이하와 같이, Node JS 10.x 로 작성되어 const URL = "http://*.*.*.*/"; 에 방금의 WEB 서버의 주소가 들어간다.
var synthetics = require('Synthetics');
const log = require('SyntheticsLogger');

const pageLoadBlueprint = async function () {

    // INSERT URL here
    const URL = "http://*.*.*.*/";

    let page = await synthetics.getPage();
    const response = await page.goto(URL, {waitUntil: 'domcontentloaded', timeout: 30000});
    //Wait for page to render.
    //Increase or decrease wait time based on endpoint being monitored.
    await page.waitFor(15000);
    await synthetics.takeScreenshot('loaded', 'loaded');
    let pageTitle = await page.title();
    log.info('Page title: ' + pageTitle);
    if (response.status() !== 200) {
        throw "Failed to load page!";
    }
};

exports.handler = async () => {
    return await pageLoadBlueprint();
};

"스케줄""데이터 보존"은 기본값으로 둡니다.
데이터를 저장할 S3 버킷 "데이터 스토리지"를 선택.
아티팩트를 S3에 배치하고 로그를 저장하고 Cloudwatch에 지표를 게시할 수 있는 권한이 필요한 IAM 역할을 생성합니다. 여기에서는 「새로운 롤을 작성」.


참고로 작성된 IAM 역할은 다음과 같습니다.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::cw-syn-results-000000000000-ap-northeast-1/canary/test-fa5-8ddfac9762db/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:CreateLogGroup"
            ],
            "Resource": [
                "arn:aws:logs:ap-northeast-1:000000000000:log-group:/aws/lambda/cwsyn-test-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Resource": "*",
            "Action": "cloudwatch:PutMetricData",
            "Condition": {
                "StringEquals": {
                    "cloudwatch:namespace": "CloudWatchSynthetics"
                }
            }
        }
    ]
}

이와 같이 디폴트 5분 간격으로 설정했기 때문에, 하트비트의 모니터링에 성공하고 있는 것을 확인할 수 있다.


■Amazon EventBridge와의 제휴



[Feb 19, 2021]Amazon CloudWatch Synthetics, Amazon EventBridge에서 Canary 이벤트 지원 시작
이를 통해 canary의 실행이 실패했을 때 SNS와 연계하여 통지를 받거나 Lambda와 연계하여 문제가 있던 부분을 자동으로 복구할 수 있게 되었습니다.
↓의 페이지에서 이미 시험되고 있는 기사가 있었습니다. 일반적인 설정이 되는 것 같기 때문에, 해 본 계는 할애하겠습니다.
Amazon CloudWatch Synthetics, Amazon EventBridge에서 Canary 이벤트 지원 시작

■링크



【AWS】CloudWatch의 신규 서비스에 대해서 2020년 4월

좋은 웹페이지 즐겨찾기