개요
ELK 스택에서 발생하는 에러 로그를 디스코드로 알림을 받는 방법에 대해 기록해보려고 합니다.
목표
- 1. 어떤 로그를 '치명적'이라고 판단할지 기준 정하기
- 2. Discord 웹훅 준비하기
- 3. Kibana Alerting 기능으로 알림 설정하기
- 4. 테스트 로그를 보내 알림이 잘 오는지 확인하기
1. 무엇이 "치명적인 에러"인지 기준 세우기
가장 먼저 해야할 일은 어떤 로그를 "치명적"으로 분류하고 알림을 받을지 기준을 정하는 거겠죠.
이건 시스템마다, 애플리케이션마다 다르기 때문에 로그 데이터 형식을 꼭 확인해봐야 합니다.
일반적으로 사용하는 기준들은 다음과 같습니다.
- 로그 레벨: 가장 흔한 방법이죠. 로그에 기록된 레벨(
error
,fatal
,critical
등)을 기준으로 필터링하는거에요. - 특정 키워드 포함: 로그 메시지(
message
필드 등) 안에Exception
,Fatal
,Timeout
과 같은 특정 단어가 포함될 경우를 기준으로 삼을 수 있겠죠. - 특정 패턴 일치: 정규 표현식을 사용해 복잡한 에러 메시지 패턴을 잡아낼 수도 있구요.
- 발생 빈도: 특정 에러가 짧은 시간 안에 비정상적으로 많이 발생할 때 알림을 받도록 설정할 수도 있을거 같네요.
2. 디스코드 알림 채널 준비하기
ELK가 에러를 발견했을 때 메시지를 던져줄 Discord 채널과 웹훅 URL이 필요합니다.
- 1. 알림을 받고 싶은 Discord 서버/채널 설정으로 이동하세요. (서버 설정 > 연동 또는 통합)
- 2. 웹후크 메뉴에서 새 웹후크 만들기를 클릭합니다.
- 3. 이름(예: ELK Critical Alerts)을 정하고 알림을 받을 채널을 선택한 뒤, 웹후크 URL 복사를 눌러 URL을 안전한 곳에 보관하세요. (🚨 이 URL은 비밀번호처럼 취급해야 합니다!)
3. Kibana 알림 설정하기 (Connector & Rule)
이제 Kibana에서 실제 알림 설정을 진행해볼게요.
3-1. 커넥터 만들기
1. Kibana Stack Management
> Rules and Connectors
(또는 Alerts and Actions
) > Connectors
탭으로 이동합니다.
2. Create connector
클릭 후 Webhook
타입을 선택합니다.
3. Name: 알아보기 쉬운 이름 (예: Discord webhook - Critical Errors
)