LoginSignup
2
0

More than 3 years have passed since last update.

[Oracle Cloud] EMCCからアラートメールを通知する

Posted at

やったこと

OCIのマーケットプレイスからデプロイしたEMCCから、メール通知をさせたかったのだが、
東京リージョンで、メール配信を構成しようと画面をポチポチしたらこんな画面が。。

notification01.png

リージョンごとのサービス提供状況を見てみた。なるほど、サービス提供されていない。

notification02.png

しょうがないので、oci cliを実行するシェルスクリプトを作成して通知させてみた。

準備

EMCCの準備

[Oracle Cloud] Enterprise Manager の作成と、DBaaS で作成した Data Guard インスタンスのモニタリングの記事と、Setting Up Oracle Enterprise Manager 13.3 on Oracle Cloud Infrastructureを参考にデプロイし、データベースもターゲット登録しておきます。

デプロイ前の事前作業としてインスタンス・プリンシパルの設定が必要ですが、設定をミスっていると、Computeインスタンス起動後のセットアップが静かにこけていたりします。インスタンスが起動したらログインして、/var/log/emgc_setup.logをtailしておくとよいです

ちなみに、マーケットプレイスからデプロイしたEMCCはrootユーザにスイッチできないようになってます

$ sudo su -
Last login: Thu Oct 17 23:11:45 JST 2019 on pts/0
This account is currently not available.

$ sudo grep ^root /etc/passwd
root:x:0:0:root:/root:/sbin/nologin
→ ログインシェルが、/sbin/nologinになってる。ログインシェルをbashに変えてあげたらログインできました

oci cliのインストール

EMCCから通知するので、EMCCサーバのoracleユーザのホームにoci cliをインストールします。

インスタンス・プリンシパルの設定

Notificationも実行できるようにポリシーを追加設定します。

※ポリシーでつまづきたくなかったので、検証では大きい権限を追加で与えて検証しました
 Allow dynamic-group OEM_Group to manage all-resources in tenancy

検証内容

トピックの作成

  1. メニュー→[アプリケーション統合]→[通知]
  2. コンパートメントを選択して、「トピックの作成」ボタンを押下
  3. 適当な名前と説明を入力して、「作成」ボタンを押下
  4. 「サブスクリプション」のリンクを押下。コンパートメントを選択して、「サブスクリプションの作成」ボタンを押下
  5. トピックに、3.で指定した名前のトピックを選択。「電子メール」に通知先のメールアドレスを入力。「作成」ボタンを押下
  6. 指定したメールアドレスに、確認メールが送信される。件名が「Oracle Cloud Infrastructure Notifications Service Subscription Confirmation」のメールを受信して、本文に記載のリンクを押下。↓のような画面が表示されればOK。
  7. notification03.png
  8. コンソールに戻ると、PENDINGだった画面がACTIVEになってるはず

notification04.png

スクリプト

oracleユーザ(EMCC起動ユーザ)から実行される前提で作りました。また、インスタンス・プリンシパルを使って認証しています。

※サンプルです。エラーハンドリングやロギングなどはほぼ考慮してません。また、一切の動く保証もありません。

#!/bin/bash

# VARIABLES
. /etc/profile
export PATH=/home/oracle/bin:$PATH

TENANCY_ID="テナントのOCID"
COMPARTMENT_NAME="コンパートメントID"
TOPIC_NAME="トピック名"

# CREATE MESSAGE
# $TARGET_NAME,$TARGET_TYPE,$HOST_NAME,$MESSAGEは、EMからの呼び出し時に設定される環境変数
# see https://docs.oracle.com/cd/F10572_01/EMADM/GUID-B48F6A84-EE89-498D-94E0-5DE1E7A0CFBC.htm#GUID-27E0C4B8-82F0-412A-9F0B-AF551DC19FBC

ALERT_MESSAGE="
$(date)

TARGET_NAME: ${TARGET_NAME}
TARGET_TYPE: ${TARGET_TYPE}
HOST_NAME  : ${HOST_NAME}
_________________________________________________

[MESSAGE]
${MESSAGE}
"

# GET COMPARTMENT OCID
COMPARTMENT_OCID=$(oci --auth instance_principal search resource structured-search --raw-output --query-text 'query all resources' --query 'data.[items[?"resource-type"==`Compartment` && "display-name"==`'${COMPARTMENT_NAME}'`]."identifier"] |[0] |[0]')

if ! echo ${COMPARTMENT_OCID} |grep -q -E -e '^ocid[0-9].compartment' ; then
    echo "failed to get compartment ocid."
    exit 1
fi

# GET TOPIC OCID
TOPIC_OCID=$(oci --auth instance_principal ons topic list --all --raw-output -c ${COMPARTMENT_OCID} --query 'data[?"name"==`'${TOPIC_NAME}'`]."topic-id" |[0]')

if ! echo ${TOPIC_OCID} |grep -q -E -e '^ocid[0-9].onstopic' ; then
    echo "failed to get topic ocid."
    exit 1
fi

# PUBLISH MESSAGE
# $EVENT_TYPE,$SEVERITY,$TARGET_NAMEは、EMからの呼び出し時に設定される環境変数
# see https://docs.oracle.com/cd/F10572_01/EMADM/GUID-B48F6A84-EE89-498D-94E0-5DE1E7A0CFBC.htm#GUID-27E0C4B8-82F0-412A-9F0B-AF551DC19FBC
if ! oci --auth instance_principal ons message publish --topic-id ${TOPIC_OCID} --title "EMALERT - ${EVENT_TYPE} - : ${SEVERITY} : ${TARGET_NAME} " --body "${ALERT_MESSAGE}" ; then
    echo "failed to publish message."
    exit 1
fi

exit 0

EMCCにログインして、通知メソッドを構成

  1. 画面上部の歯車アイコン→[通知]→[スクリプトとSNMPv1トラップ]
  2. 「実行」ボタンを押下
    emcc01.png

  3. 適当に名前をつけ、作成したスクリプトのフルパスをOSコマンドに入力し、「OK」ボタンを押下
    emcc02.png

EMCCからインシデント・ルールを作成

ここでは、可用性イベントのアラートを設定します。
1. 画面上部の歯車アイコン→[インシデント]→[インシデント・ルール]
2. 「ルール・セットの作成」ボタンを押下

emcc03.png
3. 適当に名前を付けます
4. ターゲットは、「すべてのターゲット」を選択します
5. ルールから「作成」ボタンを押下します

emcc04.png
6. 「作成するルールタイプを選択」ウィンドウがポップアップするので、「受信イベントおよびイベントの更新」を選択(デフォルト)し、「続行」ボタンを押下
7. タイプから「ターゲット可用性」を選択して、「次」を押下

emcc05.png
8.「追加」を押下

emcc06.png
9. 他はデフォルトのまま、拡張通知で上記手順で設定した通知メソッドにチェックします

emcc07.png
10. その他はデフォルトのままポチポチして、インシデント・ルールを作成・保存します

動作確認

  1. 監視対象DBを停止させるなどして、可用性イベントを発生させます。
  2. トピックの宛先に設定したメールアドレスに、以下のようなメールが送信されることを確認
  3. mail.png
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0