CloudWatch 경보를 기반으로 작업 연계하기

오형근·2024년 1월 19일
0

Study

목록 보기
5/10
post-thumbnail
post-custom-banner

cloudwatch의 경보나 지표 등을 트리거로 다음 동작을 연동시키는 경우(특히 Lambda)가 빈번하게 발생하는데, 각 경우의 방법들을 정리해보고자 한다.

CloudWatch Alarm ⇒ Lambda

  • 가장 직관적인 방법이다. CloudWatch에 존재하는 지표를 기반으로 알람을 생성하고, 해당 알람을 트리거로 Lambda를 실행시켜 특정 동작을 수행한다.

  • CloudWatch Alarm ⇒ 편집 탭에서 새로운 작업을 추가할 수 있는데, 이 때 Lambda 작업을 추가하도록 되어 있다.

AWS Console Lambda 작업 추가

  • 이후 해당 경보에서 지정된 임계 조건을 초과한 경우, Lambda의 Invoke 횟수가 하나 추가되는 것을 확인할 수 있다.
  • 아래는 특정 임계를 넘기기보다 ‘정상’ 상태일 때 Lambda가 작동하도록 하여 곧바로 Invocation을 확인할 수 있도록 한 결과이다

Lambda monitoring invocations

  • 이 경우, 콘솔에 트리거가 추가되어 보이지는 않음을 알아두자.

CloudWatch Alarm ⇒ EventBridge(CloudWatch Events) ⇒ Lambda

  • 어떻게 보면 AWS에서 가장 권장하는 방법인 것 같다. AWS 관련 자격증을 준비하다보면 EventBridge를 심심찮게 만날 수 있는데, 그만큼 좋은 서비스이고 이를 적극 활용하는 것을 권장하는 편이다.

  • 나 또한 실제 이벤트 기반 시스템을 구성할 때, EventBridge를 적극 활용한다. 또한, CloudWatch에서 지표를 생성하면 해당 지표를 기반으로 EventBridge 규칙을 사용할 수 있도록 템플릿을 제공해주기 때문에 더욱 손쉽게 구현할 수 있다는 장점이 있다.

  • 기본적으로 경보가 생성된 이후 해당 경보 상세 탭 맨 아래를 보면 ‘EventBridge 규칙 보기’ 라는 토글 버튼을 확인할 수 있다. 해당 토글을 열면 아래와 같은 JSON 형태의 규칙을 확인할 수 있다.

  • 해당 규칙을 등록한뒤, 대상을 지정하여 다양한 서비스로 이벤트를 확장할 수 있다.

  • 확장성이 매우 높고, 가장 보편적이며, Well-Architected 인 방법이다.

  • 일반적으로 해당 알림의 경보를 나타내기 위해 아래 속성에 다음을 추가하여 사용하는 편이다.

{
	...
	"detail": {
		"state": {
			"value": "ALARM"
		}
	}
}

EventBridge 규칙

  • 이외에도, 다양한 설정들을 추가로 적용할 수 있는데, 아래 문서에서 확인하자.

경보 이벤트 및 EventBridge - Amazon CloudWatch

CloudWatch Logs ⇒ Lambda

  • 일반적으로 특정 작업을 수행하기 위해 사용된다기보다는, 로그 스트림의 로그를 모니터링하고 분석하는 용도로 자주 사용되는 방법이다.

  • 로그 스트림에 대해 구독을 생성해 해당 로그에서 특정 표시자 혹은 패턴을 감지하고 이때 Lambda를 호출하여 작업을 수행하는 용도이다.

  • 이를 위해서는 몇 가지 작업이 필요한데, 기본적으로 아래의 순서를 따른다.

  1. 로그 생성을 원하는 대상 지정(EC2의 경우 CloudWatch Agent 설치)
  2. 지정한 대상이 로그를 CloudWatch Logs로 전송하도록 지정
    1. 기본적으로 AWS의 대부분의 리소스는 로그를 전송한다. 만일 그렇지 않은 대상이 로그를 전송하도록 하려면, 해당 리소스에 logs:PutLogEvents 권한을 부여해야한다.
  3. 로그 그룹에 대해서 지표 필터 생성
    1. 필터링을 통해 로그에서 내가 원하는 정보만 추출할 수 있도록 하는 과정이다. 필터 패턴을 설정하여 내가 관찰하고 싶은 정보만 추출할 수 있다. 자세한 내용은 아래 글을 확인하자.

지표 필터, 구독 필터, 필터 로그 이벤트 및 Live Tail에 대한 필터 패턴 구문 - Amazon CloudWatch Logs

  • 이후 전송된 로그 데이터를 기반으로 지표 필터를 생성하게 된다.
  1. 이후는 위의 과정을 적용하면 된다. 생성된 지표를 기반으로 경보를 생성하고, Lambda 등의 작업을 연결해주면된다.

위에서 설명한 세 가지 방법 중 앞의 2가지는 기존에 AWS에서 제공되는 사항들을 기반으로 작업을 수행하는 경우, 마지막 방법은 그 외에 제공되지는 않지만 내가 원하는 지표를 기반으로 작업을 수행하는 경우 유용하게 활용될 수 있다.

모든 경우의 방법을 익혀두고 적재적소에 알맞게 적용하도록 노력해보자.

profile
eng) https://medium.com/@a01091634257
post-custom-banner

0개의 댓글