BLOG

Amazon CloudWatch Synthetics를 사용한 애플리케이션의 시각적 모니터링
작성일: 2021-11-09

애플리케이션 엔드포인트 모니터링은 가용성을 측정하는 안정적인 방법입니다. 이 모범 사례는 관찰 가능성 전략에 종합 모니터링을 추가하여 확장할 수 있습니다. 종합 모니터링을 사용하면 고객과 동일한 경로 및 작업을 수행하여 고객의 경험을 지속적으로 확인할 수 있습니다. 애플리케이션에서 가용성, 페이지 로드 시간, 끊어진 링크 등을 모니터링하는 스크립트 또는 카나리아를 만들 수 있습니다. 그러나 이러한 사용자 지정 스크립트는 스크립트를 개발하고 유지 관리할 때 운영 오버헤드를 증가시킵니다. 또한, 이러한 스크립트는 최종 사용자 경험에 영향을 줄 수 있는 시각적 결함을 식별하지 못할 수 있습니다.

 

Amazon CloudWatch Synthetics 의 시각적 모니터링 지원 출시로 애플리케이션의 시각적 차이를 측정하고 사용자에게 영향을 미치기 전에 결함을 식별할 수 있습니다. 시각적 모니터링을 활용하면 스크린샷을 설정된 기준과 비교하여 애플리케이션의 시각적 결함을 감지하고, 편차 임계값을 조정하고, 선택한 페이지 섹션을 무시하는 등의 작업을 수행할 수 있습니다. 오늘 포스팅에서는 Amazon CloudWatch Synthetics 의 시각적 모니터링 청사진을  활용하여 애플리케이션에서 시각적 결함을 모니터링하는 방법을 알아보겠습니다.

 

 

시각적 모니터링 청사진으로 카나리아 만들기

 

필요에 따라 CloudWatch Synthetics를 통해 자체 스크립트로 카나리아를 만들고 실행할 수 있습니다. 그러나  the blueprints available 은 빠르게 시작하는 데 도움이 되며 다양한 사용 사례에 사용할 수 있습니다. 시각적 모니터링 청사진을 사용하여 카나리아를 만드는 과정을 살펴보겠습니다.

 

  1. CloudWatch 콘솔로 이동하여 애플리케이션 모니터링 아래에서 Synthetics Canarie 클릭한 후, Create canary 클릭합니다.
  2. Use a blueprint 라디오 버튼을 선택하고, Visual monitoring을 선택합니다. 

 

그림 1: 카나리아 만들기

 

   3. 카나리아 빌더 섹션에서 카나리아의 이름을 제공하고 애플리케이션 또는 애플리케이션의 엔드포인트 URL을 지정하십시오. 또한, 애플리케이션 스크린샷 간의 시각적 차이에 대한 임계값을 지정합니다. 일단은 0으로 두겠습니다.

 

그림 2: 카나리아 구성

 

 

4. 선택한 청사진과 지정된 구성을 기반으로 CloudWatch Synthetics는 카나리아 실행에 사용할 스크립트를 자동으로 생성합니다.

5. 일정, 데이터 보존 및 저장, 액세스 권한 등과 같은 기타 옵션을 구성합니다. 이러한 옵션에 대한 자세한 내용은 카나리아 생성에 대한 CloudWatch Synthetics 설명서를 참조하십시오. 이 예제에서는 이러한 모든 필드에 기본값을 사용했습니다.

6. 카나리아 만들기  클릭합니다. CloudWatch Synthetics는 카나리아 실행에 필요한 리소스를 프로비저닝하는 데 최대 1분이 걸릴 수 있습니다. 카나리아가 생성되면 자동으로 카나리아 대시보드로 돌아갑니다.

 

 

그림 3: Canary 생성 진행

 

 

카나리아 실행 보기

 

 

카나리아가 생성된 후, 지정된 빈도로 애플리케이션 또는 엔드포인트 URL에 요청한 다음 수신된 응답을 캡처합니다. 카나리아를 처음 실행할 때 캡처한 스크린샷이 기준선이 되고 이후의 모든 스크린샷은 차이를 감지하기 위해 이것과 비교됩니다.

 

  1. 카나리아 목록에서 생성한 카나리아를 클릭하면 카나리아 실행의 세부 정보를 볼 수 있습니다.
  2. 최근 실행 상태, 지난 24시간 동안 감지된 문제, 지난 7일 동안의 성공률, 카나리아 상태 등의 카나리아 실행 요약을 볼 수 있습니다.

 

그림 4: 카나리아 요약

 

3. 가용성 탭을 통해 지난 24 시간 동안의 문제 세부 사항을 제공하는 그래프와  통과 및 실패 카나리아 실행 그리고 다른 옵션 단계를, 스크린 샷을 확인할 수 있으며, 로그 HAR 파일을 특정 카나리아 실행 드릴 다운할 수 있습니다.

 

그림 5: 가용성

 

4. 스크린 탭을 선택하고 이미지를 클릭하면 기본 화면, 최신 실행에서 스크린 샷 및 시각적 분산 비율이 나타납니다. 응용 프로그램을 수정하지 않았기 때문에 여기에서는 차이점이 확인되지 않습니다.

 

그림 6: 기준선 카나리아 실행

 

사용중인 애플리케이션이 Amazon Elastic Compute Cloud(EC2)에서 실행 중이며 이미지와 함께 인스턴스 ID, 가용 영역 및 기타 텍스트를 반환합니다. EC2 인스턴스는 Application Load Balancer 뒤에 있는  Amazon EC2 Auto Scaling 그룹의 일부이며, 현재 그룹에 있는 유일한 인스턴스입니다. 그룹 용량을 늘려 인스턴스를 2개 더 추가한 다음 카나리아를 관찰합니다.

 

 

그림 7: 샘플 애플리케이션

 

일부 카나리아 실행이 실패하고 문제가 감지되고 있음을 알 수 있습니다. 하나의 문제를 선택하면 세부 정보를 드릴다운할 수 있습니다. 문제 설명에서 시각적 분산이 0.37%임을 알 수 있습니다.

 

그림 8: 감지된 문제

 

스크린샷 탭을 클릭한 다음 이미지를 클릭하면 기준선과 해당 카나리아 실행에서 찍은 스크린샷 간의 비교가 표시됩니다.

 

그림 9: 기준선 카나리아 실행 실패

 

두 이미지를 보면 강조 표시된 차이점을 알 수 있습니다. instance_id, private_hostname, private_ipv4가 변경된 것을 확인했습니다. 이 정보를 활용하여 이러한 변경이 예상되는지 여부를 결정할 수 있습니다. 애플리케이션에 대한 Amazon EC2 Auto Scaling 그룹에 여러 인스턴스가 있고 각 EC2 인스턴스가 자체와 관련된 정보를 반환하므로 실행 사이에 데이터가 변경됩니다. 카나리아 실행의 요청은 매번 다른 EC2 인스턴스에서 처리되므로 변화가 예상됩니다.

 

 

카나리아 업데이트

변경이 예상된다는 것을 알았으므로 탐색 오류를 방지하기 위해 카나리아를 업데이트해야 하는데요, 이는 여러 가지 방법으로 달성할 수 있습니다.

 

 

편차 임계값 업데이트

 

감지된 문제에 대한 설명에 따르면 기준선과 카나리아 실행의 스크린샷 간의 차이는 0.37%입니다. 이 분산 정도가 예상되므로 카나리아를 업데이트하고 분산 임계값을 늘릴 수 있습니다(기본값은 0). 내 카나리아를 선택하고 작업 아래에서 카나리아 편집을 선택합니다. 편집 페이지에서 스크립트 편집기까지 아래로 스크롤 하여 다음 행을 찾습니다.

 

syntheticsConfiguration.withVisualVarianceThresholdPercentage(0)

 

이를 통해 카나리아 분산 임계값을 설정할 수 있습니다. 이전 카나리아 실행의 데이터를 기반으로 임계값을 0.5%로 업데이트한 다음 저장할 수 있습니다.

 

syntheticsConfiguration.withVisualVarianceThresholdPercentage(0.5)

 

 

그림 10: 카나리아 편집

 

분산 임계값이 0.5%로 증가하면 후속 카나리아 실행이 실패하지 않고 문제가 감지되지 않는다는 것을 알 수 있습니다.

 

 

그림 11: 카나리아 요약 카나리아 실행

 

 

베이스라인 스크린샷 수정

 

또는 기준 스크린샷을 편집하고 시각적 비교 중에 선택된 영역을 무시할 수 있습니다. 이는 동적 콘텐츠가 포함된 응용 프로그램에 특히 유용합니다. 이를 위해 다시 한 번 카나리아를 선택하고 작업 아래에서 편집을 선택합니다. Visual Monitoring까지 아래로 스크롤하고 기준선 편집을 클릭합니다.

 

 

그림 12: 기준선 편집

 

이것은 현재 베이스라인 스크린샷을 불러옵니다. 간단한 클릭-드래그로 후속 카나리아 실행에 대한 시각적 비교에서 제외할 스크린샷 영역을 선택할 수 있습니다. 이 경우 텍스트가 있는 영역을 선택합니다. 이것이 내 애플리케이션의 동적 콘텐츠라는 것을 알고 있기 때문입니다. 저장을 클릭하여 기준선을 업데이트한 다음 저장을 다시 클릭하여 카나리아를 업데이트합니다. 응용 프로그램에 동적 콘텐츠가 있는 추가 영역이 있는 경우 비교에서 제외할 영역을 두 개 이상 선택할 수 있습니다.

 

 

그림 13: 기준선 업데이트

 

 

애플리케이션 업데이트

 

내 애플리케이션의 일부로 활용되는 이미지는 Amazon Simple Storage Service(S3) 버킷에 저장됩니다. 버킷에 저장된 이미지가 내가 알지 못하는 사이에 업데이트되었고, 내 애플리케이션이 이제 다음과 같다고 가정해 보겠습니다.

 

그림 14: 이미지가 있는 샘플 애플리케이션

 

CloudWatch Synthetics는 이러한 변경 사항을 빠르게 감지하고 이 애플리케이션을 모니터링하는 카나리아는 문제를 발생시킵니다. 문제 설명을 보면 내가 설정한 임계값인 0.5%보다 훨씬 높은 25.53%의 비율이 있음을 알 수 있습니다.

 

그림 15: 카나리아 실행 실패

 

실패한 카나리아 실행에 대한 세부 정보를 드릴다운하면 내 애플리케이션에서 반환되는 이미지가 기준선에 있는 이미지와 다릅니다. 이 정보를 사용하여 최종 사용자에게 영향을 미치기 전에 이 변경이 바람직한지 여부를 결정할 수 있습니다.

 

그림 16: 기준선 카나리아 실행 실패

 

이 변경이 의도적인 것임을 확인한 후 후속 카나리아 실행에서 이를 문제로 감지하지 않도록 카나리아를 업데이트할 수 있습니다.

 

 

기준선 설정

 

기본 스크린샷은 애플리케이션 변경 사항을 반영하도록 업데이트할 수 있습니다. 이렇게 하려면 작업을 클릭한 다음 카나리아 편집을 선택합니다. 편집 페이지의 시각적 모니터링 아래에서 다음 실행을 기준으로 설정 옆에 있는 확인란을 선택하고 변경 사항을 저장합니다. 다음 카나리아 실행 중에 찍은 스크린샷은 앞으로 나아갈 새 기준선으로 사용됩니다. 모든 후속 카나리아 실행의 스크린샷은 이 새로운 기준과 비교됩니다.

 

그림 17: 기준선 설정

 

예상대로 기준선이 업데이트된 이후 후속 카나리아 실행이 통과하고 있습니다.

 

그림 18: 성공적인 카나리아 실행

 

스크린 샷을 클릭하면 베이스라인이 업데이트되었는지 확인할 수 있습니다.

 

그림 19: 업데이트된 기준선 카나리아 실행

 

 

다른 옵션

 

CloudWatch Synthetics는 사용 사례에 맞게 조정할 수 있는 다양한 옵션과 통합을 제공합니다.

 

 

시각적 모니터링 활성화/비활성화

 

애플리케이션을 모니터링하는 CloudWatch Synthetics 카나리아가 이미 있는 경우 시각적 모니터링을 포함하도록 업데이트할 수 있습니다. 시각적 모니터링을 포함할 카나리아를 선택하고 작업을 클릭한 다음 편집을 클릭합니다. 스크립트 편집기 아래에서 해당 카나리아에 대한 시각적 모니터링을 활성화하려면 카나리아 스크립트에 다음 줄을 포함합니다. 이것은 syn-puppeteer-node-3.2 이상을 실행하는 카나리아에서만 지원됩니다.

 

syntheticsConfiguration.withVisualCompareWithBaseRun(true);

 

 

카나리아 응답 사용자 지정

 

시각적 결함이 감지되면 시각적 모니터링을 수행하는 카나리아의 기본 동작은 카나리아 실행 상태를 실패로 설정하는 것입니다. 사용 사례에 따라 시각적 차이가 감지될 때 카나리아가 실패하지 않도록 이를 조정할 수 있습니다. 이는 실패 유형에 따라 다른 조치를 취하려는 경우에 특히 유용합니다. 예를 들어, 오류가 응용 프로그램의 UI(사용자 인터페이스)의 시각적 차이로 인한 것인지 또는 백엔드 시스템의 오류로 인한 페이지 로드 오류인지 식별하고자 할 수 있습니다. 이 경우 CloudWatch 경보를 활용하여 애플리케이션에 대한 일반 유지 관리 팀 대신 UI 개발자 팀에만 알릴 수 있습니다. 이렇게 하려면 카나리아를 선택하고 작업을 클릭한 다음 편집을 클릭합니다. 스크립트 편집기 아래에 다음 행을 포함합니다.

 

syntheticsConfiguration.withFailCanaryRunOnVisualVariance(false)

 

이것이 시각적 차이가 감지될 때 카나리아 행동을 결정하는 것입니다. 이 변경 사항을 되돌리고 시각적 차이가 감지될 때 카나리아가 실패하도록 하려면 다음과 같이 변경할 수 있습니다.

 

syntheticsConfiguration.withFailCanaryRunOnVisualVariance(true)

 

 

하이라이트 색상 사용자 정의

 

CloudWatch Synthetics는 노란색(#fafa00)을 사용하여 카나리아 실행 스크린샷과 기준 간의 차이점을 강조 표시합니다. 이 설정은 카나리아 스크립트에 다음 줄을 포함하고 선택한 색상에 대한 16진수 값을 제공하여 사용자 지정할 수 있습니다. 

 

syntheticsConfiguration.withVisualVarianceHighlightHexColor(“<REPLACE WITH VALUE OF YOUR CHOICE>”)

 

모니터링 경고

 

Canaries는 VisualMonitoringSuccessPercent, VisualMonitoringTotalComparisons, HTTP 응답 코드 등과 같은 다양한 지표를 CloudWatch에 게시합니다. Canaries에서 게시한 전체 지표 목록은 CloudWatch Synthetics 설명서를 참조하십시오. 이러한 지표는 CloudWatch 경보를 생성하고 애플리케이션에서 시각적 차이가 감지될 때 알림을 수신하는 데 사용할 수 있습니다. 카나리아를 편집하여 CloudWatch Synthetics 콘솔에서 경보를 생성하거나 CloudWatch 지표 콘솔의 CloudWatchSynthetics 네임스페이스에서 사용 가능한 지표 중 하나를 선택합니다. CloudWatch에서 경보 생성에 대해 자세히 알아보십시오.

 

 

Cleanup

 

계정에 계속 청구되는 것을 방지하려면 이 블로그 게시물을 읽는 동안 생성했을 수도 있는 카나리아를 삭제해야 합니다. Amazon CloudWatch 사용 설명서에서 카나리아 편집 또는 삭제를 확인하세요.

 

 

결론

 

오늘 포스팅에서는 Amazon CloudWatch Synthetics 카나리아를 활용하여 애플리케이션을 시각적으로 모니터링하는 방법을 보여주었습니다. 시각적 모니터링 청사진을 사용하여 신속하게 카나리아를 생성하거나 애플리케이션의 시각적 모니터링을 포함하도록 기존 카나리아를 업데이트할 수 있습니다. 이 새로운 기능이 지원하는 광범위한 사용자 정의를 통해 카나리아를 사용 사례에 맞게 조정할 수 있습니다. 이를 통해 적시에 애플리케이션의 시각적 결함을 식별하고 필요한 조치를 취할 수 있습니다.

 

자세한 내용 은 Amazon CloudWatch 사용 설명서의 CloudWatch Synthetics  를 사용한 시각적 모니터링 및 CloudWatch Synthetics 카나리아에 대한 시각적 모니터링 청사진을 참조하십시오. Amazon CloudWatch 합성을 사용하여 애플리케이션의 시각적 차이를 감지하는 방법을 알아보려면 이 비디오를 확인하십시오.

원문URL: https://aws.amazon.com/ko/blogs/mt/visual-monitoring-of-applications-with-amazon-cloudwatch-synthetics/

메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글이나 관련 기사 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.