본문 바로가기

Data/Data Engineering

[Grafana] Slack Alert 만들기

반응형

업무상 특정 머신이 고장이 날때마다 매번 사람의 눈으로 모니터링을 하고있었는데, 이를 해결하기 위해서 슬랙과 Grafana를 연동하여 자동으로 머신이 고장날때마다 알람이 보내지게끔 작업을 했다.

처음으로 그라파나를 만져봐서 많은 시행착오를 겪었고 이를 정리하고자한다.

 

Grafana Alerting Rules Setting

Grafana의 왼쪽 카테고리에서 종모양(Alerting)을 클릭하면 아래와같이 메뉴들이 존재한다. 여기서 앞에 두개 메뉴만 이용할것이다.

  • Alert rules - 직역하듯이, 알람의 룰을 설정해놓는곳이다
  • Contact points - 알람이 발생했을때 어떤 방식으로 알람을 보낼것인지에 대한 설정이다

Alert rules에서 새로운 룰을 만드는 버튼을 클릭하면 아래와같이 표시된다

일단 첫번째로 "어떤 데이터에 대해서 알람을 울릴것인지"에 대한 정의가 필요하다. 나같은 경우에는 MySQL로 작성을 해야해서 Data source를 MySQL로 설정하고 쿼리를 작성했다.

SQL이라서 쿼리의 where구문이 매우 중요하다. 기억해야할건 그라파나에서 "특정 데이터가 조회가 되면(또는 존재할경우)" 알람이 발송이된다 라고 이해하면된다.

두번째로는 "알람이 얼마나 자주 울리게 할것인지"에 대한 내용을 정의해줘야한다. 해당 부분은 Evaluate every에서 정의할수있다.

두개칸이 있는데 만약에 1m, 5m라고 써져있다면.

"1분 간격으로 5분동안 해당 알람이 유지되었을 경우에 알람이 울리게된다"

뭐... 나 같은 경우에 한번이라도 조회가 될경우에 울려야하니까 5m, 5m으로 값을 설정했다.

 

다음은 해당 알람 룰에 대한 이름을 정의하고, 해당 룰을 어디에 저장할것인지 어떤 Group에 해당할것인지에 대해 적어줘야한다. 사실 이부분은 크게 중요하지않는것같다.

그 아래에 "Summary and annotations"에 대한 내용을 적어야하는데, 이건 Grafana의 Annotation에 해당하는 내용이며, 추후 슬랙 알람에서 사용되는 공간이다. 이부분은 특별히 쓰지않아도 상관은없지만, 나중에 슬랙 메세지 커스텀을 해줄때는 꼭 내용을 채워줘야한다. 해당 내용은 다음 게시글에서 다루겠다.

 

Grafana Contact Points

자 위와같이 알람에 대한 조건을 설정다했다면, 이젠 "어떤 방식"으로 알람을 보낼것인지에 대해서도 정의해줘야한다. Grafana에서는 다양한 방식으로 알람을 보낼수가있는데 slack은 물론이고 LINE 메신저도 포함되어있었다.

이번 작업에는 Slack 알람화를 해야하니 Contact point type을 slack으로 설정했다.

 

Recipient는 슬랙알람을 보낼곳의 채널명을 적어줘야한다. 즉 보내야하는 슬랙 채널이름이 #jaeyung 이라면 해당 부분에도 동일하게 적어줘야한다(# 도 포함해야함)

 

Token부분에는 slack bot의 token을 넣어줘야하는데, 해당 정보값은 slack app에서 제공하는 토큰을 넣어주면된다. (xoxb- 로 시작하는 문자열)

 

Optional Slack Settings은 슬랙 메세지의 특정부분을 정의할수있는데, 예를들어 슬랙 알람에 대한 제목, 슬랙 알람의 이름, 슬랙 메세지 내용 등등을 설정할수있다. 이 부분은 슬랙 메세지 커스텀마이징을 할경우가 아니라면 특별히 건드리지 않아도된다.

 

Notification settings은 그라파나 알람은 알람이 울리고나서 특정시간이 지나면 복구가 되었다고 다시 메시지가 오는데 복구가 되었다는 메세지를 안보내고싶다면 해당 세팅값을 클릭해서 복구 메세지를 안보내게끔 설정할수있다.

자 이렇게 세팅을 다했다면... 우리가 원하는 알람대상에서 데이터가 발생할경우 우리가 설정한 슬랙 채널에 아래와같이 메세지가 보내지게된다.

완성이다! 하지만 보시다시피 우리가 원하지않는 정보 메세지까지 출력되게된다. 따라서 해당 슬랙 메세지를 커스텀마이징하는 과정을 다음 게시글에서 다뤄보겠다.

반응형