코알못

[Redash] 데이터 시각화 도구를 이용 해보자! - 경고 알람 본문

BIG DATA

[Redash] 데이터 시각화 도구를 이용 해보자! - 경고 알람

코린이s 2022. 2. 26. 14:00
728x90

redash 기능중 특정 조건을 만족할시 알람을 보내는 기능이 있다.

로그 수가 특정 카운트 이하로 떨어졌을시 알람을 발생시키는 실습을 진행해본다!  

우선 오늘 날짜 로그 수를 카운팅하는 쿼리를 작성한다.

현재는 1건이고 3건 이하일시 알람을 보내도록 설정한다.

redash 페이지를 접속한뒤 Create > Alert 를 클릭한다.

그러나 메일 서버를 설정하라는 오류가 발생한다.

메일 서버는 나중에 셋팅하기로 하고 우선 slack 연동을 진행해본다.

설정 값은 아래와 같다. 

- totalcount 칼럼의 값이 3보다 작을시 알람을 보낸다.

- 상태값이 변경(경고 > 정상 or 정상 > 경고 등) 되면 무조건 보낸다.

- rearm secounds 는 알람을 보낸뒤 1s 동안은 감지 하지 않는다. (만약 60s 이면 알람 보낸뒤 60초 뒤에 다시 체크하여 경고 조건에 해당하면 알람 전송)

OP 의 경우는 아래와 같이 설정 가능 하다. (text, int 칼럼 선택해도 선택 할수 있는 OP 종류는 동일)

Save 하면 왼쪽에 알람 대상자를 선정할 수 있으며 slack 을 선택할 것이기에 'create new destination' 을 눌러 추가하기로 한다.

그전에 slack 에 webhooks 라는 앱을 slack 에 설치하여 통신 해야한다.

해당 글 하단에 참고사항을 보고 설치한뒤 아래 과정을 진행한다.

slack 을 선택한다.

생성한 webhook 에 대한 정보를 기입한다.

create 를 누르면 notifications 란에 slack 이 추가 되었으며 ADD 를 눌러 추가하면

아래와 같이 추가 되었고 SAVE 를 눌러 저장한다.

알람 정보를 보면 처음에는 UNKNOW 상태이다.

상태가 의미하는 값은 아래와 같다.

  • UNKNOW : 알람을 등록하고 한번도 실행되지 않았다.
  • TRIGGERED : 경고 조건에 해당 한다.
  • OK : 최근 실행이 경고 조건에 들지 않는다.

그 다음 쿼리를 실행하여 감지되도록 한다.

총 데이터 건수가 1건 이기에 '3건 이하' 라는 경고 조건에 해당 하기에 slack 알람이 온다.

알람 상태를 redash 에서 확인해보면 UNKNOW > TRIGGERED 로 변경 되었다.

이후 경고 조건이 아니라면 OK 상태로 변경되고

slack 에서도 초록색으로 알람이 온다.

이제 메일 알람도 추가한다. 

google SMTP 서버를 이용하였으며 해당글 하단 참고사항 2번을 참고하여 SMTP 서버 구성 및 설정을 진행한다.

이제 이메일을 추가해본다.

이메일을 클릭한다.

원하는 Name , telplate, address(email) 을 적고 저장한다.

Notification 에 추가한 이메일을 넣는다.

Save 를 눌러 저장한다.

새 쿼리를 실행하여 감지 되도록 한다.

메일이 왔는지 확인해보면 정상적으로 왔다!

여기서 slack, email 로 오는 내용이 무슨 의미인지 몰라서 커스텀 하게 내용을 수정 하고자 한다.

그러나 구글링 해보니 커스텀하게 수정하는 부분은 V8 에서 지원하지 않는다고 한다.

그래서 V10 으로 업그레이드를 진행한다. (아래 저자가 작성한 글을 참고한다.)

- https://co-de.tistory.com/89

 

[Redash] V8 > V10 업그레이드

저자의 경우 redash 에서 제공하는 AMI 이미지로 설치를 진행하였으나 버전은 V8(8.0.0+b32245) 이였다. redash 커뮤니티 사이트를 찾아보니 github 에는 v10.1.0(10.1.0.b50633) 까지 버전이 나왔으나 AMI 는 V8..

co-de.tistory.com

메일 설정 란에 들어가서 수정을 진행한다.

버전을 변경하니 새로운 기능이 생겼다.

trigger when 의 경우 조건이 추가되었다. (기존에는 < , >, =, != 만 가능했다.)

알람 주기의 경우 기존 보다 조건이 다양해졌다.

  • 정상으로 돌아오기 전에 경고 알람 한번만
  • 정상전까지 경고 조건에 해당 될때마다
  • 무조건 (주기 선택 가능)

template 의 경우 아래 참고하여 만들어본다.

- https://redash.io/help/user-guide/alerts/custom-alert-notifications

 

Customizing Alert Notifications

 

redash.io

// 설정

- 제목

[{{ALERT_STATUS}}] {{ALERT_NAME}}

- 내용

caused by : {{QUERY_RESULT_COLS}} is {{QUERY_RESULT_VALUE}} {{ALERT_CONDITION}} {{ALERT_THRESHOLD}}

- ALERT URL : {{ALERT_URL}}
- QUERY URL : {{QUERY_URL}}

// preview 눌러 실제 전송될 화면 보기

이제 쿼리를 실행하여 경고를 발송해 본다.

// slack alert 

// email alert

그런데 기존에 미리보기 했던 화면과 달라 공식 홈페이지를 보니 미리보기랑 다를 수 있다고 나왔다.

 alert url 은 앞에 IP 를 붙여 바로 이동할 수 있도록 한다.

{{QUERY_NAME}} query ERROR
caused by : {{QUERY_RESULT_COLS}} is {{QUERY_RESULT_VALUE}} {{ALERT_CONDITION}} {{ALERT_THRESHOLD}}

- ALERT URL : http://[public ip]{{ALERT_URL}}
- QUERY URL : http://[public ip]{{QUERY_URL}}

// slack

// 네이버

// 구글

줄바꿈이 안되니 json 형식이 나을것 같다.

// 내용

{
"alert_name":"{{ALERT_NAME}}",
"alert_message":"{{QUERY_RESULT_COLS}} is {{QUERY_RESULT_VALUE}} {{ALERT_CONDITION}} {{ALERT_THRESHOLD}}",
"query_name":"{{QUERY_NAME}}",
"alert_url":"http://[public ip]{{ALERT_URL}}",
"query_url":"http://[public ip]{{QUERY_URL}}"
}

// 미리보기

// slack

// 네이버

// 구글

// json parser 에서 보기 좋게 보기

끝!

<참고>

1. slack webhook 설치

 

slack 가서 확인해보면 추가 되었다고 나온다.

2. gmail 에서 알람을 보내도록 google smtp 서버 구축

// gmail

// redash 서버 접속

$ ssh -i key.pem ubunto@publicIp

// 설정 변경

REDASH_HOST , REDASH_SERVER_NAME 설정은 안해도 동작하나

해당 설정을 하지 않으면 추후 사용자 초대시 메일 전송되는데 초대 링크가 해당 IP 로 안되어 있어서 랜딩이 안되는 이슈 발생할 수있어 추가한다. (필요없다면 안해도 된다.)

$ sudo vi /opt/redash/env
REDASH_MAIL_SERVER=smtp.gmail.com
REDASH_MAIL_PORT=587
REDASH_MAIL_USE_TLS=True
REDASH_MAIL_USERNAME=[email]
REDASH_MAIL_PASSWORD=[app pw]
REDASH_HOST=http://[publicip]
REDASH_SERVER_NAME=http://[publicip]

// 재기동

// 모두 중단
$ sudo docker stop $(sudo docker ps -a -q)
// 죽이고 나서 상테 확인
$ sudo docker ps -a
// 백그라운드로 기동
$ sudo docker-compose -f /opt/redash/docker-compose.yml up -d
Starting redash_redis_1    ... done
Starting redash_postgres_1 ... done
Starting redash_scheduler_1        ... done
Starting redash_scheduled_worker_1 ... done
Starting redash_server_1           ... done
Starting redash_adhoc_worker_1     ... done
Starting redash_nginx_1            ... done
// 확인
$ sudo docker ps -a
STATUS
Up 29 seconds
Up 29 seconds
Up 29 second...

3. google SMTP 서버 구성후 redash 'SMTPAuthenticationError'

- 해결 방안 : SMTP 설정 부분에 password 입력하면 안되고 앱 비밀 번호 생성

우선 2차 비밀번호가 설정 안되어있다면 앱비밀번호를 생성할 수 없으니 2차 비밀번호 설정 한다.

앱 비밀번호 기능이 생겼다.

생성 완료

비밀번호를 교체한다.

$ sudo vi /opt/redash/env
REDASH_MAIL_PASSWORD=[앱비밀번호]

4. SSL version not find ERROR 

- 해결 방안 : SMTP 설정중 SSL 사용여부 설정 false 로 변경하거나 설정 부분 제거 (default 가 false)

5. 도커 명령어

// 현재 상태 확인

$ sudo docker ps -a

// 도커 시작

$ sudo docker-compose -f /opt/redash/docker-compose.yml up -d
Starting redash_redis_1    ... done
Starting redash_postgres_1 ... done
Starting redash_scheduler_1        ... done
Starting redash_scheduled_worker_1 ... done
Starting redash_server_1           ... done
Starting redash_adhoc_worker_1     ... done
Starting redash_nginx_1            ... done

// 도커 모두 중단

$ sudo docker stop $(sudo docker ps -a -q)

// 일부 중단

$ sudo docker stop [name]

// 로그 확인

$ sudo docker logs -f redash_server_1

6. redash 서버 접속시 'Permission denied'

// 기존

$ ssh -i key.pem ec2-user@publicIp

// 변경

$ ssh -i key.pem ubunto@publicIp

7. slack 이모지 사이트

https://www.webfx.com/tools/emoji-cheat-sheet/

8. template sample

https://redash.io/help/user-guide/alerts/custom-alert-notifications

728x90
Comments