メール送信によりPigeonの連絡を行う機能をβ公開しました

PigeonはAPIリクエストをトリガとして、誰かに繋がるまで自動的に電話連絡を行うサービスです。 APIリクエストを行うことができるシステムとであれば何とでも連携ができ、その一例として本ブログでもZabbixとの連携について、過去に紹介いたしました。

blog.cloud.kompira.jp

一方で、連携するシステムによってはAPIリクエストを行うことができなかったり、かなりトリッキーな設定が必要になるケースがあります。 先述のZabbixとの連携例においてもサーバー上にわざわざスクリプトを配置しているなど、一手間必要になってしまっているのがわかります。

そこで、今回新たに「メール送信をトリガに連絡を行う」機能のβ版を公開いたしました。

なお、本機能はβのため、使用には個別のシステム設定が必要となります。ご利用を希望する場合は本記事末尾の記載に従い、利用希望の旨ご連絡ください。

機能の概要

特定のメールアドレスに対して書式に沿った形でコールフローID・ガイダンスIDを記載したメールを送信すると、その内容を用いて連絡を実行します。

送信先メールアドレスについて

β版ではご利用のスペースのスペースID( スペースURL https://xxxxx.cloud.kompira.jpxxxxx にあたる文字列 )に基づいてメールアドレスが決まります。 例えば スペースID xxxxx の場合は下記のアドレスを使用します。

xxxxx+5162a03d-b059-4097-a513-f150b018e47c@cloud.kompira.jp

xxxxx をご利用のスペースIDに置き換えてご使用ください。β版ではスペースIDより後ろの部分は上記のまま変更しなくて構いません。 (正式版では仕様が変わりますのでご注意ください)

送信内容について

メール本文に下記の2行を記載してメール送信を行なってください。 (IDの値は連絡に使用するコールフロー・ガイダンスのIDに置き換えてください)

callflowId: 85f0a373-8b54-4c70-85a6-71957ecf7f48
guidanceId: e689a0ea-8678-4c68-b832-8b3f8e402398

上記2行が含まれていれば、前後に別の内容を記載しても問題ございません。 また、件名は自由に設定していただいて構いません。

制約事項

β機能につき、現在下記の制約があります。

  • ガイダンスへパラメータを与えることができない
  • 平文またはBase64以外のエンコード形式を受付できない

特に後者の制約により、メール送信に使用するクライアントの種類や設定によっては連絡開始が上手くいかない可能性がありますので、ご了承ください。

連携例(Zabbix)

本機能を用いて先述の記事に記載したZabbixでの連絡アクション作成を行なってみます。

記事の内容に従ってコールフロー・ガイダンスのIDを調べた後、下記のようにアクション作成を行います。 (先述の通りガイダンスパラメータは使用できないため、パラメータを使用しない形に文面は調整しておきましょう)

f:id:honda_fixpoint:20190805140808p:plain

f:id:honda_fixpoint:20190805141249p:plain

以上の設定を行なってアクションの発火を行うと、ZabbixからPigeonへメール送信が行われ、これをトリガにPigeonの連絡が実行されます。
Zabbixはメール送信を取り扱いやすく作られているため、APIリクエストを行う方法よりも遥かにシンプルに設定が出来ていることがわかります。

ご利用希望の方へ

本機能を利用するには個別のシステム設定が必要となりますので、ご利用を希望される場合は下記の内容でメールにてご連絡ください。

項目 内容
メールアドレス devcloud@kompira.jp
件名 メールトリガ連絡ご利用希望
本文 会社名・ご担当者名・スペースIDを記載してください。
(スペースIDの調べ方は「送信先メールアドレスについて」を参照してください)

ksocketからWindowsサーバーの接続受け入れ設定を一括で行う手順を公開しました

Sonarを用いてWindowsサーバーからの情報収集を行う際、ksocketのクレデンシャルファイルを作成すると共に、各ノードにWinRMの設定を行う必要があります。 この設定が大変、という皆様からの多くの声を受け、設定を一括で行うためのひとつの方法を簡易ながらマニュアルとしてまとめさせていただきました。

Active Directory環境下限定の方法とはなりますが、これから大量のWindowsサーバーを管理される予定の方は是非お試しください。

ksocket接続受け入れの一括設定マニュアル

引き続き、ご愛顧のほどよろしくお願いします。

Ksocket で Windows 名前解決ができるようになりました

Ksocket に以下の内容を含むアップデートを行いました。

  • ksocket-20190726
    • ksocket-core: 1.8.0
    • ksocket-networks: 1.8.0

アップデートの内容

  1. Linux 版 Ksocket で Windows の NetBIOS 名前解決ができるようになりました

    • ksocketからスキャン対象のWindows機に対して名前照会を行い、取得できた場合には「ホスト名」欄に表示します。
      f:id:tomiyoichi:20190816221825p:plain
      ホスト名の表示例
  2. SNMP 通信の負荷を軽減しました

    • データ取得を行う時間間隔を増やすことで、スキャン対象機の負荷が急激に増加しなくなります。

最新の Ksocket はこちらよりダウンロードすることができます。



Kompira cloud 製品紹介ページはこちら
Kompira cloud 資料ダウンロードはこちら

ネットワーク構成図表示機能をβリリースしました 他

Kompira cloudについて、以下の内容を含むアップデートを行いました。

マルチユーザー機能をβリリースしました

Kompira cloudへのログインユーザーを追加できるようになりました。

本機能はβのため、今後内容に変更がある可能性があります

[Sonar] ネットワーク構成図表示機能をβリリースしました

いままでネットワーク上に存在するノードは、一覧表で見るしかありませんでしたが、 今回ネットワーク構成図の表示機能をベータリリースしました。

以下のように構成図の表示や、表示されているノードの検索や詳細表示が行えます。

f:id:c255:20190710181205p:plain

これに伴い Sonar におけるネットワークスキャン機能も情報取得の強化が行われているため、 ぜひこの機会にもう一度スキャンして、構成図表示機能をお試しください。

[Sonar] WebUI 上からスキャンのスケジューリング設定ができるようになりました

[Sonar] スキャンのイベント通知として Webhook が使用できるようになりました

[Sonar] スキャン処理の改善を行いました

  • ノードシグネチャを持たず、Macアドレスのみが検出されたアドレスもノードとして集約するようになりました
  • ルーティング情報を取得するようになりました (現在はAPIでのみ取得できます)

[Pigeon] 架電履歴にて架電先の電話番号だけでなく表示名を確認できるようになりました

連絡履歴の詳細画面に表示される架電履歴では、その連絡にて行われた架電の情報を確認可能です。

各架電における発信先の情報としてこれまでは電話番号のみ確認可能でしたが、本アップデートにより「連絡先」に設定した表示名を確認できるようになりました。

f:id:honda_fixpoint:20190717091024p:plain



Kompira cloud 製品紹介ページはこちら
Kompira cloud 資料ダウンロードはこちら

Zabbixでアラートが発生したときにPigeonで電話がかかるように設定する

(文言およびスクリーンショットを新UIのものに変更しました。2020/1/14)

Pigeonは複数人のチームに対して、誰かから応答があるまで電話連絡を順番に行うサービスです。
想定される主な使い方として、サービスを監視しているツールでアラートを検知したとき、このアラートをトリガーにPigeonを呼び出して、担当者に電話連絡をし、迅速に障害対応を行えるようにする、というものがあります。

ここでは、代表的な監視ツールの1つであるZabbixを例にとって、アラートを検知した際にPigeonで電話がかかるように設定する方法をご紹介します。

環境

  • Ubuntu 18.04
    • ZabbixがインストールされているOS
  • Zabbix 4.0

今回の検証では、Zabbixの最新のLTSである Zabbix 4.0 を使用しています。
お使いのバージョンにより、設定方法が微妙に異なる箇所がありますので、ご注意ください。

Pigeonの設定

まず、Pigeonでコールフローとガイダンスを作成します。
Pigeonの設定方法については、Pigeon チュートリアル 記事で詳しく記載していますので、そちらをご覧ください。

ガイダンスのメッセージには、以下のようなテキストを設定しておきます。

Zabbixでアラートが発生しました。
アラート発生ホスト、{{host}}。 アラート内容、{{message}}。
 対応される場合は1を、次の担当者に連絡する場合は2を、連絡から離脱する場合は3を、押してください。

設定ができたら、コールフローIDとガイダンスIDを保存しておいてください。
コールフローIDとガイダンスIDは、それぞれKompira cloudの以下の画面で確認することができます。 IDはそれぞれクリックするとコピーできます。

コールフローID f:id:sugimotofp:20200114152826p:plain

ガイダンスID f:id:sugimotofp:20200114153032p:plain

スクリプトの配置

PigeonでAPIから電話をかけるには、 [POST] /api/apps/pigeon/chain/invoke を使用します。
以下のスクリプト pigeon_call.sh は、必要なパラメータを設定した上でこのAPIを呼び出すものです。
これを /usr/lib/zabbix/alertscripts/pigeon_call.sh として、Zabbixホスト上に保存しましょう。

#!/bin/bash
# Usage: pigeon_call.sh [call_parameters]

# Kompira cloud Space URL
SPACE_URL=https://yourspacename.cloud.kompira.jp

# Kompira cloud API Token
API_TOKEN=wJu1jij8GeccVVkTOzy8xWH5N2ugKWDWM+HcaV0J

# Pigeon / Callflow ID
CALLFLOW_ID=9b020603-a477-44fb-ac4b-67790b14bfec

# Pigeon / Guidance ID
GUIDANCE_ID=408e47e2-ceb2-4cc9-8a55-778782eebc7a

if [ -n "$1" ]; then
  CALL_PARAMETERS="$1"
else
  CALL_PARAMETERS={}
fi

INVOKE_URL=${SPACE_URL}/api/apps/pigeon/chain/invoke
PAYLOAD="{
  \"params\": {
    \"callflowId\": \"${CALLFLOW_ID}\",
    \"guidanceId\": \"${GUIDANCE_ID}\",
    \"parameters\": ${CALL_PARAMETERS}
  }
}"

curl -s -X POST -H "accept: application/json" -H "X-Api-Version: 1.0" -H "X-Authorization: Token ${API_TOKEN}" "${INVOKE_URL}" -d "${PAYLOAD}"

このスクリプトのうち、以下の値はお使いの環境にあわせて編集してください。

  • SPACE_URL
  • API_TOKEN
  • CALLFLOW_ID
  • GUIDANCE_ID

Zabbixの設定

ZabbixのConfigurations -> Actions -> Create Actionと選択することで、新しいActionを作成することができます。
このActionで、Zabbixがある条件を満たしたときに pigeon_call.sh が実行されるように設定します。

f:id:kompiracloud:20190613171808p:plain
ActionでOperationを設定
f:id:kompiracloud:20190613172100p:plain
Opreationの内容を設定

Operationの設定では各項目を以下のようにします。

項目 設定内容
Operation type Remote command
Target list Current host
Type Custom script
Execute on Zabbix server
Commands /usr/lib/zabbix/alertscripts/pigeon_call.sh '{"host": "{HOST.NAME1}", "message": "{ITEM.NAME1}"}'

ここでは、実行するコマンドとしてホスト名 {HOST.NAME1} とトリガーのアイテム名 {ITEM.NAME1} を指定しています。
その他にもここでは様々なマクロを設定することができます。
今回はZabbix 4.0を検証に使用していますが、バージョンごとに指定できるマクロの種類・指定の名前が異なります。 詳しくは公式ドキュメントを参照してください。

www.zabbix.com

架電テスト

ここまでで、Zabbixで条件が満たされるとPigeonに通知が飛ぶように設定することができました。
この状態でActionの条件を満たすと、Zabbix上では先ほど設定した pigeon_call.sh を実行され、Pigeonで登録した電話番号に電話がかかってきます。

f:id:kompiracloud:20190613180004p:plain

上記の画面でもわかる通り、Status = Executed となっており、スクリプトが実行されていることがわかります。
また、Pigeonでは架電履歴を以下のように確認することができます。

f:id:sugimotofp:20200114154836p:plain
Pigeonで確認できる架電履歴

一番下の「パラメータ」では、API実行時に指定したパラメータを確認することができます。
今回の設定では、Action実行時のコマンドに hostmessage を渡しているので上記のようになっていますが、設定すれば他にも任意のkey, valueを渡すことができます。

まとめ

ここまで見てきたように、Pigeonを利用することで、障害発生時の自動電話連絡を簡単に設定することができます。
現在はサービス運用でメール通知しかしていないけれど、電話通知がしたい。でも電話通知をするのは結構大変そう・・・と考えている方は、ぜひ導入を検討してみてください。

新サービス「Pigeon」を正式リリースしました 他

Kompira cloudについて、以下の内容を含むアップデートを行いました。

新サービス「Pigeon」を正式リリースしました

エスカレーション電話連絡を実現する新サービス「Pigeon」を2019年2月からベータ版として公開しておりましたが、この度正式版としてリリースを行いました。

f:id:kompiracloud:20190523110831p:plain
Pigeon 構成イメージ

複数の連絡先を束ねてコールフローを作成し、 登録順に自動音声電話をかけるまでの一連の流れをサービスだけで完結させることができます。 チュートリアルはこちらからご覧いただけますので、ぜひご一読ください。

[Sonar] ksocketの認証情報ファイル生成機能を追加しました

ksocketからLinuxやWindows、ネットワーク機器に接続する際に必要な情報は、toml形式で記述をします。
今回のアップデートにより、Web上で項目を入力することで、対応するtomlファイルを生成できるようになりました。

f:id:kompiracloud:20190520144532p:plain
画面上の設問に答えていくだけで有効なtomlファイルを生成できます。

Kompira cloudにログイン後、画面右上の全体設定->認証情報というメニューからお使いいただくことができます。
なお、本機能はJavaScriptのみで完結しており、入力されたユーザ名、パスワード、IPアドレスなど一切の情報はKompira cloudには送信されません。
APIの提供はございませんので、ご注意ください。

[Sonar] ksocket のアップデート

以下の内容を含むアップデートを行いました。

  • ksocket-20190510

    • ksocket-core: 1.8.0
    • ksocket-networks: 1.7.0
  • アンインストールが1コマンドで行えるようになりました

  • その他、いくつかの不具合修正、安定性の向上を行いました

最新の ksocket はこちらよりダウンロードすることができます。



Kompira cloud 製品紹介ページはこちら
Kompira cloud 資料ダウンロードはこちら

Pigeon チュートリアル

はじめに

Pigeonは複数人のチームに対して、誰かから応答があるまで電話連絡を順番に行うサービスです。連絡の内容は自動音声によって再生され、電話をうけた人は1~9の数字を押すことで応答内容を決めることができます。

ここでは、Pigeon における連絡内容の設定と、連絡の実行をAPI経由で行う方法をご紹介します。

連絡内容の設定

連絡内容の設定は、Kompira cloud Web画面右側の「Pigeon」メニューより行うことができます。

f:id:honda_fixpoint:20191211171200p:plain

連絡先とコールフローの作成

まずは、電話での連絡先情報を作成しましょう。 今回は、田中さん、山田さん、斎藤さんの3人に対して順番に電話がかかるようにデータを作成してみます。Pigeonでは、このように複数人が連なった一連の連絡先を「コールフロー」と呼びます。

連絡先の作成

まず、田中さん、山田さん、斉藤さんの名前と電話番号情報をそれぞれ作成します。
以下は田中さんの電話番号情報を登録している様子です。

f:id:honda_fixpoint:20191211171308p:plain

同じように山田さん、斎藤さんの情報を登録すると、連絡先一覧表示画面では以下のような状態となります。

f:id:honda_fixpoint:20191211171408p:plain

続いて、田中さん、山田さん、斉藤さんが登録されたコールフローを作成しましょう。

コールフローの作成

f:id:honda_fixpoint:20191211171456p:plain

「連絡先」にて、先ほど追加した連絡先を元にどういった順番で電話連絡をするかを決めることができます。
また、誰も応答しない場合には連絡の再試行を行いますが、最終的に連絡を何回まで行うかは「最大ループ回数」にて設定します。
(例えば「1」の場合は再試行を行わず、1回で連絡を終了します)

今回の例では、以下の順序で電話がかかることになります。

電話開始 -----+-----> 田中さん ---> 山田さん ---> 斉藤さん -->+-------------> 電話終了
             ↑                                             |
             |                                             |
             |                                             ↓  (3周していなければ戻る)
             +---------------------------------------------+

ガイダンス情報の作成

連絡前の最後の準備として、電話を受けた際に自動音声で流れる文章を作成しましょう。Pigeonではこれを「ガイダンス」と呼びます。

ガイダンスの登録をする場合、「電話を受信したらはじめに流れる音声の文章」と、その後「1~9を押した時に流れる音声の文章」をそれぞれ登録します。
まず、ガイダンス情報の登録画面を見てみましょう。

f:id:honda_fixpoint:20191211171544p:plain

ガイダンスでは、自動音声の他に、電話機の番号(応答ボタン)を押したときの振る舞い(応答タイプ)を指定することができます。

応答タイプには以下の3種類があります。
(最低でも1つは「終了」が割り当てられた応答ボタンを設定する必要があります。)

応答タイプ 意味
終了 一連の連絡を終了させます。次の連絡先への電話連絡は行われません。
継続 コールフローの次の連絡先へ電話連絡を行います。
離脱 コールフローの次の連絡先へ電話連絡を行います。
また、次回以降のループで自分への電話連絡が行われないようになります。

電話に出なかったり、番号を押さずに電話を切った場合は「継続」と同様、次の連絡先へ電話連絡を行います。

試しに、あるサーバに障害が発生したとき、それを運用担当者に知らせるようなガイダンスを作成してみましょう。

タイミング 動作 メッセージ
電話受信時 {{server}}にて{{incident}}が発生しました。
対応される場合は1を、次の担当者に連絡する場合は2を、
次回以降この電話への連絡をスキップする場合は3を押してください。
1が選択された時 終了 1が押されました。対応をよろしくお願いいたします。
2が選択された時 継続 2が押されました。次の担当者に連絡します。
3が選択された時 離脱 3が押されました。次回以降、この電話への連絡をスキップします。

この内容で障害連絡を受けた担当者は、1を押すことで自分が対応を行う(以降の連絡が不要である)ことをPigeonに知らせ、連絡を止めることができます。 また、何らかの事情で対応が難しい場合は、2または3を押すことで次の担当者に回すことができます。

なお、「電話受信時」のメッセージに含まれる {{server}} {{incident}} といったキーワードは、連絡を実施する際に具体的な単語に置き換えて連絡をすることが出来ます。 具体的な使い方に関しては後述する「コールフローを用いて連絡をする」の内容をご覧ください。

連絡の実行

それでは、ここまでに入力したデータを使って連絡を行ってみます。連絡はAPI経由で実行します。

APIトークンの発行

Kompira cloudのAPIを使用するために、まずはAPIトークンの発行を行いましょう。

発行を行うにはブラウザからKompira cloudにアクセスし、画面右上から「設定」を開きます。

f:id:honda_fixpoint:20191211171937p:plain

次に設定メニューより「API token」を開き、APIトークンの発行を行います。

f:id:honda_fixpoint:20191211172104p:plain

作成されたAPIトークン文字列をコピーし、保存しておきます。

f:id:honda_fixpoint:20191211172137p:plain

コールフロー・ガイダンスのIDを確認する

連絡を行う際に、先の手順で登録したコールフロー・ガイダンスに対して自動的に振られるIDを使用します。 IDはコールフロー・ガイダンスの個別画面より下記のように確認できます。

f:id:honda_fixpoint:20191211172416p:plain
コールフローIDの確認方法

f:id:honda_fixpoint:20191211172441p:plain
ガイダンスIDの確認方法

コールフローを用いて連絡をする

Pigeonでは「コールフロー」に登録された連絡先に対して、登録された順番で電話連絡を行います。 また、読み上げ文面には「ガイダンス」に登録された内容を用います。 そのため、連絡をするには「コールフロー」「ガイダンス」を1つずつ指定します。

それでは実際に自動音声による連絡を行なってみましょう。

連絡の実施 : [POST] /api/apps/pigeon/chain/invoke

POST時のJSONデータは以下のような形式で指定をします。

{
  "params": {
    "callflowId": "049de6fc-c1a7-4963-af43-616cce2492c6",
    "guidanceId": "570e6f71-5459-43fe-a745-aa7d115ce20d",
    "parameters": {
      "server": "テスト用サーバー",
      "incident": "軽度の障害"
    }
  }
}

params.parameters に指定された値は、ガイダンスで {{key}} という形式で書かれた部分に埋め込まれます。 例えば「{{server}}{{incident}}が発生しました」というメッセージをガイダンスに登録した場合、上記のJSONデータで連絡を実行すると「テスト用サーバー軽度の障害が発生しました」という内容が実際に読み上げられます。

以下はcurlコマンドを使ったAPI実行の例です。

$ curl -X POST -H "X-Authorization: Token aAbBcCdDeEfFgGhHiIjJkKlLmMnNoO0123456789" \
https://yourspace.cloud.kompira.jp/api/apps/pigeon/chain/invoke \
-d '{"params":{"callflowId":"049de6fc-c1a7-4963-af43-616cce2492c6","guidanceId":"570e6f71-5459-43fe-a745-aa7d115ce20d","parameters":{"server":"テスト用サーバー","incident":"軽度の障害"}}}'

ここで、 aAbBcCdDeEfFgGhHiIjJkKlLmMnNoO0123456789 となっている部分は、「APIトークンの発行」に記載の手順で発行したAPIトークンを設定してください。 また、 https://yourspace.cloud.kompira.jp の部分は実際にお使いいただいているKompira cloudのスペースURLを設定してください。

APIを実行すると、以下の順で処理が進みます。

  • 田中さんに電話連絡
  • 山田さんに電話連絡
  • 斎藤さんに電話連絡
  • (田中さんに戻る)

この中で、誰かが「1」を押した時点で連絡は終了となり、以降の電話連絡は行われません。
「2」が押される、番号を押さずに電話が切られる、電話に出ない、等の場合は次の人への電話連絡を行います。

まとめ

簡単ではありますが、Pigeonによる連絡の方法をご紹介しました。

なお、連絡の実施だけでなく、連絡先・コールフロー・ガイダンスの登録・取得を含む全ての操作はWebAPIからも実施可能です。 API一覧は、APIドキュメントPigeon カテゴリから確認することができますので、詳しくはそちらをご参照ください。