VPC 환경에서 이용 가능합니다.
Cloud Hadoop 클러스터 내에서 발생한 Alerts를 사용자의 설정에 따라 전달 받을 수 있습니다. 이 가이드에서는 Cloud Hadoop 클러스터 내 Oozie 워크플로 및 Ambari에서 발생한 Alerts를 사용자의 설정에 따라 메일, 메시지 등으로 전달 받기 위한 방법 두 가지에 대하여 설명합니다.
- 로컬 SMTP 서버를 직접 구축하여 Oozie 워크플로 내 Alerts를 메일로 전달받는 방법
- 네이버클라우드 SENS 서비스를 사용하여 Ambari 내 Alerts를 메시지로 전달받는 방법
SMTP 서버를 사용한 메일 Alerts
이 가이드에서는 Oozie 워크플로 내 Alerts를 메일로 전달받기 위해 Cloud Hadoop 클러스터의 엣지 노드에 SMTP 서버로 sendmail을 설치하여 사용합니다. 클러스터 외부에 별도의 STMP 서버를 구축하여 사용하실 경우에는 클러스터와 SMTP 서버가 통신할 수 있도록 ACG를 설정해야 합니다.
a. SMTP 서버 구축
- Cloud Hadoop (VPC) 엣지 노드에 ssh로 접속해 주십시오. 엣지 노드에 접속하는 방법은 SSH로 클러스터 노드 접속 가이드를 참고해 주십시오.
- 아래 명령어를 수행해 sendmail 설치 여부를 확인해 주십시오.
- 설치가 되어있지 않다면, 아래 명령어를 수행해 sendmail을 다운로드해 주십시오.
- sendmail 관련 설정을 변경하기 위해 아래 명령어를 수행해 sendmai.mc 파일을 읽어 주십시오.
- sendmail.mc 파일 내용을 아래와 같이 변경해 주십시오.
- 52, 53번 줄의 dnl을 제거
- 118번 줄의 127.0.0.1을 0.0.0.0으로 변경
<변경 전>
<변경 후>
- 아래 명령어를 수행해 sendmail.mc로 sendmail.cf 파일을 생성해 주십시오.
- 아래 명령어를 수행해 /etc/mail/access 파일에 Oozie가 동작중인 m-001 노드, m-002 노드의 IP를 추가해 주십시오.
<변경 전>
<변경 후>
- 아래 명령어를 수행해 access ip를 적용해 주십시오.
- 정상적으로 동작하는지 확인하기 위해 sendmail을 실행하여 테스트를 진행해 주십시오. 그 후 전송한 메일을 확인해 주십시오.
b. Ambari에서 Oozie Email Notification 설정
- Ambari에 접속 후 [Oozie] > [CONFIGS] > [ADVANCED] > [Custom oozie-site] > [Add Property ...] 버튼을 클릭하여 아래 2개의 설정을 추가한 뒤 [SAVE] 버튼을 눌러 저장하고 [RESTART] 버튼을 눌러 재시작해 주십시오.
- Key: "oozie.email.from.address", Value: "발송인으로 사용할 주소 (예시: oozie@localhost.com")
- Key: "oozie.email.smtp.host", Value: "SMTP 서버가 설치되어 있는 서버의 IP (이 가이드에서는 엣지노드에 SMTP 서버를 설치했으므로, 엣지노드의 IP)
c. Hue에서 Oozie Email Notification 테스트
이 가이드에서는 Oozie 워크플로의 실패 상황을 재현하기 위해 Hue에 접속하여 아래와 같은 단순한 워크플로를 실행하였습니다. Shell Action을 수행한 뒤 전환 상태를 모두 KILL 상태로 임의 설정하였습니다. Hue Oozie Workflow에서 Sqoop, Hive 사용 가이드를 참고하여 복잡한 워크플로에도 동일하게 적용해볼 수 있습니다.
- [Hue] 에 접속하여 좌측 메뉴 [Oozie 편집기] > [Workflow] 버튼을 클릭해 주십시오. 그 후 아래와 같이 임의의 Shell Script를 워크플로에 추가하고 [설정] 버튼을 클릭해 주십시오.
- Oozie 워크플로의 실패 상황을 재현하기 위해 아래와 같이 전환 상태를 모두 KILL 상태로 설정해 주십시오.
- 워크플로 내 오류 메시지 설정에서 오류 발생 시 EMAIL에 체크한 뒤 수신할 메일 주소, 제목 및 내용을 입력해 주십시오.
- 워크플로를 제출하면 잠시 뒤 실패합니다. 그 후 메일이 정상적으로 발송되었는지 확인해 주십시오.
SENS 서비스를 사용한 메시지 Alerts
이 가이드에서는 Ambari 내 Alerts에 대한 메시지 Alerts 기능을 구현하기 위해 네이버클라우드의 SENS 서비스를 사용합니다. SENS 서비스에 대한 설명은 Simple & Easy Notification Service 소개
가이드를 참고해 주십시오.
a. SENS 프로젝트 생성
- SENS 서비스를 사용하기 위해 SENS 프로젝트를 생성하고 Key 값들을 조회해 주십시오. 이에 대한 설명은 공통 가이드를 참고해 주십시오.
- SENS SMS 서비스를 사용하기 위해 발신번호를 등록해 주십시오. 이에 대한 설명은 Calling Number 가이드를 참고해 주십시오.
b. Ambari Alert Notifications 설정
- Ambari에 접속 후 [Alerts] > [ACTIONS] > [Manage Notifications] > [+] 버튼을 클릭하여 아래와 같이 Alert target을 등록해 주십시오.
- Cloud Hadoop (VPC) 엣지 노드에 ssh로 접속해 주십시오. 엣지 노드에 접속하는 방법은 SSH로 클러스터 노드 접속를 참고해 주십시오.
- 아래 명령어를 수행해 Custom Alerts 파일을 /var/lib/ambari-server/resources/scripts 경로에 생성해 주십시오. 이 가이드에서는 SENS 서비스에 메시지 전송 요청을 보내는 API를 활용합니다. SENS 서비스 API에 대한 설명은 SMS API 가이드를 참고해 주십시오. Ncloud API Signature 생성에 대한 설명은 Ncloud API 가이드를 참고해 주십시오.
- 아래 명령어를 수행해 Ambari alerts에 대한 로그를 기록할 파일을 /var/log/ambari-server/ 경로에 생성해 주십시오.
- 아래 명령어를 수행해 alert.py와 custom_notification.log 파일에 대한 권한을 설정해 주십시오.
- 아래 명령어를 수행해 ambari.properties 파일에 Alert Script 파일의 경로를 추가해 주십시오.
- 아래 명령어를 수행해 ambari-server를 재시작해 주십시오.
- SENS 서비스 콘솔에 접속해 메시지 전송이 정상적으로 처리되었는지 확인해 주십시오.