개요

기본적인 모니터링 환경을 구축했으면 이제 알람까지 설정할 차례이다.
우리 팀의 서비스에서는 서비스 가동률을 체크하는 것에 대한 요구사항이 계속 있어왔기 때문에 서비스가 중단되면 알림이 오도록 설정하려고 한다.

알림 명세

  • 목표: 서비스 중단 인지
  • 알림 대상: 회사 담당자
  • 알림 방식: 회사 메일 알림, 비상 연락망 메일 알림(회사 서버가 전부 다운되었을 경우를 대비)

알림 설정하기

SMTP 설정 확인

Grafana 설정에서 SMTP 설정에 제대로 되어있는지 확인한다.
Administration > General > Settings 에서 smtp 항목들을 검색하면 설정을 확인할 수 있다.
001_Prometheus + Grafana를 사용한 Spring 기반 웹 어플리케이션 모니터링 구성
앞서 포스팅에서 SMTP 설정을 위한 grafana.ini 작성에 대한 내용이 있으니 설정이 되어있지 않다면 참고해서 설정 하고 시작하자.

알림 받을 사용자 정보 등록하기

Alerting > Contact points 메뉴로 들어가서 Create contact poin 버튼을 클릭한다.

알림을 받을 사용자 정보를 입력 후 저장한다.

Add contact point integration을 통해 추가적인 연락처를 같이 입력할 수 있다.
이메일 뿐만 아니라 Jira, Teams, Discord, Slack 등등 연결할 수 있으니 적절히 설정하자.
나는 우리 회사 SMTP 서버와 연결하여 메일로 알람을 받도록 설정할거다.

알림 양식 지정도 가능하다. 내용 커스터마이징과 긴급하게 보이기 위한 아이콘을 넣는 등의 작업을 할 수 있다.

알림 규칙 정하기

Alerting > Alert rules에 들어가서 New alert rule 버튼을 클릭한다.

톰캣 서비스 다운을 기준으로 할 것이라서 Name을 “Tomcat Down” 으로 해줬다.
서비스가 내려갔는지는 Prometheus가 기본으로 넣어주는 up 메트릭이 1로 반환되는 것으로 확인할 수 있다.
up 메트릭을 활용해서 지난 5분 동안 spring-application job의 up이 한 번도 1이 된 적이 없는 경우를 서비스 다운으로 간주하겠다.
2번 항목에서
PromQL을 직접 입력하거나 아래 이미지 처럼 설정해 준다.

max_over_time(up{job="spring-application"}[5m]) == 0

이후 3번 항목 Folder와 Label, 4번 항목 Evaluation Group과 Interval을 적절히 설정해 준다.
Evaluation Group은 알람을 특정 그룹 단위로 동시에 평가하는 묶음으로 알람 평가의 주기는 이 그룹 단위로 지정된다.

알람 규칙에 대상 지정하기

5번 항목에서 알람 대상을 지정해준다.

결과

Default로 메일이 오면 위와 같은 양식으로 알림이 온다.
원하는 양식으로 커스텀해서 사용하자.

알람이 너무 자주와서 Silence 처리해놨는데 Silence 로 설정을 바꿔도 그 Silence 설정 자체에 대한 내용도 메일로 날라온다. 유의하자.