【IBM Cloud】IBM Cloud LogsのAlert機能のため、Event Notificationsと統合してみた

## 1. はじめに
今回の記事ではIBM Cloud LogsのAlert機能を利用する際必要となるEvent Notificationsとインスタント統合する流れについてまとめています。
すでにIBM Cloud Logsのインスタンスを作成していることを前提としていますので、必要に応じて以下の記事もご参考ください。
[①【IBM Cloud】 Log AnalysisからCloud LogsへのLogs Routingサービス変更の流れ](https://qiita.com/Sungyun_Moon/items/1a51879fd2fd478ec84d)
[②【IBM Cloud】 Activity TrackerからCloud LogsへのActivity Tracker Event Routing設定変更の流れ](https://qiita.com/Sungyun_Moon/items/445f44bbbffa975c2905)
[③【IBM Cloud】 Log AnalysisからCloud Logsへのマイグレーションの流れ](https://qiita.com/Sungyun_Moon/items/f3a2ea36eae12c9da7e6)
[④【IBM Cloud】IBM Cloud LogsダッシュボードでTCO Optimizerを構成してみた](https://qiita.com/Sungyun_Moon/items/03a103e937a0bca163cb)

なお、今回の内容にはIBM Cloudの[アカウント](https://cloud.ibm.com/docs/account?topic=account-accounts)（無料利用可能）も前提となっています。

## 2. Event Notificationsとは？
### 2-1. 概要
IBM Cloud® Event Notifications は、 IBM Cloud アカウントで発生する重大なイベントについてユーザーに提供したり、Webhook を使用して自動化アクションをトリガーしたりするルーティング・サービスです。 Monitoringなどの IBM Cloud サービスから、E メール、SMS、Webhook などの通信チャネルにイベント通知をフィルタリングしてルーティングできます。
![スクリーンショット 2022-11-21 14.48.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/4ba34e45-fd07-3904-e96e-2b8d05b5923c.png)
### 2-2. Event Notificationsでの用語解説
- ソース
    - イベント通知を送信したり Event Notifications サービス内のトピックにイベント通知をパブリッシュしたりする IBM Cloud のサービスまたはリソース
- 宛先
    - イベント通知の配信ターゲット（Eメール、Webhook、プッシュなどの宛先）
- トピック
    - トピックによって対象になる一連の着信イベント通知を保持します。 各ソースは、ユーザー定義フィルター経由でトピックに接続されます。 トピックに渡された通知は、サブスクライブしているすべての宛先にプッシュされます。（複数のソースに接続可能）
- サブスクリプション
    - サブスクリプションによって、トピックを宛先に接続します。 サブスクリプションは 1つのトピックを1つの宛先に接続しますが、トピックには複数の宛先が設定できます。 通知がトピックに到達すると、サブスクライブしているすべての宛先にそのトピックから通知が送信されます。
- SDK
    - イベント通知でサービスを構成できます。
- サービス資格情報
    - アプリまたは外部利用者を IBM Cloud サービスに手動で接続する場合は、資格情報の新しいセットを生成できます。
- プラン
    - プランには無料プランと標準プランがあります。（今回は無料プランにて実施）
![スクリーンショット 2022-11-21 14.57.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/e0cb2da0-e362-2e7d-ce48-fbf9eeda58cc.png)

### 2-3. 利用可能リージョン
2024年10月30日時点で、以下のリージョンで利用可能です。
なお、Cloud LogsのGAに伴い、Event Notificationsの利用可能リージョンも徐々に増える見込みです。
- シドニー（au-syd）
- マドリッド（eu-es）
- フランクフルト（eu-de）
- ロンドン（eu-gb）
- ダラス（us-south）


## 3. 作業の流れ

### 3-1. Cloud Logs、Object Storageの作成
繰り返しとなりますが、今回はCloud Logsとログ永続化のためのObejct Storageのインスタンス（バケット含む）はすでに作成した前提で記載しています。
もし作成されていない場合は、以下の記事を参考に作成してください。
[①【IBM Cloud】 Log AnalysisからCloud LogsへのLogs Routingサービス変更の流れ](https://qiita.com/Sungyun_Moon/items/1a51879fd2fd478ec84d)
[②【IBM Cloud】 Activity TrackerからCloud LogsへのActivity Tracker Event Routing設定変更の流れ](https://qiita.com/Sungyun_Moon/items/445f44bbbffa975c2905)
[③【IBM Cloud】 Log AnalysisからCloud Logsへのマイグレーションの流れ](https://qiita.com/Sungyun_Moon/items/f3a2ea36eae12c9da7e6)
[④【IBM Cloud】IBM Cloud LogsダッシュボードでTCO Optimizerを構成してみた](https://qiita.com/Sungyun_Moon/items/03a103e937a0bca163cb)

### 3-2. Event Notificationsインスタンスの作成
IBM Cloudの[コンソール](https://cloud.ibm.com/)に入って`カタログ`に入ります。
![スクリーンショット 2022-11-21 15.01.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/19bfbbac-282f-3c8d-04a2-124056fdf0ae.png)

Event Notificationsを検索し、クリックします。
![スクリーンショット 2022-11-21 15.01.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/5fbe529f-31e4-3ef3-dee7-9993f4200f19.png)

上記の通り、今回はLite Planを選択しています。その後、リージョン、サービス名などを設定します。ここでEndpointなどの設定も可能です。
なお、Event NotificationsのリージョンはCloud Logsと同様のリージョンを選択する必要があります。前提のCloud LogsやObject Storageバケットのリージョンはフランクフルトにて作成しているため、今回は同様にEvent Notificationsのリージョンもフランクフルトに設定しています。

その後、必要に応じてリソース・グループやタグなどを入力し、`作成`をクリックします。
![FireShot Capture 050 - Event Notifications - IBM Cloud - cloud.ibm.com.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/e260f2f9-2782-8758-868f-f7d9b3055529.png)

作成されたEvent Notificationsの画面は以下となります。
![FireShot Capture 049 - IBM Cloud Event Notifications - cloud.ibm.com.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/29b065f3-9bd3-bf9b-0923-6382758c8288.png)

### 3-3. インスタンスの統合
各インスタンスの作成が完了したら、以下の手順にてCloud LogsとEvent Notificationsのインスタンス統合を行います。
すでに作成したCloud Logsのダッシュボードにアクセスし、`integrationsアイコン`→`Outbound integrations`をクリックします。
![スクリーンショット 2024-10-30 14.03.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/7e1bbb2a-751d-bd43-7a65-2fcd9386aa5f.png)
Event Notificationsの`Add`→`Add new`をクリックします。
![スクリーンショット 2024-10-30 14.03.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/ec44655e-44ab-cdcc-bc08-76f95b9220e7.png)
![スクリーンショット 2024-10-30 14.03.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/65aacb12-ce49-bb3a-8ff6-1a6780dba08a.png)
#### 3-3-1. Authorization setup
こちらの画面にてアクセス権限を確認する必要があります。もし権限がなく次に進めない場合、インスタンス統合に関するアクセス権限がないためであり、以下の手順に沿ってIAMにてアクセス権限を付与する必要があります。
![スクリーンショット 2024-10-30 16.20.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/b9ee3adf-09df-2cbe-60f3-dd17b609720a.png)

##### 3-3-1-a. IAMにてアクセス権限を付与する流れ

`Create a new authorization policy in IAM Authorizations.` をクリックし、IAM画面にアクセスします。
![スクリーンショット 2024-10-30 16.01.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/9ffccd75-c490-2d72-c684-f208a7f13f6c.png)
IAM画面にて権限を付与するため、`作成`をクリックします。
![スクリーンショット 2024-10-30 15.58.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/6c8204b1-e720-3bba-b145-91359f1db160.png)
まずはソース・サービスを設定します。
ソース・アカウントは`当アカウント`（別のアカウントも設定可能）、サービスは`Cloud Logs`、リソースは作成された特定のCloud Logsのインスタンス（全てのリソースも指定可能）を選択し、`次へ`をクリックします。
![スクリーンショット 2024-10-30 15.58.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/0fd56a02-ce92-f5e9-cec2-faddc1a3b49d.png)
次はターゲット・サービスを設定します。
サービスは`Event Notifications`、リソースは上記で作成したEvent Notificationsのインスタンス（全てのリソースも指定可能）、役割にて必ず `Event Source Manager`を選択します。

全ての設定が完了したら`許可`をクリックし、権限を付与します。
![スクリーンショット 2024-10-30 15.59.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/49faa175-e34d-39c3-02d4-fa9aae4d2028.png)
以上、権限付与は完了です。

権限の付与が完了したら、`Next`をクリックします。
![スクリーンショット 2024-10-30 15.55.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/4d4a6063-a55d-64c2-ad5a-45e09bb83eae.png)

#### 3-3-2. Settings
次はSettings画面にて統合するサービスとインスタンスを設定します。上記で作成したEvent Notificationsのインスタンスを選択し、`Save`をクリックします。
![スクリーンショット 2024-10-30 15.13.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/2f14b60a-edaf-fbe9-839a-68165f41ff99.png)

#### 3-3-3. Test
Test画面にて、Event Notificationsの複数の設定を行い、Testをクリアする必要があります。
新しく作成したインスタンスの場合、必要な設定がされていないと思いますので、手順に沿って設定を行ってください。
![スクリーンショット 2024-10-30 14.11.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/38498241-e865-6dd3-52b3-bc9e1aa4a8b7.png)

##### 3-3-3-a. Event Notificationsインスタンスにアクセス
Event Notificationsの設定ではソースとトピック、サブスクリプションが必要となります。
そのため、`Visit your Event Notification instance details page.`をクリック、作成したインスタンス詳細画面にアクセスします。

##### 3-3-3-b. Sourceの設定
まずは、イベント通知を送信しするソースを設定するため、カテゴリーにて`Sources`→`追加`→`IBM Cloudのソース`をクリックします。
![スクリーンショット 2024-10-30 17.13.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/59c9f256-c522-00f0-bf78-0279245ea3f0.png)

ソースとして利用できるサービスは[こちら](https://cloud.ibm.com/docs/event-notifications?topic=event-notifications-en-source)に記載されていますが、今回はSecret Managerを選択しています。
`サービスを表示する`にてインスタンス作成画面に移動します。

:::note
こちらは、必ずSecrets Managerである必要はないですが、上記の通りSourceの設定ができていない場合次の段階に進むことができませんので、Sourceとして使うインスタンスを適宜作成ください。
:::

![スクリーンショット 2024-10-30 17.39.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/2565bf6c-b77b-39b3-43f1-975f1a3d13be.png)
Secerts Managerの作成画面にてインスタンスを作成します。
なお、ロケーションはCloud LogsやEvent Notificationsと同様にフランクフルト、プランは無料版で作成しています。（インスタンス作成には数分ほどかかりました）
![FireShot Capture 023 - Secrets Manager - IBM Cloud - cloud.ibm.com.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/cc0f7eaf-fd86-8cdd-cdc5-4a47982d9821.png)
インスタンスが作成されたら、インスタンスのマウントのため、`設定`カテゴリーにて`Event Notifications`→`接続`をクリックします。
接続するインスタンスとしては、上記で作成したEvent Notificationsを選択し、`接続`をクリックします。
![スクリーンショット 2024-10-30 14.32.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/a9c31e35-b138-ca44-67cb-3bd5ed4a624a.png)
![スクリーンショット 2024-10-30 18.11.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/dd7f6686-ac31-abcb-7503-bf2d98fa7bdb.png)
なお、Secrets ManagerからEvent Notificationsの接続ができない場合は、他のサービスと同様にアクセス権限を付与する必要がありますので、`Event Source Manager`権限を付与ください。
![スクリーンショット 2024-10-30 14.33.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/121a6084-01b4-8736-52e6-2cf8244e2937.png)

##### 3-3-3-c. Topicの設定
次は、フィルター処理されたイベントが到着する場所を設定するため、カテゴリーにて`Topics`→`作成`をクリックします。
![スクリーンショット 2024-10-30 19.04.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/b3932477-6593-c64c-2060-50640bafdfb2.png)
トピックの作成画面が表示されたら、トピックの名前やソースとしてCloud Logsのインスタンスを選択、イベント・タイプは`Test Event`を選択し、必要に応じて重要度（INFO,WARNING,CRITICAL,ERROR）を選択し、`条件を追加する`をクリックします。
![スクリーンショット 2024-10-30 19.11.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/57485fca-a23e-d588-5f03-113429314327.png)
![スクリーンショット 2024-10-30 19.11.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/10a84534-df28-e887-e591-a57e18dcc585.png)
イベント条件が追加されたことを確認し、`作成`をクリックします。
![スクリーンショット 2024-10-30 19.12.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/8486aec1-cd5f-ef83-6446-9fcc051438bb.png)

##### 3-3-3-d. Subscriptionの設定
最後に、設定したトピックと宛先を紐づけるサブスクリプションを設定します。
カテゴリーにて`Subscriptions`→`作成`をクリックします。
![スクリーンショット 2024-10-30 19.19.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/69831abb-f107-0d80-65f2-e4a0684657d1.png)
サブスクリプションの作成画面にて、サブスクリプション名を適宜入力し、先ほど作成したトピックを選択します。
また、宛先の種類（Mail、SMS）を選択しますが、今回はメールを選択しています。
![スクリーンショット 2024-10-30 19.19.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/b1cec1b5-9bac-55c6-b3d8-dd9ba2739703.png)
メール通知に関する設定を行います。メールの受信先名と返信先名を適宜入力し、通知を送信するメールアドレスを入力します。
![スクリーンショット 2024-10-30 19.20.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/674e43af-2863-fee0-d285-ad9db16c0869.png)
最後に通知を受け取るメールアドレスを入力し、`追加`ボタンをクリックします。
メールアドレスが追加されたことを確認し、`作成`ボタンをクリックします。
![スクリーンショット 2024-10-30 19.20.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/29e44c2a-643c-47c0-a158-7d866bebca1f.png)

サブスクリプションの設定が完了したら、早速先ほど指定したメールアドレスに確認メールが飛ぶので、`link`にアクセスします。
![スクリーンショット 2024-10-30 14.36.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/ff119f09-8f47-db92-c3bb-4c380a6b32e4.png)

メール通知を受け取ることを許可するかのメッセージが表示されるので、`Confirm`をクリックし、メール通知を許可します。
![スクリーンショット 2024-10-30 19.35.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/6f34fb61-115d-ef49-7ca9-29bf2f5cd898.png)
![スクリーンショット 2024-10-30 19.28.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/6275286e-5875-668b-a858-bca8b42142c0.png)
以上、Event Notificationsの設定は完了です。

#### 3-3-4. Alert Notifications
最後にAlert Notificationsにて通知の頻度を適宜設定し、`Done`をクリックすると統合が完了します。
![スクリーンショット 2024-10-30 19.55.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/cd6bae76-3877-3ce7-a6b2-10357b196717.png)

### 3-4. 結果
以下、統合した項目が表示されます。
![スクリーンショット 2024-10-30 20.02.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/d74b329b-18ce-1248-3226-7cc80d746e8d.png)

今回は検証に使われたアカウントの制限上、統合された後実際通知を飛ばす部分までは確認できませんでしたが、次回の検証の際にその内容も含みたいと思います。

## 4. 参考
- [IBM Cloud Logsと IBM Cloud Event Notificationsを接続するアウトバウンド統合の設定](https://cloud.ibm.com/docs/cloud-logs?topic=cloud-logs-event-notifications-configure)
- [IBM Cloud Event Notifications サービスを操作するための S2S 許可の作成](https://cloud.ibm.com/docs/cloud-logs?topic=cloud-logs-iam-service-auth-en&interface=ui)
- [Event Notifications とは？](https://cloud.ibm.com/docs/event-notifications?topic=event-notifications-en-about)