今年の2月にOracle Cloud Infrastructure に Notifications サービスが追加されました。
Notifications サービスは、Pub/Sub型の通知モデルで、サブスクリプションとして指定できるのは、メールと PagerDuty の2つとなります。(2019年4月時点)
作成したトピックは、Monitoring サービスのアラームの通知先として指定する事もできますが、OCI-CLI や REST-API からも簡単に通知を行う事ができます。
手順は、大まかに以下のようになります。
1.トピックを作成
2.サブスクリプションを作成
3.トピックにメッセージを送信
今回は、Compute のインスタンスの状態をOCI-CLIで取得して、通知メールを送信する手順をやってみたいと思います。
1.トピックを作成
「Application Integration」メニュー内の「Notifications」から Topics 画面を表示します。
Topics 画面の「Create Topic」ボタンを押下します。
トピック名とトピックの説明を入力します。
2.サブスクリプションを作成
作成したトピックの詳細画面からサブスクリプションを作成します。
「Create Subscription」ボタンを押下します。
Protocol には「Email」「HTTPS(PagerDuty)」が選択できるので、「Email」を選択します。
Email には通知先のメールアドレスを入力します。
作成したサブスクリプションの State がこの時点ではまだ「Pending」になっています。
サブスクリプション作成時に設定したメールアドレスにメールが送信されているので、メールに記載されているURLへアクセスします。
この時点でサブスクリプションの作成が完了となります。
作成したサブスクリプションの State が「Active」になっている事を確認します。
3.トピックにメッセージを送信
OCI-CLI で Compute インスタンスの情報を一覧取得し、インスタンス名と状態を通知します。
以下のようなシェルを用意して実行します。
--topic-id
で作成したトピックのIDを指定し、--title
には通知メールの件名、--body
で通知メールの本文を指定しています。
1 2 3 4 |
#!/bin/bash instance_list=$(oci compute instance list --query "data [*].{Instance:\"display-name\", Status:\"lifecycle-state\"}" --output table) oci ons message publish --topic-id ocid1.onstopic.oc1.iad.aaaaaaaa7rb4meu4mz5pxj43a4bu5d5kktuxbjc3qsl55qnq7xy73ck54kuq --title "Instance Status" --body "${instance_list}" |
インスタンスと状態が記載された通知メールが送信されている事が確認できました。
まとめ
Oracle Cloud のリソースの状態をプロジェクトメンバーで共有したい場合に、グループメールアドレスに通知する等、使い方はアイディア次第ですね。
非常に簡単な手順で通知設定できるので、活用してみて下さい!