Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
yasuyukiuno
Active Participant
623
この記事は SAP Advent Calendar 2023 の12月9日分の記事として執筆しています。

CF環境で自前のアプリケーションを稼働させているような場合、アプリケーションの死活を検知し、アプリケーションがダウンしてしまった場合は可能な限り早く復旧する必要があります。

Alert Notification ServiceとAutomation Pilotという2つのサービスを利用すれば、自動復旧する仕組みを構築可能なのですが、日本語での構築記事が見当たらなかったため、この記事で紹介します。

全体のアーキテクチャはSAP JapanのYouTube動画が参考になります。

Automation Pilotについて


Automation PilotはBTPに関する様々なコマンドを発行できるサービスで、要はCF CLIやBTP CLIなど、これまではローカルPCにダウンロードしてローカルPCからコマンド実行していたような操作を、クラウド上で実現できるようにしたサービスです。


Automation Pilotで提供されるコマンドは多岐にわたりますが、例としてよく使うのが






    • CFアプリケーションの起動/停止/再起動コマンドの実行

    • HANA Cloudインスタンスの起動/停止

    • HANA CloudへのSQL発行




などです。


今回はCFアプリケーションの起動をAutomation Pilotで実行します。



Alert Notification Serviceについて


Alert Notification Serviceはシステム異常を外部通知するサービスです。
例えば、『app.crash』というイベントを検知したことをトリガーに外部通知してやることで、out of memoryなどでアプリが死んだ場合にメールで管理者に伝えたりすることができます。


そして、Alert Notification ServiceからはAutomation Pilotをwebhookで呼び出すことも可能であるため、app.crashの検知をトリガーとしてアプリケーションの起動コマンドを実行させることで、自動復旧が行えます。


下図赤枠で囲んだ範囲の実現方法をこの記事で紹介します。
(下図:SAP JapanのYouTube動画より引用)



 

前提条件



  • CF環境でアプリケーションが稼働していること

  • Alert Notification Serviceのインスタンスの作成

  • Automation Pilotのサブスクリプションの作成


各サービスのインスタンス作成、サブスクリプション作成手順については割愛します。



1.Automation Pilotの設定


Automation Pilotでアプリケーションの起動コマンドを実行するための準備を進めていきます。


アプリケーションの起動を行うために、必要な情報を確認します。




  • リージョンの情報

  • サブアカウントの情報

  • スペースの情報

  • アプリケーションID

  • コマンドを実行するユーザの認証方法

  • コマンドを実行するユーザID情報

  • コマンドを実行するユーザのパスワード


上記の情報が必要であり、これらを予め環境変数的に定義してやることとします。


Automation Pilotの管理画面の左メニューからInputsを選択し、新規のInputsを作成します。




パラメータを追加していきます。



下記のパラメータを設定して下さい。Typeは全てstringです。














































Name Value (メモ)
identityProvider sap.ids BTPの標準ユーザ利用の場合。
IASを利用している場合はそちらに合わせて下さい
region (リージョン 例:cf-eu10-004) サブアカウントのoverviewにあるAPI Endpoint参照
subAccount (サブアカウントID) サブアカウント名ではなくIDなので注意
resourceGroup (スペースのID) スペース名ではなくIDなので注意
resourceName (アプリのID) アプリ名ではなくIDなので注意
user (BTPのログインユーザID)
password (BTPのログインパスワード)

上記のサブアカウントのIDやスペースのID、アプリのIDなどは、CFアプリケーションの管理画面のURLから確認することができます。
(下図赤枠参照)



 

これでCFアプリ起動をコマンドから実行する準備は整いました。
Alert Notificationから呼び出してもらうwebhook URLを確認します。


メニューのExecutionsからBuild Event Triggerボタンをクリック



今回はCFアプリの起動なので、コマンドはStartCfApp、Inputs Referencesは先ほど作成した変数を選択しておきます。



Event Trigger URLは後ほど利用するため、控えておきます。


 

2.Automation Pilot設定2(呼び出し準備)


Alert Notification Serviceから呼び出しができるようにするためのセキュリティ設定を実施します。




Alert Notificationから呼び出してもらう際のユーザを作成します。




Usernameは任意ですが、Alertとしました。
権限はAutomation Pilotのコマンド実行をしたいため、Executeを付与します。


パスワードが払い出されます。控えておきましょう。




3.Alert Notification Serviceの設定


Conditionは下図のように、eventType equals app.crashで作成して下さい。



Actionは下図のように、Automation Pilotを呼び出すタイプのアクションを作成します。
呼出し先のURLはステップ1の最後に確認したURLです。
ユーザ/パスワードはステップ2で作成したものを利用します。



このAlert Notificationを有効にすることで、CFアプリのクラッシュを検知した時に自動的にCFアプリの起動ができるようになり、運用の省力化が見込めます。

Automation PilotではCFアプリの起動以外にも様々なコマンドが実行できますので、是非お試しください。

※なお、Automation Pilotは日本リージョンでは使えません。日本リージョンにも対応してほしいです・・・。
Labels in this area