minamin's Blog

ゆるーく好きなモノ・興味あるコトについて書きます。技術系ネタは主にOracle DatabaseやCloudまわり。

Oracle Cloud Infrastructure Databaseのバックアップが失敗したら通知させる方法

この記事は「Oracle Cloud Infrastructure Advent Calendar 2019 - Adventar」の12月8日の記事として書かれています。 記事の内容は執筆時(2019/12/08)のものであり、現在とは異なる可能性がありますので適宜最新状況をご確認ください。

adventar.org

Oracle Cloud 上でPaaSとしてOracle Databaseを利用できるサービス、 Oracle Cloud Infrastructure - Database (通称 OCI DBCS。VM/BM/Exadataを含みます)だと、データベースのバックアップを自動で定期取得してくれるように設定をすることが可能です。また、Autonomous Database ではデフォルトで自動取得されます。

その機能を利用するにあたり、最近よく聞かれるのが

「バックアップ取得が失敗したら通知する方法ありますか?」

たしかに定期取得されるように設定しているバックアップが何らかの原因でとれていなくて、いざ必要な時に「バックアップがとれてなかったです!もどせません!」なんてことにはなりたくないですよね。

ということで、今回は「バックアップが失敗したら通知する」ように設定してみたいと思います。

1. 前提

今回の内容が利用可能な対象サービス

  • Oracle Cloud Infrasctructure - Database (Virtual Machine / Bare Metal / Exadata)
  • Oracle Autonomous Database (Autonomous Transaction Processing / Autonomous Data Warehouse)

→ 今回は、OCI Database(OCI DBCS)のVirtual Machineを利用しました

利用する機能

  • イベント
  • 通知 (今回はメール通知を利用します)

マニュアル Oracle Cloud Infrastructure Documentation Events 英語 日本語 マニュアル Oracle Cloud Infrastructure Documentation Notifications 英語 / 日本語

やりたいこと

ある特定のイベントが発生したのを検知したら、設定したアクションを行う、ということを設定します。

具体的には、今回は下記の イベント(1)を検知したらアクション(2)を行うという定義を『イベント』機能で設定します。

  1. ある特定のイベント = 自動バックアップを取得 + そのバックアップジョブが失敗 <--『イベント』で設定
  2. 設定したアクション = メール通知 <--『通知』で設定

2. 設定方法

通知設定

あるイベントを検知したらメールが飛ぶように、まずは「通知」の設定を行います

・アプリケーション統合 > 通知

f:id:minamin96:20191208180011p:plain
OCIのコンソールのメニューの [アプリケーション統合] > [通知]

・『トピックの作成』をクリックして、今回の設定のためのトピックを作成します。今回は、「eminamin-notification」という名前にしました。 f:id:minamin96:20191208180448p:plain

f:id:minamin96:20191208180536p:plain
トピックの作成

・作成されたトピックの名前をクリック f:id:minamin96:20191208180626p:plain

・通知の方法を設定するために、『サブスクリプションの作成』をクリック

f:id:minamin96:20191208180942p:plain
トピックの詳細

・今回はメール通知にしたいので、プロトコルで『電子メール』を選択して、電子メール欄に通知する宛先のアドレスを入力し、『作成』

f:id:minamin96:20191208181042p:plain
サブスクリプションの作成

作成したサブスクリプションを有効にするまで、ステータスはPENDINGになります。 f:id:minamin96:20191208184258p:plain メールアドレスが正しいかの確認ができると有効(ACTIVE)になるので、メールを確認しましょう。 先ほど実際に入力したメールアドレスが正しければ、メールが届いていると思います。そのメールの本文に記載のあるリンクをクリックすると f:id:minamin96:20191208181417p:plain

サブスクライブできたというページが開かれます。そして、コンソールにもどるとサブスクリプションのステータスがACTIVEになっているのが確認できました。 f:id:minamin96:20191208184354p:plain これで、通知の設定は完了です。

イベントの設定

ある特定のイベントが発生したのを検知したら、設定したアクションを行う、ということを『イベント』で設定します。

前述した通り、今回対象にするイベントの条件は『自動バックアップを取得』 + 『そのバックアップジョブが失敗』の2つです。

・アプリケーション統合 > イベント・サービス

f:id:minamin96:20191208181557p:plain
OCIのコンソールのメニューの[アプリケーション統合]>[イベント・サービス]

・イベントの『ルールの作成』をクリック

f:id:minamin96:20191208181731p:plain
ルールの作成

・ルール条件に2つの条件を作成します

条件1 : 自動バックアップを取得

  • 『イベント・タイプ』 を選択
  • サービス名 : 『Database』
  • イベント・タイプ : 『Database - Create Backup End』 f:id:minamin96:20191208181951p:plain

バックアップ取得ジョブのイベント・タイプには、『Database - Create Backup Begin』と『Database - Create Backup End』がありますが、ジョブの成功/失敗がわかるのはEndのイベントのため、『Database - Create Backup End』を選択します

条件2 : その(バックアップ)ジョブが失敗

  • 『属性』 を選択
  • 属性名 : 『lifecycleState』
  • 属性 : 『FAILED』を入力 f:id:minamin96:20191208182054p:plain

その他) 条件3 : 特定のデータベースのみを対象とする場合

様々なサービス・インスタンスが立ち上がっている環境で、すべてのDatabaseサービスのバックアップの通知がきたら困るので、対象のデータベースのみの通知を受けるために、下記に設定も付け加えています

  • 属性』 を選択
  • 属性名 : 『databaseId』
  • 属性 : DatabaseのOCIDを入力 f:id:minamin96:20191208182318p:plain

f:id:minamin96:20191208182413p:plain
データベースのOCIDの情報

設定は以上!

3. 確認

バックアップが失敗したらメール通知がされるかどうか、早速試してみましょう。

・『バックアップの作成』を実行 事前にバックアップが失敗する設定にしておいたので、想定通り失敗します f:id:minamin96:20191208182525p:plain

・メールを確認 期待通り、メール通知がきてました!

f:id:minamin96:20191208182911p:plain
バックアップが失敗した際のメール通知

あとは、通知を受け取ったら設定や環境の状態を確認して、きちんとバックアップが取れる状態に直します。 今のところ、バックアップが成功している時には来ていません。

通知内容をもう少しかっこよくさせたいなぁと思うので、それはまた今度。。