--- title: "Custom Alerts 설정" slug: "hadoop-vpc-29" tags: ["Cloud Hadoop", "Cloud Hadoop ecosystem"] updated: 2026-09-17T09:09:16Z published: 2026-09-17T09:09:16Z canonical: "guide-fin.ncloud-docs.com/hadoop-vpc-29" --- > ## Documentation Index > Fetch the complete documentation index at: https://guide-fin.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # Custom Alerts 설정 Cloud Hadoop 클러스터 내에서 발생한 Alerts를 사용자의 설정에 따라 전달 받을 수 있습니다. 이 가이드에서는 Cloud Hadoop 클러스터 내 Oozie 워크플로 및 Ambari에서 발생한 Alerts를 사용자의 설정에 따라 메일, 메시지 등으로 전달받기 위한 방법 두 가지에 대하여 설명합니다. 1. [로컬 SMTP 서버를 직접 구축하여 Oozie 워크플로 내 Alerts를 메일로 전달받는 방법](/docs/hadoop-vpc-29#SMTP%EC%84%9C%EB%B2%84%EB%A5%BC%EC%82%AC%EC%9A%A9%ED%95%9C%EB%A9%94%EC%9D%BCAlerts) 2. [네이버클라우드 SENS 서비스를 사용하여 Ambari 내 Alerts를 메시지로 전달받는 방법](/docs/hadoop-vpc-29#SENS%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A5%BC%EC%82%AC%EC%9A%A9%ED%95%9C%EB%A9%94%EC%8B%9C%EC%A7%80Alerts) ## SMTP 서버를 사용한 메일 Alerts 이 가이드에서는 Oozie 워크플로 내 Alerts를 메일로 전달받기 위해 Cloud Hadoop 클러스터의 엣지 노드에 SMTP 서버로 sendmail을 설치하여 사용합니다. 클러스터 외부에 별도의 STMP 서버를 구축하여 사용하실 경우에는 클러스터와 SMTP 서버가 통신할 수 있도록 ACG를 설정해야 합니다. ### a. SMTP 서버 구축 1. Cloud Hadoop 엣지 노드에 ssh로 접속해 주십시오. 엣지 노드에 접속하는 방법은 [SSH로 클러스터 노드 접속](/docs/analytics-cloudhadoop-chadoop-3-2) 가이드를 참고해 주십시오. 2. 아래 명령어를 수행해 **sendmail** 설치 여부를 확인해 주십시오. ``` rpm -qa |grep sendmail ``` 3. 설치가 되어있지 않다면, 아래 명령어를 수행해 **sendmail**을 다운로드해 주십시오. ``` sudo yum install -y sendmail sendmail-cf ``` 4. **sendmail** 관련 설정을 변경하기 위해 아래 명령어를 수행해 **sendmai.mc** 파일을 읽어 주십시오. ``` cd /etc/mail sudo vi sendmail.mc ``` 5. **sendmail.mc** 파일 내용을 아래와 같이 변경해 주십시오. - 56, 57번 줄의 **dnl**을 제거 - 121번 줄의 **127.0.0.1**을 **0.0.0.0**으로 변경 <변경 전> ``` [52] dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl [53] dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl [118] DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl ``` <변경 후> ``` [52] TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl [53] define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl [118] DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl ``` 1. 아래 명령어를 수행해 **sendmail.mc**로 **sendmail.cf** 파일을 생성해 주십시오. ``` sudo sh -c "sudo m4 sendmail.mc > sendmail.cf" ``` 1. 아래 명령어를 수행해 **/etc/mail/access** 파일에 Oozie가 동작중인 m-001 노드, m-002 노드의 IP를 추가해 주십시오. ``` sudo vi /etc/mail/access ``` <변경 전> ``` # By default we allow relaying from localhost... Connect:localhost.localdomain RELAY Connect:localhost RELAY Connect:127.0.0.1 RELAY ``` <변경 후> ``` # By default we allow relaying from localhost... Connect:localhost.localdomain RELAY Connect:localhost RELAY Connect:127.0.0.1 RELAY Connect:10.0.3.16 RELAY Connect:10.0.3.17 RELAY ``` 1. 아래 명령어를 수행해 access ip를 적용해 주십시오. ``` sudo makemap hash access < access ``` 1. 정상적으로 동작하는지 확인하기 위해 **sendmail**을 실행하여 테스트를 진행해 주십시오. 그 후 전송한 메일을 확인해 주십시오. ``` sudo systemctl start sendmail sudo yum -y install mailx mail test123@navercorp.com Subject: test test test . EOT ``` ### b. Ambari에서 Oozie Email Notification 설정 1. 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) ![hadoop-vpc-29_1.png](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/hadoop-vpc-29_1.png) ### c. Hue에서 Oozie Email Notification 테스트 이 가이드에서는 Oozie 워크플로의 실패 상황을 재현하기 위해 **Hue**에 접속하여 아래와 같은 단순한 워크플로를 실행하였습니다. Shell Action을 수행한 뒤 전환 상태를 모두 **KILL** 상태로 임의 설정하였습니다. [Hue Oozie Workflow에서 Sqoop, Hive 사용](/docs/hadoop-vpc-28) 가이드를 참고하여 복잡한 워크플로에도 동일하게 적용해볼 수 있습니다. 1. **[Hue]** 에 접속하여 좌측 메뉴 **[Oozie 편집기]** > **[Workflow]** 버튼을 클릭해 주십시오. 그 후 아래와 같이 임의의 Shell Script를 워크플로에 추가하고 **[설정]** 버튼을 클릭해 주십시오. ![hadoop-vpc-29_2.png](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/hadoop-vpc-29_2.png) 2. Oozie 워크플로의 실패 상황을 재현하기 위해 아래와 같이 전환 상태를 모두 **KILL** 상태로 설정해 주십시오. ![hadoop-vpc-29_3_ko.png](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/hadoop-vpc-29_3_ko.png) 3. 워크플로 내 오류 메시지 설정에서 **오류 발생 시 EMAIL**에 체크한 뒤 수신할 메일 주소, 제목 및 내용을 입력해 주십시오. ![hadoop-vpc-29_4_ko.png](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/hadoop-vpc-29_4_ko.png) 4. 워크플로를 제출하면 잠시 뒤 실패합니다. 그 후 메일이 정상적으로 발송되었는지 확인해 주십시오. ## SENS 서비스를 사용한 메시지 Alerts 이 가이드에서는 Ambari 내 Alerts에 대한 메시지 Alerts 기능을 구현하기 위해 네이버클라우드의 SENS 서비스를 사용합니다. SENS 서비스에 대한 설명은 [Simple & Easy Notification Service 소개](/docs/sens-overview) 가이드를 참고해 주십시오. ### a. SENS 프로젝트 생성 1. SENS 서비스를 사용하기 위해 SENS 프로젝트를 생성하고 Key 값들을 조회해 주십시오. 이에 대한 설명은 [공통 가이드](/docs/sens-project)를 참고해 주십시오. 2. SENS SMS 서비스를 사용하기 위해 발신번호를 등록해 주십시오. 이에 대한 설명은 [웹 콘솔 사용 가이드](/docs/sens-bizmessage)를 참고해 주십시오. ### b. Ambari Alert Notifications 설정 1. Ambari에 접속 후 **[Alerts]** > **[ACTIONS]** > **[Manage Notifications]** > **[+]** 버튼을 클릭하여 아래와 같이 Alert target을 등록해 주십시오. ![hadoop-vpc-29_5.png](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/hadoop-vpc-29_5.png) 2. Cloud Hadoop 엣지 노드에 ssh로 접속해 주십시오. 엣지 노드에 접속하는 방법은 [SSH로 클러스터 노드 접속](/docs/analytics-cloudhadoop-chadoop-3-2)를 참고해 주십시오. 3. 아래 명령어를 수행해 Custom Alerts 파일을 **/var/lib/ambari-server/resources/scripts** 경로에 생성해 주십시오. 이 가이드에서는 SENS 서비스에 메시지 전송 요청을 보내는 API를 활용합니다. SENS 서비스 API에 대한 설명은 [SMS API](https://api-fin.ncloud-docs.com/docs/sens-sms-send) 가이드를 참고해 주십시오. Ncloud API Signature 생성에 대한 설명은 [Ncloud API](https://api-fin.ncloud-docs.com/docs/common-ncpapi#%EC%8B%9C%EA%B7%B8%EB%8B%88%EC%B2%98%EC%83%9D%EC%84%B1) 가이드를 참고해 주십시오. ``` sudo vi /var/lib/ambari-server/resources/scripts/alert.py ``` ``` #!/usr/bin/env python import sys import urllib2 import json import logging from datetime import datetime import hashlib import hmac import base64 import time SENS_API_ENDPOINT = "https://sens.apigw.fin-ntruss.com/sms/v2/services/{SENS 콘솔에서 발급받은 serviceId}/messages" LOG_PATH_FILE = "/var/log/ambari-server/custom_notification.log" TIMESTAMP = int(time.time() * 1000) TIMESTAMP = str(TIMESTAMP) def test_notification(): definition_name = sys.argv[1] definition_label = sys.argv[2] service_name = sys.argv[3] alert_state = sys.argv[4] alert_text = sys.argv[5] send_message_from_sens(definition_name, definition_label, service_name, alert_state, alert_text) def send_message_from_sens(definition_name, definition_label, service_name, alert_state, alert_text): try: log_data = str(TIMESTAMP + " -- " + 'Alert Dispatcher' + " -- " + definition_name + " -- " + definition_label + " -- " + service_name + " -- " + alert_state + " -- " + alert_text + " -- ") request_body = { "type":"SMS", "from":{발신 번호}, "content":log_data, "messages":[ { "to":{수신 번호} } ] } headers={"Content-Type": "application/json; charset=utf-8", "x-ncp-apigw-timestamp": TIMESTAMP, "x-ncp-iam-access-key": {포탈 또는 Sub Account에서 발급받은 Access Key ID}, "x-ncp-apigw-signature-v2": make_signature()} data = json.dumps(request_body, ensure_ascii=False) req = urllib2.Request(SENS_API_ENDPOINT, data, headers) f = urllib2.urlopen(req) response = f.read() f.close() file = open(LOG_PATH_FILE, "a+") file.write(log_data) file.write(response) file.close() except Exception as err: logging.warning(err) def make_signature(): access_key = {포탈 또는 Sub Account에서 발급받은 Access Key ID} secret_key = {포탈 또는 Sub Account에서 발급받은 Secret Key} secret_key = bytes(secret_key) method = "POST" uri = "/sms/v2/services/{SENS 콘솔에서 발급받은 serviceId}/messages" message = method + " " + uri + "\n" + TIMESTAMP + "\n" + access_key message = bytes(message) signingKey = base64.b64encode(hmac.new(secret_key, message, digestmod=hashlib.sha256).digest()) return signingKey if __name__ == '__main__': test_notification() ``` 1. 아래 명령어를 수행해 Ambari alerts에 대한 로그를 기록할 파일을 **/var/log/ambari-server/** 경로에 생성해 주십시오. ``` sudo vi /var/log/ambari-server/custom_notification.log ``` 1. 아래 명령어를 수행해 **alert.py**와 **custom_notification.log** 파일에 대한 권한을 설정해 주십시오. ``` sudo chmod -R 700 /var/lib/ambari-server/resources/scripts/alert.py sudo chmod -R 766 /var/log/ambari-server/custom_notification.log ``` 1. 아래 명령어를 수행해 **ambari.properties** 파일에 Alert Script 파일의 경로를 추가해 주십시오. ``` sudo vi /etc/ambari-server/conf/ambari.properties ``` ``` notification.dispatch.alert.script=/var/lib/ambari-server/resources/scripts/alert.py ``` 1. 아래 명령어를 수행해 **ambari-server**를 재시작해 주십시오. ``` sudo ambari-server restart ``` 1. SENS 서비스 콘솔에 접속해 메시지 전송이 정상적으로 처리되었는지 확인해 주십시오. ![hadoop-vpc-29_7_ko.png](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/hadoop-vpc-29_7_ko.png) ![hadoop-vpc-29_6_ko.png](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/hadoop-vpc-29_6_ko.png)