概要
- こんにちわ、新川です。先月に続き、今月もOracle Cloud Infrastructure (OCI) の検証結果をブログにまとめます。今回はIaaSレイヤーに焦点を当てます。
- 前回のブログでは、OCI Compute インスタンス(Oracle Linux 8) からOCI Loggingへシステムログやアプリケーションログを集約する構築を行いました。今回は、さらに発展させ、アラート通知を構築します。ログを担当者が人力で監視し続けるのは非効率であり、問題発生時に即座に通知される仕組みが必要です。
- 本記事では、Connector Hub と、通知サービスであるNotifications (ONS)を連携させ、「特定のキーワードを含むエラーログが記録されたら、即座にメール通知する」仕組みを構築する手順を解説します。
前提条件
- 本記事では、以下の環境がすでに準備されている前提で進めます。
- 前回のブログで構築したOCI Logging のログ集約が動作し、httpdがインストールされ、/var/log/messages や/var/log/httpd/access_log 等のログがOCI Logging に出力されていること。
- Oracle Cloud アカウントが作成され、各種OCIリソース(Connector Hub、Notificationsサービスなど) を作成する権限があること。
- Linux の基本的な操作(sudo、systemctl、loggerなど) は説明を省略します。
ログ監視とリアルタイム通知の構築手順
通知先(Notifications) の準備
- OCIの管理コンソールにて、左ナビゲーションから「Developer Services」→「Notifications」を選択します。
- 「Create topic」を選択します。
- トピックとは、通知の発行側(パブリッシャー) と受信側(サブスクライバー)を関連付ける役目となります。今回は、パブリッシャーが後述のConnector Hub であり、サブスクライバーが次に設定を行うメールアドレスとなります。
- トピックの「Name」を入力し、「Create」を選択します。
- 左ペインの「Topics」を選択、作成したトピックを選択します。
- 「Subscriptions」を選択します。
- 「Create subscription」を選択します。
- Protocol に「Email」を指定、Email にメールアドレスを入力します。
- 「Create」を選択します。
- 以下のようなメールが設定したメールアドレスへ送られます。メール本文にある「Confirm subscription」をクリックします。
- 作成したSubscriptions のState が「Active」になったことを確認します。
Connector Hubの作成
- 次に、通知の発行側(パブリッシャー) であるConnector Hub を作成します。
- OCIの管理コンソールにて、左ナビゲーションから「Observability & Management」→「Connectors」を選択します。
- 「Create connector」を選択します。
- 「Connector name」を入力します。
- Configure connector において、「Source」に「Logging」を選択、「Target」に「Notifications」を選択します。
- 続いて、Configure source において、「Log group」、「Logs」を指定します。こちらは、前回のブログで作成したリソースを使用します。
- さらに、Log filter task(Optional) を設定します。今回は、「Property」に「data.message」を選択、「Operator」に「=」を選択、「Value」に「Error」を入力します。
- Configure target において、「Topic」に先ほど作成したトピックを指定、「Message format」に「Send raw messages」を選択します。
- 赤枠のデフォルトポリシー作成の表示が表れたら、「Create」を選択します。こちらは、Connector Hub がNotifications サービスを使用するためのポリシーとなります。
- 「Create」を選択します。
- Connector Hub が作成されました。
- 左ナビゲーションから「Identity & Security」→「Policies」を選択します。
- 自動でConnector Hub用のポリシーが作成されたことを確認します。(ポリシー名の例:ConnectorPolicy_notifications_2025-10-13T09.23.07.645Z)
アラート通知の確認
- アラート通知のテストを行います。
- インスタンス(Oracle Linux 8) にssh でログインし、以下のlogger コマンドを実行します。
logger -p user.err "Test Error log"
- Logs のSearch からもdata.message に”Test Error log” のログが確認できました。
- メールにNotification Message が送られたことを確認します。
まとめ
- 前回と今回の検証を通じて、IaaSレイヤーからOCI のマネージドサービス(IAM、Logging、Connector Hub、Notifications) を組み合わせたログ集約とリアルタイム通知の仕組みを構築しました。
- 今回、手動でConnector Hub 用のIAMポリシーの作成を試みましたが、ポリシーの正しい指定方法が分かりませんでした。特にConnector Hub がNotifications サービスへアクセスするためのサービス名が分からず、一般的なサービス名の指定ではAPIエラーとなりました。最終的に、Connector Hub が自動で作成したポリシーを使用することで解決しました。手動でポリシーを定義する難しさを経験する機会になりました。
- 今回、Connector Hub が自動で作成したポリシーのPolicy Statements を紹介します。
allow any-user to use ons-topics in compartment id ocid1.tenancy.oc1..[TENANCY_OCID] where all {request.principal.type= 'serviceconnector', request.principal.compartment.id='ocid1.tenancy.oc1..[TENANCY_OCID]'}