ブログ

【SAP Integration Suite】完全ノーコード!エラーログのSlackリアルタイム自動通知基盤:構築の実践ガイド

この記事をSNSでシェア!

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インテグレーションの追加」を実行します。

Incoming Webhookインテグレーションの追加

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

Webhook URLをコピー

以下の情報は、この後の手順で使用します。必要に応じてメモ・保存しておいてください。

・Webhook URL

Step②: BTP Cockpitでのインスタンスおよびサービスキー作成

BTP CockpitのSubaccount(Cloud Foundry環境)にて、API連携と通知基盤になる2つのサービスインスタンスを作成し、サービスキーを発行します。

ANSインスタンスの作成

1.Services >Service Marketplace へ遷移し、「Alert Notification」を選択して「Create」をクリックします。

Service Marketplace へ遷移

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

作成完了

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

サービスキー (Service Key) を作成

以下の情報は、この後の手順で使用します。必要に応じてメモ・保存しておいてください。

  ・client_id
  ・client_secret
  ・oauth_url
  ・url

SAP Process Integration Runtimeインスタンスの作成

1.同様にService Marketplaceより「SAP Process Integration Runtime」を選択して Create をクリックします。

SAP Process Integration Runtime

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)
ConditionpropertyKeyeventType
predicateIs Equal To
propertyValueCPIIntegrationFlowExecutionFailure

Actionの追加

Actions > Create をクリックして設定します。

Actionの追加

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

Subscriptionの作成

Subscriptions > Create をクリックします。

Subscriptionの作成

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

Destinationの設定

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

Subaccount画面

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

From Scratch

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

設定内容
設定項目入力値
Name任意(例:ANS_Destination)
TypeHTTP
Proxy TypeInternet
URLANSサービスキーの url
Client IDANSサービスキーの client_id
Client SecretANSサービスキーの client_secret
Token Service URLANSサービスキーの oauth_url
Token Service URL TypeDedicated

Step④:テスト通知

設定が正しいか、ANSからSlackへテストイベントを飛ばしてみましょう。

1.ANSダッシュボードのSubscriptions画面を開き、作成したサブスクリプションを選択します。

ANSダッシュボード

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

Send Test Event

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

eventType
テストメッセージ

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 へ移動します。

Integration Suite画面

ANSユーザー(OAuth2.0)の登録

ANSのAPIへエラーイベントを送信するための認証情報を作成します。

1.Create > OAuth2 Client Credentials を選択します。

OAuth2 Client Credentials

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

ANSインスタンスのサービスキー設定
設定項目入力値
Name 任意(例: ANS_USER)
Token Service URLANSサービスキーの oauth_url
Grant TypeSend as Part of Body
Client IDANSサービスキーの client_id
Client SecretANSサービスキーの client_secret
Client AuthenticationSend as Request Header
Content Typeapplication/json

CIユーザー(OAuth2.0)の登録

Integration Suiteのログ(Message Processing Logs)を取得するための認証情報を作成します。

1.再び Create > OAuth2 Client Credentials を選択します。

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

CIユーザー設定
設定項目入力値
Token Service URLProcess Integration Runtime(apiプラン)サービスキーの tokenurl
Client IDProcess Integration Runtime サービスキーの client_id
Client SecretProcess Integration Runtime サービスキーの client_secret

Step⑥: 標準パッケージのコピーと監視iFlowの構成

パッケージのコピー

1.Integration Suite の Discover > Integrations へ移動します。

2.検索窓に「SAP Cloud Integration with SAP Alert Notification service for SAP BTP」と入力して検索します。

Integrations

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

自環境に取り込み

iFlowパラメータ設定

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

パラメータ設定

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

Artifactsタブ

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

Configure

Receiver タブ(ログ取得用宛先設定)

Integration Suite自身のログにアクセスするための設定です。
以下の内容を入力して保存します。

Receiverタブ
設定項目入力値
CI Tenant Base URLProcess Integration Runtime サービスキーの url
AuthenticationOAuth2 Client Credentials
Credential NameStep⑤で作成した CI_USER

Moreタブ(ANS送信先設定)

検知したエラーをANSに送信するための設定です。
以下の内容を入力して保存します。

設定
設定項目入力値
CI Tenant Base URLProcess Integration Runtime サービスキーの url(※Receiverタブと同じ)
Service Resource Events URLANSサービスキーの url の末尾に「/cf/producer/v1/resource-events」を追加したURLを入力します。
(例: https://cloudevents.ans.cf.sap/cf/producer/v1/resource-events )
Service Technical Client NameStep⑤で作成した ANS_USER

Step⑦: iFlowのデプロイ

設定完了後、Configure画面右下またはArtifacts一覧の操作メニューから Deploy を実行し、iFlowを有効化します。

Deploy

Step⑧: 本番動作テスト

すべての設定が整いました!
実際にiFlowでエラーを発生させ、Slackに通知が飛ぶか最終確認を行ってみましょう。

1.テスト用のiFlowにて意図的に例外(存在しないエンドポイントへの呼び出しやGroovyスクリプトでの明示的例外発生)を発生させます。

2.Monitor > Monitor Message Processing を開き、該当のテスト処理が Failed ステータスになっていることを確認します。

3.対象のSlackチャンネルを確認し、該当するエラーメッセージ(失敗したiFlow名やログ詳細)がリアルタイムに通知されることを確認します。

エラー通知メッセージ

これにより、運用担当者はBTPの画面を常時監視することなく、Slackの通知を受け取った時点で即座に障害対応へ入れるようになります。

さいごに

本記事では、SAP Integration Suite のエラーをSlackへ自動通知する仕組みの構築手順を一通り解説しました。

今回の仕組みを構築してみて、改めてSAP標準監視パッケージの有用性を強く感じました。

もし標準パッケージを使わずに各iFlowでエラー通知を実装しようとすると、例外処理(Exception Subprocess)内にGroovyスクリプトを書き、APIリクエストを構成し…という作業をiFlowの数だけ繰り返す必要があります。 これは非常に手間ですし、認証情報の管理も煩雑になります。

今回紹介した方法は、標準パッケージをデプロイして通知基盤に繋ぐだけで、iFlowに一切手を加えずに一括監視 が実現できます。この「開発生産性の高さ」こそが、最大のメリットです。

iFlowのエラー監視自動化でお悩みの方の参考になれば幸いです。

投稿者プロフィール

古家 碧
古家 碧
2023年に中途入社し、前職では主にJavaでの開発を担当していました。

現在は、SAP BTP・SAP Fioriを用いた開発案件に携わっています。
この記事をSNSでシェア!