2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cloud LogsのEvent Notificationsを使用したメール通知方法について

Last updated at Posted at 2025-02-10

はじめに

IBM Cloudでは新しいログ監視ツールとしてIBM Cloud Logsが提供されています。
旧ログ監視ツールであるLog Analysisの後続として位置するソリューションとなっており、ログの保存・管理・検索やICOSへのアーカイブ、アラートの設定等様々な機能が備わっています。

本稿ではCloud Logsのログから特定のログを収集するアラートを作成し、Event Notificationsを通じてメール送信する手順を紹介します。

手順としてはこちらのdocs : IBM Cloud LogsとIBM Cloud Event Notificationsを接続するアウトバウンド統合の設定を参考に作成しています。

使用するソリューション紹介

IBM Cloud Logs

IBM Cloud Logsは、Coralogix社 からライセンス提供された技術をもとに、IBM Cloud Observability Teamが所有・作成・運用・保守を実施しているログやアクティビティイベントの監視ツールです。

可観測性サービスを提供するため、アクティビティー・トラッキング・イベントおよびロギング・アクティビティーを表示、分析、およびアラートすることができます。
ロギング・データとして大きく分けてアクティビティ・トラッキングログ(監査ログ)、クラウドプラットフォームログ、操作ログの3種類が取得可能です。

アクティビティ・トラッキングログはIBM Cloudアカウントで生成されるアクティビティトラッキングイベントをActivity Tracker Event Routingを使用してCloud Logsへルーティングすることで取得できます。

telemetry-events.png

クラウドプラットフォームログも同じように、IBM Cloudアカウントで生成されるプラットフォームログをLogs Routingを使用してCloud Logsへルーティングできます。

telemetry-platform-logs.png

インフラストラクチャとアプリケーションのログ(操作ログ)を送信するには、ロギング・エージェントを使用するか、REST APIを使用します。 Linuxサーバ上のLinux ロギング・エージェントを構成して、Syslogデータを収集し、IBM Cloud Logsインスタンスにルーティングすることもできます。

スクリーンショット 2025-02-07 2.22.09.png

Event Notifications

IBM Cloud Event Notifications は、 IBM Cloud アカウントで発生する重要なイベントに関する情報を提供したり、Webhook を使用して自動化アクションをトリガーしたりするルーティング・サービスです。 モニターなどの IBM Cloud サービスから、E メール、SMS、Webhook などの通信チャネルにイベント通知をフィルタリングしてルーティングできます。

en-topleveldiagram.png

実装手順

本稿で実施する手順は以下の通りとなります。

1. Cloud LogsとEvent Notificationsの接続作成
2. Cloud Logsのアラート設定
3. Event Notificationsのトピック作成
4. Event Notificationsのサブスクリプション作成
5. 通知メールの確認

スクリーンショット 2025-02-07 15.34.08.png

Cloud Logsで設定したアラート(今回はevent notificationsの文字列が含まれているログ)を通知メールとして送信することを目的とします。

事前準備

事前に以下の環境は作成してあるものとします。

  • Cloud Logsインスタンス(Standardプラン, 東京リージョン, 7日間の保存設定)
  • Logs RoutingによるCloud Logsへのルーティング
  • Event Notificationsインスタンス(Standardプラン, 東京リージョン)

Cloud Logs, Logs Routingの設定方法は以下のページをご参考ください。

docs : Cloud Logs インスタンスのプロビジョニング
docs : リージョン内のIBM Cloud LogsインスタンスにプラットフォームログをルーティングするIBM Cloud Logs Routingサービスの設定

また、設定手順でサービス間許可を作成する必要があるのでCloud Logs・Event Notificationsの管理者権限が必要になります。

Cloud LogsとEvent Notificationsのインスタンスは同じリージョンでないと接続ができないので注意してください。

1. Cloud LogsとEvent Notificationsの接続作成

接続作成画面までの推移

まずはじめに通知用のソリューションであるEvent Notificationsとの接続を作成します。
ポータルの左側メニューから可観測性ロギングを選択します。

スクリーンショット_2025-02-06_1_26_00.png

ロギング・インスタンスの画面から上部のタブがクラウド・ログになっていることを確認し、事前に作成したCloud Logsインスタンスの右側のダッシュボードをクリックし、ダッシュボードを開きます。

スクリーンショット_2025-02-06_1_28_36.png

ダッシュボードが表示されたら左側メニューのintegrationsoutbound integrationsを選択し、外部接続作成画面へ移行します。

スクリーンショット_2025-02-06_1_31_09.png

Outbound integrationsとして現時点ではEvent Notificationsのみとなっています。
右側の青いAddボタンを選択します。

スクリーンショット_2025-02-06_1_34_00.png

作成されたEvent NotificationsとのIntegrations一覧が表示されます。
右上の青いAdd newボタンから新しいIntegrationを作成します。

スクリーンショット_2025-01-15_11_30_36.png

接続作成

Event Notificationsとの接続作成画面ではAuthorization setupとSettingsの2つの設定を実施します。

まずはCloud LogsとEvent Notifications間の権限を設定します。すでに設定している場合は右下のNextボタンを選択してください。
新しく作成する場合は青文字のIAM Authorizationsから設定できます。

スクリーンショット_2025-01-15_11_30_51.png

権限設定

IAM AuthorizationsをクリックするとIAMの許可の管理画面に遷移します。
この画面ではCloud LogsからEvent Notificationsへの接続のためにサービス間の権限設定を行います。
右上の青い作成ボタンを選択し、新しい権限を作成します。

スクリーンショット_2025-02-06_2_39_04.png

サービス間権限設定ではソースとターゲットそれぞれの対象を設定します。

まずはソースに関して設定を行います。
ソース・アカウントは当該アカウントを選択し、次へを押します。

スクリーンショット_2025-02-06_2_18_43.png

対象サービスとしてCloud Logsを選択し次へを押します。

スクリーンショット_2025-02-06_2_19_17.png

リソースは特定のリソースを選択し、条件としてサービス・インスタンスが**(Cloud Logsのインスタンス名)**と指定し、次へを押します。

スクリーンショット_2025-02-06_2_19_37.png

これでソースの設定が完了したので次にターゲットの設定を行います。
サービス対象としてはEvent Notificationsを選択し、次へを押します。

スクリーンショット_2025-02-06_2_19_52.png

リソースは特定のリソースを選択し、serviceInstance string equals (Event Notificationsのインスタンス名) と条件を作成し、次へを押します。

スクリーンショット_2025-02-06_2_20_11.png

最後にアクセス権限のレベルとしてロールの作成をします。
今回のCloud LogsとEvent Notificationsの接続に必要な権限はサービス・アクセスのEvent Source Managerとプラットフォーム・アクセスのビューワーのため、それらのチェックボックスにチェックを入れ、一番下の許可ボタンを押すことでサービス間権限の設定は完了です。

スクリーンショット_2025-02-06_2_21_33.png

Event Notificationsとの接続作成

権限の作成が完了したら、再びCloud LogsのIntegrations作成画面に戻ります。
Authorization setupは完了したのでNextを選択します。

スクリーンショット_2025-01-15_11_30_51.png

Settingでは接続先のEvent Notificationsを指定します。

Integration nameはデフォルトのままIBM Cloud Event Notificationsとし、Event Notifications Instanceは先ほど作成した権限設定によってCloud Logs側からEvent Notificationsのインスタンス名が自動選択されています。(こちらが表示されない場合は権限設定がうまくいっていないのでもう一度設定を見直してみてください)

Endpoint Typeは作成したEvent NotificationsのEndpoint Typeに合ったものを選択します。今回はEvent NotificationsをPrivate Endpointのみで構成しているためPrivateを選択し、右下のSaveボタンを押して接続を作成できます。

スクリーンショット 2025-01-15 17.38.58.png

接続設定ができているかの確認はEvent Notificatonsのインスタンス画面から可能です。
Event Notificationsインスタンス画面の左側Sourcesからソース一覧にCloud Logsインスタンスが表示されることを確認できます。

スクリーンショット_2025-02-06_10_03_44.png

2. Cloud Logsのアラート設定

続いてCloud Logsで収集しているログからどのログをどの頻度で取るかをアラートで設定します。
アラートの設定方法についてはこちらのdocs : アラートの構成を参考にしています。

Cloud Logsのダッシュボード左側のAlertAlert managementを選択します。

スクリーンショット_2025-02-06_10_23_55.png

右上のNew Alertボタンを押して新しいアラートを作成します。

スクリーンショット_2025-02-06_10_25_13.png

Details

まずはDetailsとしてアラートの名前とアラートの重大度(severity)を設定します。今回はEvent Notificationsのプラットフォームログを試しにアラートとして設定するのでAlert nameをalert-notification、 Alert severityをInfoに設定します。

ここで設定したアラートネームが通知メールのタイトルとなります。

スクリーンショット_2025-02-06_13_07_47.png

Alert Type

Alert Typeではアラートの種類を選択できます。それぞれのアラートの特徴についてはdocs:アラートを参照ください。

今回はStandardを選択します。

スクリーンショット 2025-02-06 13.08.02.png

Query

Queryではアラートされるログを特定する設定を行います。
Search queryではログのテキスト検索が可能です。
今回はシンプルに文字列としてevent-notificationsが含まれているログを条件とします。
より詳しくSearch queryの設定を実施したい場合はRegEx cheat sheetをクリックすることで詳細な検索方法を確認することが可能です。もしくはdocs : RegEx 式の作成を参照ください。

その他にも条件としてApplications、Subsystems、Severitiesなどでフィルタリングをかけることもできますが、今回は特に設定せずに進めます。

スクリーンショット_2025-02-06_13_41_47.png

スクリーンショット 2025-02-06 13.47.52.png
RegEx cheat sheet

Conditions

ConditionsではQueryをトリガーする条件を設定します。
アラートの条件としては発生時即時通知を行うNotify Immediately、時間あたりに設定した閾値を超えた場合に通知するMore Than、逆に閾値を下回った場合に通知するLess Than、異常な数のログが発生した場合に通知するMore Than Usualの4種類が存在します。

今回はデフォルトのAlert whenがMore Than、Occurrencesが1、Time windowが10minutes(10分間に1回以上ログが流れたら通知)で設定します。

また、More Thanを選択した場合のみTime windowの設定をRolling window(10分毎に閾値の判定)とDynamic window(どの10分間でも閾値を超えた場合すぐに通知)を選択できます。
今回はRolling windowを選択します。

Group byでは最大2つのJSONフィールドを設定でき、その値が閾値を超えていた場合に通知できます。(例:massage.serviceNameを設定→ログの中でサービスネームが含まれているものを検知)

今回はこの機能を使用しないため、デフォルトのNoneにします。

スクリーンショット 2025-02-06 14.39.21.png

Notifications

NotificationsではConditionsで検知したログの通知設定を行います。

発生したアラートの取得頻度を設定できるので、10Minutesに設定します。
右のNotify when resolvedをオンにするとアラートが解消したタイミングで通知を行う設定にできますが、今回は使用しません。

また、通知先の設定としてAdd integrationからIBM Cloud Event Notificationsを選択します。

スクリーンショット_2025-02-06_14_57_07.png

設定項目は以上になります。
最後に上部にある青いCreate alertボタンを押してアラートを作成します。

スクリーンショット_2025-02-06_15_11_20.png

以下今回は使用しませんが、アラートで使用できるその他のオプションについて紹介します。

Schedule

Scheduleではアラートの通知する時間、曜日の制限が可能です。

スクリーンショット 2025-02-06 15.04.01.png

Notification content

Notification contentでは通知されるアラートの内容をJSON形式で指定できます。デフォルトですべてのログが含まれる設定となっています。

スクリーンショット 2025-02-06 15.07.24.png

Verify alert

Verify alertでは過去24時間で設定したアラートの条件に合致するログの検索が行えます。

スクリーンショット 2025-02-06 15.06.52.png

3. Event Notificationsのトピック作成

Cloud Logs側の設定が終わったので、残りのEvent Notifications側の設定を実施します。

まずはEvent Notificationsから通知メールの内容を設定するトピックを作成します。
Event Notificationsの左側メニューにあるTopicから右上の作成ボタンを押し新しいトピックを作成します。

スクリーンショット_2025-02-06_15_46_04.png

トピックでは名前をtopic-test(任意の名前)として、ソースにIBM Cloud Logsを選択します。

また、通知するログのフィルタリングをイベントタイプ、イベントサブタイプ、重大度、もしくはJSONパスによる詳細な条件で設定可能です。

今回は設定しているアラートが一つだけのため特に設定しませんが、複数ある場合は特定のアラートのみに限定する必要があるため、これらのフィルタリングを設定する必要があります。

スクリーンショット_2025-02-10_13_40_35.png

設定が完了したら下の作成ボタンからトピックを作成します。

4. Event Notificationsのサブスクリプション作成

最後に作成したトピックを通知させる先の設定としてサブスクリプションを作成します。
Event Notificationsの左側メニューにあるSubscriptionsから右上の作成ボタンを押して新規サブスクリプションを作成します。

スクリーンショット_2025-02-06_17_48_40.png

サブスクリプションで設定する項目としてまずは名前をsubscription-test(任意の名前)、トピックを先ほど作成したトピック名topic-test、宛先としてIBM Cloud Eメール・サービスに設定します。

スクリーンショット_2025-02-06_22_17_53.png

ここから通知メールの詳細設定を行います。

通知メールの本文にログの情報を載せるために通知ペイロードを追加するのチェックボックスにチェックを入れます。

次に名前の項目で通知メールの送信者名が設定できるのでnotification-mailとします。

返信先は通知メールに対して返信を行った際に自動で設定される返信先メールアドレスとなりますので名前に任意の名前、Eメールに任意の使用可能なEメールアドレスを入力します。

受信者の項目では通知メールを送る対象のメールアドレスを指定できます。
指定方法はEメール・アドレスの項目に送付先のEメールアドレスを入力し、右の追加ボタンを選択することで招待済みの欄に指定したアドレスが追加されます。

スクリーンショット 2025-02-06 23.41.26.png

通知メールの送付先のメールアドレスがすべて招待済みになっていることを確認後、作成ボタンからサブスクリプションを作成します。

スクリーンショット 2025-02-07 0.15.22.png

サブスクリプション作成後、登録したメールアドレスに以下のメールが送られるのでlink先のページでConfirmを選択します。

スクリーンショット_2025-02-07_0_33_09.png

スクリーンショット_2025-02-07_0_33_46.png

スクリーンショット_2025-02-07_0_33_52.png

以上でメール通知の設定は完了です。

5. 通知メールの確認

通知メールの設定が完了したので、あとは実際にCloud Logsでアラートの条件が満たされて際に通知メールが送信されます。

送信されるメールの例として以下のようなメールが送られます。

スクリーンショット_2025-02-07_9_03_49.png

スクリーンショット_2025-02-07_9_16_10.png

メール本文に含まれている情報としては以下の通りです。

  • トリガーされたアラートの名前
  • アラートのトリガーされる条件
  • アラートのURL
  • アラートされたログの一部

また、メールで設定できる項目は以下の通りです。

  • メールタイトル(alert-notification) →「2. Cloud Logsのアラート設定」にてアラートの名前で設定可能
  • 差出人名(notification-mail) →「4. Event Notificationsのサブスクリプション作成」にて送信者の名前で設定可能

こちらのメールはEvent Notificationsのプラットフォームログで、メールが設定された宛先にうまく送信できたことを示しているようです。

メール本文にあるview_alertをクリックしてみるとCloud Logsのアラート画面に飛び、メールで通知されたアラートを確認できます。

実際に確認してみるとメール本文後半のlog_exampleの項目にあったものと同様のログが確認できます。今回のログに関しては内容が短かったため全文含まれていました。

メールの本文を編集したい場合はEvent Notificationsのテンプレート機能を利用する必要がありますが、テンプレート機能にはカスタムメール用のドメインが必要となります。
詳細はdocs : 作成するEvent Notificationsテンプレートを参照ください。

まとめ

本稿ではCloud Logsで収集したログをEvent Notificationsを通じて通知メールを設定する方法を記載しました。

今回はEメールで通知設定を実施しましたが、Event Notificationsを使用することでSlackやブラウザのプッシュ通知等にもアラートの通知を飛ばすことが可能ですのでそちらも是非お試しください。

Cloud Logsは新しいサービスで、様々な機能が備わっているのでまた便利な機能をご紹介できればと考えております。

2
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?