Helion OpenStack Monasca SMTP 統合

2016-03-24

Helion OpenStack Monasca SMTP 統合

Machine-translated — the English original is authoritative.

最近、Monascaのインストールの一環としてSMTP統合を設定するというリクエストを受けました。モデル構築フェーズ中にcloudConfig.ymlファイルでSMTPサーバーの設定をすでに完了していたので、オペレーションコンソールまたはMonasca CLIを通じて通知詳細を設定するだけで済むはずでした。しかし、これは機能しませんでした。そこで、SMTP統合のデバッグのために私が行った手順を以下に示します。

SMTPサーバーとの通信を確認する

各コントローラーから、コントローラーがメールサーバーと通信できることを確認するために、以下のように簡単なcurlメールテストを実行します。

echo "Hello Helion OpenStack World" > mail.txt

curl --url "smtp://172.16.60.9:3050" --mail-from "graham@allthingscloud.eu" --mail-rcpt "ops@alert.com" --upload-file mail.txt --user "graham@allthingscloud.eu:password"

[注: SMTPサーバーとIPアドレスは、ご自身の要件に合わせて変更してください]

これが失敗する場合、コントローラーノードとSMTPサーバーの間に問題があります。SMTPの詳細が正しいこと、ポートをブロックするファイアウォールがないことなどを確認してください。メールがドロップされているかどうかについて、SMTP管理者に確認してください。

TCPDUMPとNETCAT (nc) は、この基本的な接続性を確認するために非常に便利なユーティリティです。それらの使用方法については、以前の投稿やインターネット上の様々な場所で説明されています。

一時的な「ポップアップ」SMTPサーバーを使用する

SMTPサーバーがない場合、またはメインのSMTPサーバーを除外したい場合は、テスト用のSMTPサーバーを迅速にセットアップするために以下の手順に従うこともできます。上記で非標準ポートを使用したことから、これが私が最初に実施した内容であることがお分かりいただけるでしょう。

実際には、ラボシナリオではあるものの本番環境では行わないべきですが、デプロイヤーノードにポップアップSMTPサーバーを設置しました。そのため、サーバーがポート3050でリスンできるように、コントロールプレーンのファイアウォールでポートを開ける必要がありました。以下のように設定します。

vi /home/stack/helion/my_cloud/definition/data/firewall_rules.yml
.
.
.
.
   - name: TestWebHook
      network-groups:
      - MANAGEMENT
      rules:
      - type: allow
        remote-ip-prefix:  0.0.0.0/0
        port-range-min: 3000
        port-range-max: 3100
        protocol: tcp

ここでは他の計画があるためポート範囲を開けていますが、必要な単一のポートのみを開けることもできます。

ファイアウォールクラウドモデルファイルへの変更が完了したら、通常のHLMプロセスを実行します。

cd ~/helion/hos/ansible
git add -A
git commit -m "firewall rule update"
cd ~/helion/hos/ansible
ansible-playbook -i hosts/localhost config-processor-run.yml
cd ~/helion/hos/ansible
ansible-playbook -i hosts/localhost ready-deployment.yml

cd ~/scratch/ansible/next/hos/ansible
ansible-playbook -i hosts/verb_hosts osconfig-iptables-deploy.yml

次に、以下のファイルをデプロイヤーノードにコピーし、smtp.pyとして保存します。ファイル内のサーバーのIPアドレスと使用するポートを置き換えてください。

import smtpd
import asyncore

class CustomSMTPServer(smtpd.SMTPServer):

    def process_message(self, peer, mailfrom, rcpttos, data):
        print 'Receiving message from:', peer
        print 'Message addressed from:', mailfrom
        print 'Message addressed to  :', rcpttos
        print 'Message length        :', len(data)
        print 'Message               :', data
        return

server = CustomSMTPServer(('172.16.60.9', 3050), None)

asyncore.loop()

screenセッションを開きます(sudo apt-get install screen が必要になる場合があります)
そして、以下のようにスクリプトを実行します。

screen -h 10000
sudo python smtp.py

これで、統合をテストするための独自のSMTPサーバーが完成しました。

SMTPがすべて検証されたので、次にMonascaを設定する必要があります。

Monascaの設定

クラウド管理者ユーザーとしてHelion Ops Consoleにログインします。

Login

画面の左上隅にある「ハンバーガー」メニューから「Notification Methods(通知方法)」オプションを選択します。

menu

新しいメールエントリを作成し、メールを送信したいメールアドレスを入力します。

createNewNotif

次に、SMTPトラフィックが流れているかを確認するためにテストアラートを作成しましょう。

テストアラームの作成

再び「ハンバーガー」メニューに戻り、今回は「Alarm Creation(アラーム作成)」を選択して、以下のように新しいアラームを作成します。ここでは誤警報(false alerts)を発生させたいので、メトリックとしてcpu.idleを使用し、適当な値を設定します。

TestAlarm 新しいアラーム定義の作成

最初は、このアラームが初めて実行され、以前の状態を持っていないため、「Unknown(不明)」状態のアラームが2つ表示される場合があります。しかし、辛抱強く待ってください。数分後には、以下に示すようにダッシュボードが点灯するはずです。

Alarm dashboard 数分(5分程度)待つ

詳細を確認するために、アラームを選択することができます。

Alarm List アラームを確認する

Alarm detail アラームの詳細を表示する

そして、皆が待望していたもの、メールアラートです!!!

CaptureSMTPAlarm SMTPがALARMを受信したことを確認する

[注: トラブルシューティングの落とし穴]

cd ~/scratch/ansible/next/hos/ansible
ansible-playbook -i hosts/verb_hosts monasca-reconfigure.yml

fromEmail

Notification Selection

Originally published on allthingscloud.eu (2016-03-24).

← All posts