Helion OpenStack Monasca SMTP 統合
2016-03-24
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にログインします。

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

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

次に、SMTPトラフィックが流れているかを確認するためにテストアラートを作成しましょう。
テストアラームの作成
再び「ハンバーガー」メニューに戻り、今回は「Alarm Creation(アラーム作成)」を選択して、以下のように新しいアラームを作成します。ここでは誤警報(false alerts)を発生させたいので、メトリックとしてcpu.idleを使用し、適当な値を設定します。
新しいアラーム定義の作成
最初は、このアラームが初めて実行され、以前の状態を持っていないため、「Unknown(不明)」状態のアラームが2つ表示される場合があります。しかし、辛抱強く待ってください。数分後には、以下に示すようにダッシュボードが点灯するはずです。
数分(5分程度)待つ
詳細を確認するために、アラームを選択することができます。
アラームを確認する
アラームの詳細を表示する
そして、皆が待望していたもの、メールアラートです!!!
SMTPがALARMを受信したことを確認する
[注: トラブルシューティングの落とし穴]
- まだトラフィックが見えない場合、かつ /var/log/monasca/notification/notification.log ファイルが空の場合は、monascaを再設定してみてください。
cd ~/scratch/ansible/next/hos/ansible
ansible-playbook -i hosts/verb_hosts monasca-reconfigure.yml
- デフォルトのメールを再利用した場合、ログファイルに無効な 'email from' アドレスに関するエラーが表示される、またはSMTPサーバーが特定の送信者を必要とする場合は、 /home/stack/helion/hos/ansible/roles/monasca-notification/defaults/main.yml に設定されているデフォルトの送信者を変更してください。上記で特定された完全な git commit…monasca-reconfigure サイクルを実行することを忘れないでください。

- 既存のアラーム定義を再設定する際は、通知チェックボックスと必要な個別の通知方法の両方を選択してください。

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