CloudWatch 경보가 INSUFFICIENT_DATA 상태인 이유는 무엇인가요?

4분 분량
0

Amazon CloudWatch 경보가 INSUFFICIENT_DATA 상태입니다. 그 원인을 확인하려면 어떻게 해야 하나요?

간략한 설명

INSUFFICIENT_DATA 상태는 다음을 나타낼 수 있습니다.

  • Amazon CloudWatch 경보가 방금 시작되었습니다.
  • 지표를 사용할 수 없습니다.
  • 네임스페이스, 지표 이름이나 차원과 같은 지표 파라미터가 잘못 구성되었습니다.
  • 지표에 데이터가 부족하여 경보 상태를 확인할 수 없습니다.

경보가 예기치 않게 INSUFFICIENT_DATA 상태인 경우 다음과 같은 문제 해결 단계에서 가장 일반적인 몇 가지 원인을 검토합니다.

해결 방법

정상 지표 동작

CloudWatch 경보를 만들 때 첫 상태는 기본적으로 INSUFFICIENT_DATA입니다. 모니터링되는 지표의 첫 평가를 완료할 때까지 이 상태를 유지합니다. 일반적으로, 경보는 생성되고 몇 분 안에 INSUFFICIENT_DATA에서 벗어나 다른 상태로 전환됩니다.

경보가 INSUFFICIENT_DATA 상태인 경우, 지표의 정상 동작을 나타낼 가능성이 있습니다. CloudWatch로 푸시되는 방법에 따라 기간 중심 및 이벤트 중심의 두 가지 지표 유형이 있습니다. 서비스 중에는 일정한 간격을 두고 지표에 정기 데이터 포인트를 보내는 것이 있습니다. 또 다른 서비스는 특정 이벤트로 트리거되면 지표 데이터를 푸시하고, 데이터 포인트가 없는 기간이 있을 가능성도 있습니다.

기간 중심 지표의 예로는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스의 기본 CPUUtilization 지표가 있습니다. 이 지표에는 5분마다 데이터 포인트가 있습니다. 하지만, 인스턴스를 중지해도 서비스가 여기에 데이터 포인트를 푸시하지는 않습니다. 이벤트 중심 지표의 예로는 Application Load Balancer의 HTTPCode_ELB_5XX_Count 지표가 있습니다. Elastic Load Balancing(ELB)에서 5XX 응답이 있으면 ELB 서비스가 이 지표로 데이터 포인트를 보냅니다. 일정 기간 중 5XX 오류가 없는 경우, 결과는 빈 기간이 됩니다(0의 값이 아님).

어느 경보가 주어진 기간 집합 중에 데이터 포인트가 없는 지표를 모니터링 중인 경우, 누락된 데이터는 누락된 것으로 취급되고, 그러한 기간 중 경보의 상태는 INSUFFICIENT_DATA가 됩니다. 경보를 강제로 경보 또는 정상 상태로 설정하려면 경보가 데이터 포인트 없이 이 기간을 처리하는 방법을 구성합니다.

잘못된 CloudWatch 경보 설정

각 지표는 네임스페이스, 지표 이름 및 최대 10개의 차원으로 정의됩니다. 데이터 포인트를 검색할 때 타임스탬프 및 상황에 따라 단위를 지정해야 합니다. 이러한 파라미터 중 하나에 잘못된 값을 제공하면 CloudWatch가 존재하지 않는 지표를 검색하려고 시도합니다. 결과는 빈 데이터 세트입니다.

참고: 데이터 포인트는 보통 하나의 단위로 지표에 푸시되지만, 경보를 생성할 때 단위를 지정할 필요는 없습니다. 단위를 지정하지 않으면 잘못된 단위 구성과 관련된 문제가 발생하지 않습니다. 단, 지표에서 데이터 포인트의 단위가 여러 개인 경우라면 올바른 단위를 사용하는 것이 좋습니다.

DescribeAlarms API를 사용하여 모니터링하는 지표에 대한 전체 파라미터 목록을 가져옵니다. 이를 ListMetrics 출력과 비교할 수 있습니다. 다음에 대한 파라미터를 확인합니다.

  • 철자 오류 및 대문자와 소문자의 부적절한 사용. 네임스페이스, 지표 이름과 차원 키/값은 대소문자를 구분합니다.
  • 차원이 잘못 지정되었거나 누락되었습니다.

잘못 구성된 경보 기간

원하는 빈도로 데이터 포인트를 검색하도록 경보를 구성할 수 있습니다. 단, 경보가 사용하는 기간이 서비스 또는 소스에서 데이터 포인트를 지표로 전송하는 데 사용한 기간보다 짧은 경우 원치 않는 상태가 발생할 수 있습니다. 원치 않는 INSUFFICIENT_DATA 상태를 방지하려면 지표의 데이터 포인트가 푸시되는 기간과 같거나 크게 경보 기간을 구성하는 것이 좋습니다. 경보에 대해 N 중에서 M 설정을 사용할 수도 있습니다.

데이터 포인트의 지연된 전송

CloudWatch로 전송되는 데이터 포인트에 따라 지표를 모니터링하는 경보에서 예기치 않은 INSUFFICIENT_DATA 상태가 발생할 수 있습니다.

예를 들어, EC2 인스턴스에 배포된 소프트웨어에서 사용자 지정 지표로 데이터 포인트를 전송하는 사용자 지정 애플리케이션이 있을 가능성이 있습니다. 데이터 손실을 방지하려면 실패한 API 호출을 재시도하도록 애플리케이션을 구성할 수 있습니다. 하지만 외부 요소(예를 들어 VPC 설정 수정)로 인해 인스턴스와 CloudWatch의 연결이 끊어집니다. 이 시나리오에서는 환경이 여전히 데이터를 생성합니다. 하지만 전송되는 데이터 포인트는 외부 문제를 해결할 때까지 계속 실패합니다.

표준 경보를 설정한 경우 경보는 1분마다 지표를 평가합니다. 평가 중에는 경보에 구성된 지표에서 보낸, 사용 가능한 최신 데이터 포인트가 입수됩니다. 연결되지 않은 이 기간에도 경보는 계속 지표를 평가합니다. 데이터 포인트가 CloudWatch에 전달되지 않고 있기 때문에, 경보는 해당 평가 기간에 대한 데이터 포인트를 가져올 수 없습니다. 이 때문에 INSUFFICIENT_DATA 상태가 트리거됩니다.

연결을 복구한 후 애플리케이션은 각각 타임스탬프를 포함하는 데이터 포인트의 백로그를 전송합니다. 이 지연 이후 데이터 포인트가 전송되므로 이제 경보는 사용자가 지정한 기간 및 평가 기간에 따라 최근 데이터 포인트를 가져올 수 있습니다. 이 시점에서는 이제 데이터 포인트가 CloudWatch에 저장되므로 더 이상 지표에 공백이 표시되지 않습니다. 단, 경보는 이미 해당 기간을 평가했으므로 경보 내역에 다음과 비슷한 메시지가 표시됩니다.

[...] 
   "stateValue": "INSUFFICIENT_DATA",
   "stateReason": "Insufficient Data: 2 datapoints were unknown.",
   [...]

경보가 INSUFFICIENT_DATA 상태가 되지 않도록 하려면 경보가 누락된 데이터를 처리하는 방법을 변경할 수 있습니다.


AWS 공식
AWS 공식업데이트됨 2년 전