Synology Chat - 외부 연동 Webhook 기능 / 2부

개인적인 일이 있어서 그간 아무것도 못하다가 아주 오랫만에... 2부를 정리합니다.

 

회사에서 Chat을 주로 활용하도록 하고 있다보니, Synology에서도 이런 기능이 제공 되지 않을까?라는 아주 막연한 기대를 갖고 관련 자료를 찾다 보니, 가능성이 보였습니다. 해당 포스팅은 막연한, 목적을 두고 차근차근 접근하는 과정을 정리한 내용이며, 비 개발자이기 때문에 차근차근 접근해보는 과정을 기록하였습니다. 

본 포스팅은 비 전문가의 포스팅으로, 기초적인 사전 지식이 없이 목표에 맞추어 탐구하고 문제를 해결하는 것에 집중하는 것을 목표로 하고 있습니다. 야매이기 때문에 본래의 사전적 이해, 활용 방법이 다를 수 있는 점 참고해 주시고 봐 주시길 당부드립니다. 오류에 대한 지적은 감사합니다. 

# 서버 장애 발생 모니터링

1. 어떻게 구현할 것인가?

서버 장애의 상황이 특히 네트워크 접속 문제로 발생되는 상황이 가장크다.

필자는 주로 UptimeRobot 서비스를 통해 서버 장애 모니터링을 해 왔기 때문에, 이번 과정에서는 Webhook 연동 기능을 활용, IP/Domain Ping 상태에 따른 채널내 Webhook 메시지 전송하는 것을 검토하였다.

UptimeRobot.com 소개
HTTP(s), Ping, Port 등의 접속상태를 주기적으로 체크할 수 있는 모니터링 서비스로, 대시보드와 장애 발생시 SNS, 이메일, SMS, Webhook 등으로 다양한 연동 기반을 지원하며, 무료 플랜의 경우 최대 50개 까지 등록을 지원한다.

 

2. 구현하자.

# UptimeRobot에 모니터링 사이트 추가 및 Webhook 생성

1) 신규 모니터링 사이트 추가

Add New Monitor 를 눌러, 모니터링 할 사이트 또는 IP를 지정하여 등록해준다. 등록된 사이트는 기본적으로 무료플랜을 기준으로 5분에 1번 체크후에 결과를 이메일로 전송한다. (옵션으로 특정 상태에 따라 발송 여부를 결정 가능)

 

2) 알림 방법 설정

모니터링의 상태 체크 후, 결과에 따라 다양한 방식의 알림(연락) 방법을 제공하는데 메일, SMS, SNS, Webhook 등을 추가 할 수 있다. 

  • 상단의 My Setting 메뉴를 클릭하고, Alert Contacts 패널의 Add Alert Contact 버튼을 클릭한다.

 

Alert Contact Type은 Email 외에도 다양한 방식의 알림 방법을 제공하고 있다.

  • 본래의 목적이 있으니 Webhook을 선택한다.

 

Webhook 설정은 아래와 같이 하며, 메시지 안에 표시될 변수에 대해서는 아래의 내용을 참고하도록 한다.

  • *monitorID* (모니터의 ID)
  • *monitorURL* (모니터의 URL)
  • *monitorFriendlyName* (모니터의 이름)
  • *alertType* (1 : 다운, 2 : 업, 3 : SSL 만료 알림)
  • *alertTypeFriendlyName* (아래로 또는 위로)
  • *alertDetails* (경고에 관한 모든 정보-존재하는 경우-)
  • *alertDuration* (초 단위 및 up 이벤트에만 해당)
  • *alertDateTime* (Unix 타임 스탬프)

 

URL to Notify 

http://도메인:5001/chat/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=토큰

 

POST Value (JSON Format) : 입력안함

{"text":*monitorFriendlyName*&"의 상태가 "&*alertType*&"로 확인되었습니다\n - URL : "&*monitorURL*&"\n - 상태 : "&*alertType*&"\n - 모니터링 시간 : "&*alertDateTime*&"\n - 상세정보 : "&*alertDetails*}

본래 위와 같이 Payload로 입력하고자 하였으나, Payload가 정상적으로 동작되지 않아서 그냥, URL을 Encoding해서 입력함. (이때 변수는 유지되도록 함)

 

+URL to Notify (JSON 포함/Encoding 필요)

&payload={%22text%22: *monitorFriendlyName*&%22의 상태가 %22&*alertType*&%22로 확인되었습니다\n - URL : %22&*monitorURL*&"\n - 상태 : %22&*alertType*&%22\n - 모니터링 시간 : %22&*alertDateTime*&%22\n - 상세정보 : %22&*alertDetails*}&

 

 

Enable notifications for : Up&Down Event

※ 향후 다운 상태에서만 메시지가 표시될 수 있도록 'Only down event' 로 변경하도록 한다.

 

3) 알림 설정

모니터 항목을 편집하고, Select "Alert Contacts To Notify"의 모니터링 알림 대상을 설정합니다. (Test 항목이 Webhook 임)

 

 

 

 

>>  안됨??

 

참고 포스팅