2

AWS CloudWatch Logs에서 흥미로운 시나리오가 있습니다. 현재 log4net을 사용하고 CloudWatch Logs 에이전트를 사용하여 CloudWatch 로그에 모든 로그를 펌프합니다. 기본적으로 [오류] 항목을 검색하는 CloudWatch의 메트릭이 있으며 경고는 발생하는대로 개발자 알림 (임계 값> = 1, 기간 - 1 분)에 대한 다른 서비스로 알람을 전달합니다. 이 모든 것이 훌륭하게 작동합니다.AWS CloudWatch 처리 및 처리되지 않은 예외에 대한 측정 항목을 기록합니다.

이제는 특정 오류를 다르게 처리하고 싶습니다. 예를 들어 예외 유형에 따라 N 분 동안 X 번 발생했을 때만 Alarm을 트리거하려고합니다. 그래서이 경우에이 조건에 대한 메트릭을 작성한 다음 알람에 할당합니다. 문제는이 질문의 첫 번째 부분에서 설명한 일반적인 오류 측정 항목이며 각 개별 오류 발생을 추적합니다. 이제 여러 알림이 표시됩니다. 각 오류마다 하나씩, X 번 발생 후 하나씩.

일반 오류 메트릭을 사용하지 않도록 설정할 수 있지만 처리되지 않은 예외를 추적 할 수있는 기능이 손실됩니다. 나는 가능한 모든 예외에 대한 척도를 가져야 할 것이다. 내가 놓친 게 있니? 이것을 처리하는 가장 좋은 방법은 무엇입니까?

+0

log4net을 사용하여 로그를 CloudWatch로 푸는 방법에 대해 자세히 설명 할 수 있습니까? –

+1

@ andrew.w.lane, EC2에서 실행중인 CloudWatch Logs Agent를 실행하고 특정 위치에서 CloudWatch로 주기적으로 로그를 전송합니다. –

답변

2

일반적으로 알림을 받기 전에 몇 가지 추가 처리 작업을 수행하는 기능을 만들어 처리 할 수 ​​있습니다. 가장 쉬운 방법은 처리되지 않은 오류 알람의 SNS 주제에 AWS 람다 함수를 구독하는 것입니다. 주제에서 탈퇴하고 정의한 조건이 통과 된 후에 만 ​​람다 함수가 SNS 대신에 사용자에게 통지하도록하십시오.

이 경우 사용자의 집계 메트릭이 경보 상태 인 동안 집계 메트릭과 일치하는 처리되지 않은 오류에 대한 개별 메트릭의 알림을 표시하지 않는 것처럼 들립니다.

의사 코드 : 당신의 집계되지 않은 예외 경보의 상태를 얻을 수

  • 사용 DescribeAlarms API. 집계 경보가 '경보'상태 인 경우 계속하십시오. 기간
  • - 알람 타임 스탬프 :
    • 로그 그룹
    • 로그 스트림
    • FilterPattern : 개별 처리되지 않은 예외 경보의 메트릭 필터
    • 상영을
    • 사용 FilterLogEvents API 얻을 이벤트가 일치하는 로그에 종료 시간 : 알람 타임 스탬프
  • GetLogEvents API는 모든 로그 이벤트가 일치 얻을 :
    • 로그 그룹
    • 로그 스트림
    • 상영 시간 : 알람 타임 스탬프 - 기간
    • ENDTIME : 알람 타임 스탬프
  • 하면 '모든 이벤트' 카운트 및 '필터링 된 이벤트'수가 일치하고 집계 경보가 경보 상태 인 경우 알림을 보내지 않습니다. 그렇지 않으면 SES 또는 SNS API를 사용하여 사용자에게 알림을 보냅니다.

SNS를 통해 계속 알림을 받으려면 경보가 람다를 트리거하는 데 사용하는 것과 동일한 주제를 다시 사용하지 마십시오. 모바일/SMS 알림 용으로 별도의 항목을 만드십시오.


나는이 log4net보다 더 쉬울 것입니다 있는지 확실하지 않습니다,하지만 당신이 직접 SNS에 처리되지 않은 예외를 전송하는 것이 더있을 수 있습니다 귀하의 로그에 후 처리 이런 종류의 일을 의도하는 경우 포스트 먼저 람다에서 처리 한 다음 람다 함수에서 클라우드 워치 로그에 기록합니다. 이 변경으로 인해 SNS 메시지 페이로드를 통해 처리되지 않은 예외를 검사 할 수 있으며 중복되는 우려를 억제하는 방법을 제어 할 수 있습니다.

+0

우수 답변! 고맙습니다! –