
SAP Integration Suiteで構築したiFlowのエラーログを、リアルタイムにSlackへ通知したい場合、各iFlowにエラー処理のスクリプトを個別に組み込む必要はありません。
SAP BTPの標準機能である「Alert Notification service for SAP BTP(以下、ANS)」とSAPが公式提供する監視用標準パッケージ「SAP Cloud Integration with SAP Alert Notification service for SAP BTP」を組み合わせることで、完全ノーコードでエラー検知&Slack通知の自動化が実現できます。
本記事ではSAP BTPの運用担当者やIntegration Suiteの開発者に向けた、通知基盤の設定からデプロイ、実機でのテスト通知までの手順を解説します。
全体構成と構築の進め方
今回の仕組みの全体構成は以下のとおりです。
Integration Suiteが出力するメッセージ処理ログ(Message Processing Logs / MPL)を監視プロセスが定期的にチェック・取得し、処理失敗(Failed)を検知した際にANSを経由してSlackのIncoming Webhookへ通知を届ける、各機能が独立して動く仕組みで構成されます。

本記事では、自動通知基盤の構築手順を、大きく「Phase1 : 通知基盤の構築」および「Phase2 : 標準パッケージの導入と本番動作テスト」の2フェーズ(全8ステップ)に分けて解説します。

Phase1: 通知基盤の構築(Step① ~ Step④)
Slack側でのエンドポイント準備、BTP Cockpit上でのサービスインスタンス確保、ならびにANSダッシュボードでのルール定義を行い、テスト通知で疎通を確認します。
Step①: Slack Webhook URLの取得
1.Slackへアクセスし、通知を受け取るSlackチャンネルを選択して「Incoming Webhookインテグレーションの追加」を実行します。

2.発行されたWebhook URLをコピーします。

以下の情報は、この後の手順で使用します。必要に応じてメモ・保存しておいてください。
・Webhook URL
Step②: BTP Cockpitでのインスタンスおよびサービスキー作成
BTP CockpitのSubaccount(Cloud Foundry環境)にて、API連携と通知基盤になる2つのサービスインスタンスを作成し、サービスキーを発行します。
ANSインスタンスの作成
1.Services >Service Marketplace へ遷移し、「Alert Notification」を選択して「Create」をクリックします。

2.Plan(lite または standard)と任意のインスタンス名を入力して作成を完了します。

3.Services > Instances and Subscriptions から作成したインスタンスを選択し、サービスキー (Service Key) を作成します。

以下の情報は、この後の手順で使用します。必要に応じてメモ・保存しておいてください。
・client_id
・client_secret
・oauth_url
・url
SAP Process Integration Runtimeインスタンスの作成
1.同様にService Marketplaceより「SAP Process Integration Runtime」を選択して Create をクリックします。

2.Planには必ず api を指定し、任意のインスタンス名を入力して作成します。

3.作成したインスタンスから Service Keys を発行します。

以下の情報は、この後の手順で使用します。必要に応じてメモ・保存しておいてください。
・client_id
・client_secret
・tokenurl
・url
Step③: ANSダッシュボードでのルールおよびDestination設定
ANSダッシュボードへ遷移し、エラー検知条件(Condition)、通知アクション(Action)、およびこれらを接続するサブスクリプション(Subscription)を設定した上で、Destinationを作成します。
Conditionの追加
Conditions > Create をクリックして以下を設定します。


| カテゴリ | 設定項目 | 入力値 |
|---|---|---|
| 基本設定 | Name | 任意(例:iFlow_Failure_Condition) |
| Condition | propertyKey | eventType |
| predicate | Is Equal To | |
| propertyValue | CPIIntegrationFlowExecutionFailure |
Actionの追加
Actions > Create をクリックして設定します。

Typeに Slack を選択して、Step①で取得したSlackの Webhook URL を設定・保存します。


Subscriptionの作成
Subscriptions > Create をクリックします。

先ほど作成したConditionとActionを選択して結びつけます。


Destinationの設定
1.Subaccount>Connectivity>Destinations>該当環境へ遷移し、「Create」をクリックします。

2.「From Scratch」を選択し、「Create」をクリックします

3.必要な項目を入力し「Create」をクリックして作成します。

| 設定項目 | 入力値 |
|---|---|
| Name | 任意(例:ANS_Destination) |
| Type | HTTP |
| Proxy Type | Internet |
| URL | ANSサービスキーの url |
| Client ID | ANSサービスキーの client_id |
| Client Secret | ANSサービスキーの client_secret |
| Token Service URL | ANSサービスキーの oauth_url |
| Token Service URL Type | Dedicated |
Step④:テスト通知
設定が正しいか、ANSからSlackへテストイベントを飛ばしてみましょう。
1.ANSダッシュボードのSubscriptions画面を開き、作成したサブスクリプションを選択します。

2.「Send Test Event」をクリックします。

eventTypeに「CPIIntegrationFlowExecutionFailure」と入力して「Send」を実行します。

指定したSlackチャンネルにテストメッセージが届いていれば、BTP〜Slack間の連携は成功です!

Phase2: 標準パッケージの導入と本番動作テスト(Step⑤ ~ Step⑧)
Integration Suite側の認証情報を設定し、SAP標準の監視パッケージをインポート・パラメータ構成のうえデプロイを行います。
Step⑤: Security Material の設定
Integration Suiteが「ログ取得用API」および「ANSの通知API」を呼び出せるよう、Step②のサービスキー情報を用いて認証情報を登録します。
1.Integration Suiteの Monitor > Integrations and APIs へ移動し、Manage Security Material へ移動します。

ANSユーザー(OAuth2.0)の登録
ANSのAPIへエラーイベントを送信するための認証情報を作成します。
1.Create > OAuth2 Client Credentials を選択します。

2.Step② で保存した「ANSインスタンスのサービスキー」をもとに、以下の内容を入力して 「Deploy」 をクリックします。

| 設定項目 | 入力値 |
| Name | 任意(例: ANS_USER) |
| Token Service URL | ANSサービスキーの oauth_url |
| Grant Type | Send as Part of Body |
| Client ID | ANSサービスキーの client_id |
| Client Secret | ANSサービスキーの client_secret |
| Client Authentication | Send as Request Header |
| Content Type | application/json |
CIユーザー(OAuth2.0)の登録
Integration Suiteのログ(Message Processing Logs)を取得するための認証情報を作成します。
1.再び Create > OAuth2 Client Credentials を選択します。
2.Step② で保存した「SAP Process Integration Runtimeインスタンスのサービスキー」をもとに、以下の内容を入力して 「Deploy」をクリックします。

| 設定項目 | 入力値 |
|---|---|
| Token Service URL | Process Integration Runtime(apiプラン)サービスキーの tokenurl |
| Client ID | Process Integration Runtime サービスキーの client_id |
| Client Secret | Process Integration Runtime サービスキーの client_secret |
Step⑥: 標準パッケージのコピーと監視iFlowの構成
パッケージのコピー
1.Integration Suite の Discover > Integrations へ移動します。
2.検索窓に「SAP Cloud Integration with SAP Alert Notification service for SAP BTP」と入力して検索します。

3.該当するパッケージを開き、画面右上の「Copy」をクリックして自環境に取り込みます。

iFlowパラメータ設定
1.Design > Integrations and APIs へ移動し、コピーしたパッケージを開きます。

2.Artifacts タブに移動し、iFlow「Send notifications for failed Message Processing Logs」をクリックして開きます。

3.画面上の Configure をクリックして設定画面を開きます。

Receiver タブ(ログ取得用宛先設定)
Integration Suite自身のログにアクセスするための設定です。
以下の内容を入力して保存します。

| 設定項目 | 入力値 |
|---|---|
| CI Tenant Base URL | Process Integration Runtime サービスキーの url |
| Authentication | OAuth2 Client Credentials |
| Credential Name | Step⑤で作成した CI_USER |
Moreタブ(ANS送信先設定)
検知したエラーをANSに送信するための設定です。
以下の内容を入力して保存します。

| 設定項目 | 入力値 |
|---|---|
| CI Tenant Base URL | Process Integration Runtime サービスキーの url(※Receiverタブと同じ) |
| Service Resource Events URL | ANSサービスキーの url の末尾に「/cf/producer/v1/resource-events」を追加したURLを入力します。(例: https://cloudevents.ans.cf.sap/cf/producer/v1/resource-events ) |
| Service Technical Client Name | Step⑤で作成した ANS_USER |
Step⑦: iFlowのデプロイ
設定完了後、Configure画面右下またはArtifacts一覧の操作メニューから Deploy を実行し、iFlowを有効化します。

Step⑧: 本番動作テスト
すべての設定が整いました!
実際にiFlowでエラーを発生させ、Slackに通知が飛ぶか最終確認を行ってみましょう。
1.テスト用のiFlowにて意図的に例外(存在しないエンドポイントへの呼び出しやGroovyスクリプトでの明示的例外発生)を発生させます。
2.Monitor > Monitor Message Processing を開き、該当のテスト処理が Failed ステータスになっていることを確認します。
3.対象のSlackチャンネルを確認し、該当するエラーメッセージ(失敗したiFlow名やログ詳細)がリアルタイムに通知されることを確認します。
指定したSlackチャンネルにエラー通知メッセージが届きました!

これにより、運用担当者はBTPの画面を常時監視することなく、Slackの通知を受け取った時点で即座に障害対応へ入れるようになります。
さいごに
本記事では、SAP Integration Suite のエラーをSlackへ自動通知する仕組みの構築手順を一通り解説しました。
今回の仕組みを構築してみて、改めてSAP標準監視パッケージの有用性を強く感じました。
もし標準パッケージを使わずに各iFlowでエラー通知を実装しようとすると、例外処理(Exception Subprocess)内にGroovyスクリプトを書き、APIリクエストを構成し…という作業をiFlowの数だけ繰り返す必要があります。 これは非常に手間ですし、認証情報の管理も煩雑になります。
今回紹介した方法は、標準パッケージをデプロイして通知基盤に繋ぐだけで、iFlowに一切手を加えずに一括監視 が実現できます。この「開発生産性の高さ」こそが、最大のメリットです。
iFlowのエラー監視自動化でお悩みの方の参考になれば幸いです。
投稿者プロフィール

-
2023年に中途入社し、前職では主にJavaでの開発を担当していました。
現在は、SAP BTP・SAP Fioriを用いた開発案件に携わっています。

