11. 경고 알림 사용하기

아이펀 대시보드 는 모니터링 하고 있는 아이펀 엔진으로 개발된 게임 서버의 상태에 이상이 있을 시 메일Slack 을 통해 알림을 하는 기능을 지원하고 있습니다.

Attention

알림을 메일 로 전송하기 위해서는 OAuth 2.0 Client 를 이용해 Google Gmail 연동을 해야합니다. 자세한 내용은 Gmail 메일 연동하기 을 참고해주세요.

알림을 Slack 으로 받기 위해서는 Slack Webhook API URL 이 있어야합니다. 자세한 내용은 Incoming-Webhook 을 참고해주세요.

11.1. 경고 알림 메일 목록 관리하기

경고 알림을 받을 메일 목록을 Funapi Dashboard 를 통해 관리 할 수 있습니다.

우선 Funapi Dashboard 에서 환경 설정 을 클릭합니다.

_images/use_funapi_dashboard_topmenu2.png _images/add_monitoring_nor1.png

클릭 후 좌상단의 톱니바퀴 아이콘을 클릭 후 경고 메일 목록 을 클릭합니다.

11.1.1. 대상자 추가하기

아이펀 대시보드 환경 설정 메일을 추가, 수정, 삭제 하실 수 있습니다.

그 후, 경고 메일 목록을 클릭합니다.

우측 하단의 메일 추가 버튼을 누르면, 메일과 경고 레벨을 설정 할 수 있습니다.

11.1.2. 대상자 수정, 삭제하기

아이펀 대시보드에서 환경설정 을 누릅니다.

그 후, 경고 메일 목록을 클릭합니다.

목록의 이메일이나, 경고 레벨을 클릭하시면 모달이 올라옵니다. 이메일을 변경하거나 경고 레벨을 변경 후 저장 버튼을 누르시면 수정이 됩니다. 삭제하실때는 삭제 버튼을 클릭해주세요.

11.2. 경고 알림 카운터 목록

현재 아이펀 대시보드 에서 제공하는 경고 카운터 목록입니다.

  • cpus: os.cpusprocess.cpu 를 통해 사용량을 계산하여 모니터링합니다.
  • memory: os.freeramos.totalram 을 통해 사용량을 계산하여 모니터링 합니다.
  • event queue length: object 카운터의 event_queue_length 를 모니터링합니다.
  • outstanding query: object 카운터의 outstanding_fetch_queryoutstanding_update_query 를 모니터링합니다.

11.3. Gmail 메일 연동하기

Funapi Dashboard 에서는 OAuth 2.0 Client를 이용한 Gmail 연동 을 통해 경고 메일 목록 에 있는 메일에 서버 이상 시 알림을 전송받을 수 있습니다. 이 과정을 진행하기 위해서는 메일을 보내기 위한 Gmail 계정 이 반드시 하나 필요합니다.

Attention

설정 된 계정의 아이디 혹은 그 아이디의 별명(alias) 으로만 이메일을 발송할 수 있습니다.

11.3.1. 프로젝트 만들기

사용할 구글 계정으로 로그인 한 후 Developer Console 페이지로 들어갑니다. 그 후 좌측 상단의 Project 를 클릭 후 하위 메뉴에서 프로젝트 만들기 를 클릭합니다.

_images/gmail1.png

그리고 나면 아래와 같은 화면이 나타나게 되는데요.

_images/gmail2.png

프로젝트 만들기 를 클릭합니다.

_images/gmail3.png

프로젝트 이름을 입력 후 만들기 를 클릭합니다. 이 예제에서는 funapi-dashboard 를 프로젝트 이름으로 사용하겠습니다.

_images/gmail4.png

만들기 를 클릭하고 난 뒤 약간의 로딩을 거치고 프로젝트가 생성되게 됩니다.

11.3.2. Gmail API 사용 설정하기

프로젝트를 생성했다면 해당 프로젝트가 사용할 API의 설정을 변경해주어야합니다.

_images/api_perm1.png

라이브러리 페이지로 들어갑니다.

_images/api_perm2.png

그 후 Gmail API 를 찾아서 클릭합니다.

_images/api_perm3.png

사용 설정 버튼을 클릭합니다.

_images/api_perm4.png

사용 설정 버튼이 사용 중지 버튼으로 바뀌었고, 아래와 같이 사용량 통계가 나오게 됩니다.

11.3.3. OAuth 2.0 클라이언트 ID 발급받기

_images/gmail5.png

프로젝트가 생성 된 뒤에는 사용자 인증 정보를 만들어야합니다. 사용자 인증 정보 만들기 를 클릭 후, OAuth 클라이언트 ID 를 클릭합니다.

_images/gmail6.png _images/gmail7.png

제품명은 프로젝트 이름과 동일하게 입력해줍니다. 이 예제에서는 funapi-dashboard 를 입력하겠습니다. 입력이 끝나셨다면 저장 을 눌러주세요.

_images/gmail9.png

애플리케이션 유형기타 로 선택한 후 프로젝트 이름을 기입하고 생성 버튼을 눌러줍니다.

_images/gmail10.png

OAuth 클라이언트 ID가 발급되었습니다. 확인 을 눌러 창을 닫겠습니다.

_images/gmail11.png

생성된 OAuth 2.0 클라이언트 아이디 목록에 방금 생성한 프로젝트 이름이 보이게 됩니다. 우측 끝으로 가면 다운로드 이모티콘에 JSON 다운로드 라는 툴팁이 올라오는데, JSON 파일을 다운로드 받습니다.

11.3.4. OAuth 2.0 클라이언트를 대시보드와 연동하기

다운로드 받은 Client_Secret(...).json 파일의 이름을 Client_Secret.json 으로 변경합니다. 그 후 다음과 같이 입력합니다.

$ sudo vi /etc/funapi_dashboard/settings.py

환경 설정 파일이 열립니다. 환경 설정 파일에서 CLIENT_SECRET_PATH 에 아까 다운로드 받은 client_secret.json 의 전체 경로를 입력 후 저장합니다. 그 후 다음과 같이 입력합니다.

$ sudo python /etc/funapi_dashboard/credential.py

Important

만일 로컬에서 작업 중이지 않은 경우 올바르게 OAuth 인증이 진행되지 않을 수 있습니다. 해당 경우는 아래와 같이 --noauth_local_webserver 인자를 추가하여 실행합니다.

$ sudo python /etc/funapi_dashboard/credential.py --noauth_local_webserver

콘솔에 출력된 URL에 들어간 후 허용을 눌러줍니다. --noauth_local_webserver 인자를 추가하여 실행했다면 verification code 도 입력해줍니다.

credential 생성이 정상적으로 진행되었다면 /home/user/.credentials/ 하위에 json 파일이 생성됩니다. json 파일이 /home/ 하위에 있는 경우 json 파일이 존재하더라도 읽지 못하는 경우가 생기니 파일을 옮기겠습니다.

또한 생성된 json 파일에 대한 읽기 권한이 없으면 메일을 보낼 수 없습니다.

# 파일 이름은 /etc/funapi_dashboard/settings.py 내부의 CREDENTIAL_NAME 입니다.
# 설정을 변경하지 않았다고 가정하고 파일 퍼미션을 변경하겠습니다.

# 파일을 /etc/funapi_dashboard 하위로 옮기겠습니다.
sudo mv /home/user/.credentials/funapi-dashboard.json /etc/funapi_dashboard/funapi-dashboard.json

# 그 후 퍼미션을 변경하겠습니다.
sudo chmod 644 /etc/funapi_dashboard/funapi-dashboard.json

변경되었다면 해당 경로를 settings.pyCREDENTIAL_PATH 에 지정해주어야합니다.

# 설정 파일을 열겠습니다.
sudo vi /etc/funapi_dashboard/settings.py

# CREDENTIAL_PATH 의 기본값은 None입니다. 수정하겠습니다.
# CREDENTIAL_PATH = None
CREDENTIAL_PATH="/etc/funapi_dashboard/funapi-dashboard.json"

그리고 메일이 정상적으로 발송되는지 확인하기 위해 다음과 같이 입력하거나 대시보드 URL에서 /message/helloworld 를 입력합니다.

# 변경사항을 다시 로드하기 위해 uwsgi 를 재시작하겠습니다.
$ sudo systemctl restart uwsgi

# gmail credential 을 생성한 계정으로 메일이 발송됩니다.
$ curl -X GET http://localhost:8000/v1/alert/message/helloworld

Google Developer Console 에 등록된 계정으로 메일이 날아가는지 확인하세요.

11.4. Slack 연동하기

아이펀 대시보드 는 Slack 을 이용하여 경고를 받을 수도 있습니다. 그러기 위해서는 Funapi Dashboardsettings.pySLACK_WEBHOOK_URL 에 URL이 입력되어야합니다.

Tip

Slack Webhook URL에 관련된 자세한 내용은 Incoming WebhooksGetting started with Incoming Webhooks 페이지를 참고해주세요.

Slack APP을 생성하고 URL을 생성한 후에는 채널과 대상자는 APP에서 지정한 값이 되며, 설정파일에서 수정할 수 없습니다. URL은 https://hooks.slack.com/services/T000000000/B00000000/XXXXXXX 와 같은 형식입니다.

Note

Funapi Dashboardsettings.py 에 대한 더 자세한 내용은 경고 메시지 발송 을 참고해주세요.