--- title: "Custom Alerts の設定" slug: "hadoop-vpc-29" updated: 2026-09-17T09:25:51Z published: 2026-09-17T09:25:51Z canonical: "guide.ncloud-docs.com/hadoop-vpc-29" stale: true --- > ## Documentation Index > Fetch the complete documentation index at: https://guide.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # Custom Alerts の設定 VPC環境で利用できます。 Cloud Hadoopクラスタ内で発生した Alertsをユーザーの設定に応じて通知できます。本ガイドでは、Cloud Hadoopクラスタ内の Oozieワークフローと Ambariで発生した Alertsをユーザーの設定に応じてメール、メッセージなどに通知する2つの方法について説明します。 1. [ローカル SMTPサーバを直接構築して Oozieワークフロー内の Alertsをメール通知する方法](/docs/ja/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. [NAVERクラウド SENSサービスを利用して Ambari内の Alertsをメッセージ通知する方法](/docs/ja/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(VPC)エッジノードに sshでアクセスします。エッジノードにアクセスする方法は、[SSHによるクラスタノードアクセス](/docs/ja/hadoop-vpc-5)ガイドをご参照ください。 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](https://cdn.document360.io/6998976f-9d95-4df8-b847-d375892b92c2/Images/Documentation/hadoop-vpc-29_1.png?sv=2026-02-06&spr=https&st=2026-10-26T14%3A33%3A27Z&se=2026-10-26T15%3A33%3A27Z&sr=c&sp=r&sig=Lfm%2Fl5attWnyPrhnVe%2Fh7vqg8TBurygCnT7nraD8FfA%3D) ### c.Hueで Oozie Email Notificationのテスト 本ガイドでは Oozieワークフローの失敗状況を再現するために、**Hue**にアクセスして以下のような単純なワークフローを実行しました。Shell Actionを実行した後に移行ステータスをすべて **KILL**ステータスに任意設定しました。[Hue Oozie Workflowで Sqoop、Hiveを使用する](/docs/ja/hadoop-vpc-28)ガイドを参照して、複雑なワークフローにも同様に適用できます。 1. **[Hue]** にアクセスして左側メニューの **[Oozieエディタ]** > **[Workflow]** ボタンをクリックします。その後、以下のように任意の Shell Scriptをワークフローに追加して **[設定]** ボタンをクリックします。 ![hadoop-vpc-29_2](https://cdn.document360.io/6998976f-9d95-4df8-b847-d375892b92c2/Images/Documentation/hadoop-vpc-29_2.png?sv=2026-02-06&spr=https&st=2026-10-26T14%3A33%3A27Z&se=2026-10-26T15%3A33%3A27Z&sr=c&sp=r&sig=Lfm%2Fl5attWnyPrhnVe%2Fh7vqg8TBurygCnT7nraD8FfA%3D) 2. Oozieワークフローの失敗状況を再現するために、以下のように移行ステータスをすべて **KILL**ステータスに設定します。 ![hadoop-vpc-29_3_ko](https://cdn.document360.io/6998976f-9d95-4df8-b847-d375892b92c2/Images/Documentation/hadoop-vpc-29_3_ja.png?sv=2026-02-06&spr=https&st=2026-10-26T14%3A33%3A27Z&se=2026-10-26T15%3A33%3A27Z&sr=c&sp=r&sig=Lfm%2Fl5attWnyPrhnVe%2Fh7vqg8TBurygCnT7nraD8FfA%3D) 3. ワークフロー内のエラーメッセージの設定で**エラー発生時に EMAIL**にチェックして受信する Eメールアドレス、件名と内容を入力します。 ![hadoop-vpc-29_4_ko](https://cdn.document360.io/6998976f-9d95-4df8-b847-d375892b92c2/Images/Documentation/hadoop-vpc-29_4_ja.png?sv=2026-02-06&spr=https&st=2026-10-26T14%3A33%3A27Z&se=2026-10-26T15%3A33%3A27Z&sr=c&sp=r&sig=Lfm%2Fl5attWnyPrhnVe%2Fh7vqg8TBurygCnT7nraD8FfA%3D) 4. ワークフローを提出すると、しばらくして失敗します。その後、メールが正常に送信されたかを確認します。 ## SENSサービスを使用したメッセージ Alerts 本ガイドでは Ambari内の Alertsについてのメッセージ Alerts機能を具現するために NAVERクラウドの SENSサービスを利用します。SENSサービスについての説明は、[Simple & Easy Notification Serviceのご紹介](/docs/ja/sens-overview)ガイドをご参照ください。 ### a.SENSプロジェクトの作成 1. SENSサービスを利用するために SENSプロジェクトを作成して Key値を照会します。サービスについての説明は、[共通ガイド](/docs/ja/sens-start)をご参照ください。 2. SENS SMSサービスを利用するために発信番号を登録します。これについての説明は、[Calling Number ご利用ガイド](/docs/ja/sens-callingno)をご参照ください。 ### b.Ambari Alert Notificationsの設定 1. Ambariにアクセスした後 **[Alerts]** > **[ACTIONS]** > **[Manage Notifications]** > **[+]** ボタンをクリックして以下のように Alert targetを登録します。 ![hadoop-vpc-29_5](https://cdn.document360.io/6998976f-9d95-4df8-b847-d375892b92c2/Images/Documentation/hadoop-vpc-29_5.png?sv=2026-02-06&spr=https&st=2026-10-26T14%3A33%3A27Z&se=2026-10-26T15%3A33%3A27Z&sr=c&sp=r&sig=Lfm%2Fl5attWnyPrhnVe%2Fh7vqg8TBurygCnT7nraD8FfA%3D) 2. Cloud Hadoop(VPC)エッジノードに sshでアクセスします。エッジノードにアクセスする方法は、[SSHによるクラスタノードアクセス](/docs/ja/hadoop-vpc-5)をご参照ください。 3. 以下のコマンドを実行して Custom Alertsファイルを **/var/lib/ambari-server/resources/scripts**パスに作成します。本ガイドでは SENSサービスでメッセージ送信リクエストを送る APIを活用します。SENSサービス APIについての説明は、[SMS API](https://api.ncloud-docs.com/docs/ja/sens-sms-send)ガイドをご参照ください。Ncloud API Signatureの作成についての説明は、[Ncloud API](https://api.ncloud-docs.com/docs/ja/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.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](https://cdn.document360.io/6998976f-9d95-4df8-b847-d375892b92c2/Images/Documentation/hadoop-vpc-29_7_ja.png?sv=2026-02-06&spr=https&st=2026-10-26T14%3A33%3A27Z&se=2026-10-26T15%3A33%3A27Z&sr=c&sp=r&sig=Lfm%2Fl5attWnyPrhnVe%2Fh7vqg8TBurygCnT7nraD8FfA%3D) ![hadoop-vpc-29_6_ko](https://cdn.document360.io/6998976f-9d95-4df8-b847-d375892b92c2/Images/Documentation/hadoop-vpc-29_6_ja.png?sv=2026-02-06&spr=https&st=2026-10-26T14%3A33%3A27Z&se=2026-10-26T15%3A33%3A27Z&sr=c&sp=r&sig=Lfm%2Fl5attWnyPrhnVe%2Fh7vqg8TBurygCnT7nraD8FfA%3D)