Kompira AlertHub で受信したアラートを振り分け、およびフィルタリングなどをした後、Kompira Enterprise と連携してカスタマイズされた自動処理を行いたい場合があると思います。
そこで本稿では、Kompira AlertHub のアクション機能を用いて Kompira Enterprise の API を呼び出し、Kompira Enterprise に対してメッセージを通知する方法をご紹介します。
※ Kompira AlertHub の画面は本稿執筆時のものを使用しています。予告なく変更される可能性がありますので、ご了承ください。
※ 以下、Kompira AlertHub を「AlertHub」、Kompira Enterprise を「KE」と表記します。
動作確認環境
ソフトウェア | バージョン |
Kompira Enterprise | 1.6.2.post7 |
OS | CentOS 7.9.2009 |
または
ソフトウェア | バージョン |
---|---|
Kompira Enterprise | 1.6.8.post1 |
OS | CentOS 7.9.2009 |
全体構成
本稿では、以下の図のような構成を想定しています。
AlertHub に対してメールを送信すると、予め作成された設定に応じてフィルタリングが行われ、処理が不要と判断されたメールは捨てられます。処理が必要と判断されたメールについては AlertHub の「アクション」設定を用い、KE に Webhook で通知を行います。この際に KE の REST API を使用して連携します。
また本稿の内容は、AlertHub から https で KE に対し通知ができる環境が用意されていることを前提にしています。
※ AlertHub から KE に通知を行うためには、KE がインストールされているサーバにおいて、AlertHub からのアクセスが許可されている必要があります。
※ AlertHub から https で KE に通知を行うためには、KE がインストールされているサーバに証明書が設定されている必要があります。
Kompira Enterprise 側の設定
KE 側では、チャネルオブジェクトで AlertHub からの通知を受信します。
API 経由でこのチャネルオブジェクトにメッセージを通知する際は、以下のエンドポイントを使用します。
POST https://<KE サーバのホスト名もしくは IP アドレス>/<チャネルオブジェクトのパス>.send
※ KE の REST API を有効化しておく必要があります。「Kompira Enterprise REST API を利用して外部からジョブフローを実行する」の事前準備を参考に有効化してください。
※ 送信するデータは JSON 形式である必要があります。
またチャネルオブジェクトで受信したメッセージを確認するため、以下のようなジョブフローを作成し、実行しておきます。
# チャネルの内容を print するジョブフロー { while true | <./アラート受信チャネル> -> print($RESULT) }
Kompira AlertHub 側の設定
AlertHub 側では、受信スロットからアクションまでの各種設定を行います。ただし、本稿では AlertHub から KE への通知を主眼に置いているため、あくまで通知するための最低限の設定を作成します。
※ AlertHub を利用するためには、予め Kompira cloud のスペース登録が必要になります。「Kompira Pigeon を利用した通知電話の利用」の「Kompira cloud のアカウントの取得」を参考にアカウントを作成してください。
※ AlertHub の設定の詳細については「Kompira AlertHub マニュアル」を参照してください。
まず、「受信スロット」を作成します。これは AlertHub がメッセージを受信する受け口です。以下のように「+」ボタンから作成します。
以下のように、本稿では種別を「メール」として作成します。
次に「スコープ」を作成します。これは AlertHub において、状態を保持する単位です。以下のように「+」ボタンから作成します。
以下のようにスコープを作成してください。
次に「ルール」を作成します。これは受信スロットで受信したメッセージを解析し、対象となるスコープに振り分ける設定です。以下のように「+」ボタンから作成します。
以下のように、本稿では特にメッセージの解析は行わず、任意のメッセージを受信すると深刻度「main」を1増やすルールを作成します。
※ 作成した受信スロットが表示されない場合は、「再取得」ボタンを押下してください。
次に「アクション」を作成します。これは AlertHub において、外部へ通知する際に用いる設定です。本稿では通知方法に Webhook を用いるため、以下のように「WEBHOOK」から作成します。
本稿では KE へ通知を行うため、以下のように設定を行います。なお、「<KE サーバ>」、「<チャネルオブジェクトのパス>」、「<KE の API トークン>」はお使いの環境に合わせて適宜変更してください。
※ 画像中の「Token <KE の API トークン>」の「Token」と「<KE の API トークン>」の間には半角スペースを入れることに注意してください。
また以下に「リクエスト本文」を示しておきます。
{ "subject": "{{ message.content.subject }}", "body": "{{ message.content.text }}" }
次に「トリガー」を作成します。これは AlertHub において、アクションを実行するための設定です。
「トリガー」はスコープごとに設定するものとなっているので、まず「スコープ」からトリガーを作成したいスコープを探します。下画像のように対象となるスコープの「トリガー」タブをクリックし、「+」ボタンを押下してください。
するとダイアログが表示されますので、下画像のように項目を埋めて保存してください。このように設定すると、深刻度が増える度に、すなわちメールを受信する度にアクションが実行されることになります。
※ 作成したアクションが表示されない場合は、「再取得」ボタンを押下してください。
動作確認
以上の設定が完了したら、AlertHub の受信スロットから払い出されたメールアドレスに対してメールを送ってみます。
このメールアドレスを取得するために、まず「受信スロット」から本稿で作成した受信スロットを探します。当該受信スロットをクリックすると下画像のような画面が表示されます。この「プライマリ」メールアドレスを本稿では用いることにします。
動作確認のために、先程取得したメールアドレス宛てにメールを送信してみましょう。本稿ではメールを解析するようなルールを設定していないので、このメールの内容はどんなものでも構いませんが、ここでは「件名」に「test」、「本文」に「これはテストです」が入力されたメールを送信しています。
メールを送信すると、まず AlertHub の受信スロットでメールが受信され、作成したスコープの深刻度が「1」になります。その後トリガー条件を満たしたため、アクションが実行され、KE にメッセージが通知されます。
ここであらかじめ作成しておいたジョブフローのコンソールを確認すると、以下のような内容が出力されます。
※ 正しく動作しない場合は、まずは AlertHub 側で作成したスコープに対して、「アクション実行履歴」が発行されているかを確認してください。発行されている場合はレスポンス内容を確認して KE へアクセスできているか、発行されていない場合は AlertHub の設定を確認してみてください。
このようにして、AlertHub から KE へ通知を行うことができました。本稿の内容を応用すると、大量のメッセージを AlertHub でさばき、カスタマイズされた処理が必要なメッセージのみ KE に通知して処理を行う、といった柔軟なアラート処理システムが構築可能となります。