개요

애플리케이션 전송을 모니터링하면 비정상적인 이벤트를 탐지하고 이에 적절하게 대응할 수 있습니다. Amazon CloudWatch는 애플리케이션 전송에 사용되는 AWS 엣지 서비스를 비롯한 Amazon Web Services(AWS) 리소스를 모니터링합니다. 예를 들어, AWS 엣지 서비스에서 제공하는 서버 측 지표는 예상치 못한 트래픽 볼륨 증가, 캐시 적중률의 현저한 감소, 5xx 오류의 급격한 증가 또는 DDoS 공격을 탐지하는 데 도움이 됩니다. CloudWatch는 서버 측 지표 외에도 CloudWatch RUM을 사용하여 클라이언트 측 모니터링에서 지표를 수집하고 추적합니다. CloudWatch 지표를 사용하여 사용자 지정 대시보드를 생성할 수 있으며, 이 지표에 경보도 구성할 수 있습니다.

서버 측 지표

AWS 엣지 서비스에서 생성한 네이티브 CloudWatch 지표

애플리케이션을 제공하고 보호할 때 AWS 엣지 서비스에서 내보내는 다음과 같은 거의 실시간에 가까운 CloudWatch 지표를 고려해 보세요.

  • CloudFront는 요청, 다운로드된 바이트, 업로드된 바이트, 4xx 오류 발생률, 5xx 오류 발생률 및 총 오류 발생률과 같은 지표를 내보냅니다. 참고로 CloudFront는 글로벌 서비스이므로 us-east-1 리전에서 이러한 지표를 사용할 수 있습니다. 추가 비용을 지불하면 특정 상태 코드에 대한 캐시 적중률, 오리진 지연 시간, 오류율과 같은 추가 지표를 활성화할 수 있습니다.
  • CloudFront Functions는 us-east-1 리전에서 간접 호출, 검증 오류, 실행 오류, 컴퓨팅 사용률 및 스로틀과 같은 지표를 내보냅니다.
  • Lambda@Edge는 AWS Lambda를 기반으로 하므로 간접 호출, 오류, 기간, 동시 실행 및 스로틀과 같은 지표의 하위 집합을 내보냅니다. CloudFront Functions와 달리, CloudFront에서 실행되는 각 리전의 Lambda@Edge 지표입니다. CloudFront 콘솔은 모든 리전의 이러한 지표를 통합하여 보여줍니다.
  • AWS WAF는 허용된 요청, 차단된 요청, 계산된 요청, Captcha로 확인된 요청, 챌린지로 확인된 요청 등의 지표를 내보냅니다. WebACL, 규칙, 국가, 디바이스 등과 같은 세분화 수준에서 각 지표를 측정할 수 있습니다. 참고로 WebACL이 CloudFront에 적용되는 경우 us-east-1 리전에서 AWS WAF 지표를 사용할 수 있습니다.
  • Shield Advanced는 초당 공격 비트 수, 초당 패킷 수, 초당 요청 수와 같은 탐지된 DDoS 공격에 대한 지표를 내보냅니다.
    지표가 여러 리전과 계정에 걸쳐 있는 경우에도 AWS 엣지 서비스에서 제공한 위의 지표를 기반으로 CloudWatch 대시보드를 만들 수 있습니다. 아래 예는 AWS WAF 규칙에서 생성한 지표를 기반으로 하는 보안 대시보드입니다.

지표가 여러 리전과 계정에 걸쳐 있는 경우에도 AWS 엣지 서비스에서 제공한 위의 지표를 기반으로 CloudWatch 대시보드를 만들 수 있습니다. 아래 예는 AWS WAF 규칙에서 생성한 지표를 기반으로 하는 보안 대시보드입니다.

고급 지표

애플리케이션에 대한 고급 지표는 여러 가지 방법으로 생성될 수 있습니다. 첫 번째는 기본 CloudWatch 지표를 보다 정교한 지표로 결합하는 것을 기반으로 하고, 다른 지표는 서비스 로그를 기반으로 합니다.

첫 번째 접근 방식은 CloudWatch 지표 수식을 사용하는 것입니다. 예를 들어 CloudFront의 요청 지표를 측정 기간(m1/PERIOD(m1))으로 나누어 CloudFront에서 전송한 초당 총 요청 수를 계산할 수 있습니다. 또 다른 예는 다른 지표를 논리적으로 조합하여 애플리케이션의 상태를 반영하는 복합 지표를 만드는 것입니다(예: CloudFront의 5xx < .5%이고 서버 지연 시간 < 1초인 경우 정상). 그런 다음 이 복합 지표를 Shield Advanced의 상태 확인과 함께 사용할 수 있습니다.

두 번째 접근 방식은 AWS 엣지 서비스에서 생성한 로그를 사용하여 사용자 지정 지표를 내보내는 것입니다. 일부 구현에는 다음이 포함됩니다.

  • CloudWatch Logs로 전송된 로그에 지표 필터를 구성합니다. 예를 들어 특정 쿼리 문자열로 요청 발생을 로그하도록 CloudFront Function를 구성하고, 지표 필터를 사용하여 이러한 발생을 계산할 수 있습니다.
  • 사용자 지정 지표를 생성하기 위해 Lambda를 사용하여 Kinesis로 전송된 CloudFront 및 WAF 로그를 처리합니다. 이 예시 구현을 살펴보세요.

알림

CloudWatch 지표가 비정상적인 이벤트를 나타내는 경우 알림을 받도록 경보를 생성할 수 있습니다. CloudFront의 5xx 오류율 임계값을 기반으로 경보를 설정하려면 이 블로그의 단계를 따르세요. 임계값 기반 경보 외에도 CloudWatch의 이상 탐지 기능을 사용하면 지표의 기준을 설정하고 기준과 비교한 비정상적인 변화를 기반으로 경보를 생성할 수 있습니다.

Security Hub의 보안 조사 결과

AWS Firewall Manager는 AWS Security Hub에서 규정을 위반한 리소스와 Shield Advanced에 의해 탐지된 공격에 대해 조사 결과를 생성합니다.

CloudWatch Internet Monitor

CloudWatch Internet Monitor는 AWS가 글로벌 네트워킹 공간에서 캡처한 연결 데이터를 사용하여 인터넷 기반 애플리케이션의 성능에 대한 가시성을 제공합니다. Internet Monitor는 AWS의 워크로드 공간에 맞게 조정된 가용성 및 성능과 같은 인터넷 측정치를 지속적으로 관찰할 수 있도록 합니다. Internet Monitor를 사용하면 시간 경과에 따른 평균 인터넷 성능 지표와 위치 및 인터넷 서비스 제공업체(ISP)별 문제(이벤트)에 대한 인사이트를 얻을 수 있습니다. Internet Monitor를 사용하면 CloudFront와 같은 서비스를 사용하는 애플리케이션의 최종 사용자 환경에 영향을 미치는 이벤트를 쉽게 식별할 수 있습니다. Amazon CloudWatch Internet Monitor를 사용하여 클릭 한 번으로 CloudFront 엣지로 가는 인터넷 트래픽을 모니터링하는 방법에 대한 이 블로그 게시물을 참조하세요.

인터넷 문제가 앱 성능에 미치는 영향 파악

클라이언트 측 모니터링

서버 측 지표 외에도 CloudWatch RUM을 사용하여 클라이언트 측 지표를 수집하는 것이 좋습니다. RUM은 사용자의 관점에서 웹 애플리케이션이 어떻게 동작하는지에 대한 가장 정확한 데이터를 제공합니다. CloudWatch RUM을 사용하려면 웹 페이지에 Javascript 태그를 추가해야 합니다. Javascript는 페이지 로드 시간, Core Web Vitals 또는 애플리케이션 오류와 같은 브라우저 API에서 데이터를 수집한 다음 대시보드 작성을 위해 CloudWatch RUM으로 전송합니다. 또한 CloudWatch RUM은 WebVitalsCumulativeLayoutShift, WebVitalsFirstInputDelay, WebVitalsLargestContentfulPaint, JsErrorCount, HttpStatusCodeCount 등과 같은 CloudWatch 지표를 내보냅니다.

리소스

이 페이지의 내용이 도움이 되었나요?