概要 障害検知をメールや Slack に流しても休日に業務系連絡を見ることは少ない。 その為、より検知報告に気付きやすくする様、 電話通知にするべく Twilio を導入する運びとなりました。
まずは利用するまでの簡単な手順をまとめました。
※コードのサンプルが Twilio のサイト内にあるので導入しやすかったです。
手順 1. Twilio にアクセス 以下リンクから Twilio にアクセスします。
http://twilio.kddi-web.com
2. 新規登録 名前、E-mail、パスワード(大小半角英数字)と
何にどの言語で利用するかを選択して
「始めましょう」をクリック。
「始めましょう」という日本語はユーザ目線でなく違和感ありますね。
3. アカウント認証 以下2つの認証方法があります。
電話番号に SMS に確認コードを送信させる
電話番号に Twilio から着信があり確認コードのダイヤルキーを入力する。
後者は Twilio の音声読み上げロボットから電話がかかって来るので どんな感じで通知されるか試してみたい方は是非後者を選択してみてください。
スムーズなイントネーションではないですが、伝えたい気持ちは誰よりもあります。
4. Twilio から電話をかけてみる アカウント認証確認後、Twilio 製品の「プログラマブル Voice」ページ Top に遷移しました。 メニューから ツール
をクリックしツールページに遷移してください。
To 指定 音声通話>通話>電話をかける の API Explorer にて必須
のTo
に 電話番号認証した番号を入力してください。
但し、日本番号(+81)の場合、090********
の番号は はじめの 0
を削除し、 +81
を prefix として追加し、+8190********
となりますので注意してください。
URL 指定 条件
のUrl
に Twilio からの電話を受け取った際、 電話のキーダイヤルを押下した際の挙動を url 形式で指定可能です。
適当に準備できる Url がない場合は、 以下のような適当な Url で良いです。
http:/hogehoge.hogehoge.co.jp
通知実行 ページ下部の リクエストを発行する
ボタンをクリックします。
※ ※料金が発生します
とありますが、Trial は料金を請求されるということはありません。※ 同アカウントでアップグレードする際は、発信した電話料金も合わせて請求されることになるので、テスト完了後は別途アカウントを取得することを推奨します。
電話を受け取る Twilio から電話がかかってきたかと思います。 キーダイヤルを入力すると、 Url で指定したプログラムが動作しますが、 適当に入力したのでアプリケーションエラーが発生しました。電話を終了します。
と通知されるはずです。
実際にプログラムから使用する際は、 指定した Url でキー入力を受け取ってその後の挙動を制御する、 という流れになります。
実際に利用した例 担当した業務では、Zabbix からの障害検知を Twilio で担当者に電話報告(エスカレーション)するという仕組みを構築しました。
例)以下のような挙動が実現できます。 Zabbix で障害検知 ↓ Twilio ↓ 電話 対応者 ↓ 対応者が「1」をクリック 指定した Url のプログラム実行 ↓「1」を受け取り、障害対応可能な旨を Zabbix へ通知 Zabbix (障害対応中)
Zabbix & Twilio 参考 zabbix-twillio
上記サイトでの zabbix-twilio 連携の手順で進めた場合、 twilio でキーダイヤル入力後、 以下のようなエラーが発生し、イベント登録ができません。API error -32602: The "user.login" method must be called without the "auth" parameter
zabbix-twilio.php 内の Zabbix_API
クラスが古い為です。
zabbix-twilio.php
PhpZabbixApi
上記をダウンロードし、 php build.php
で 以下 2 ファイルを生成し、 こちらを呼び出し Zabbix_Api
と ZabbixApi
とを変更してください。
1 2 3 4 5 + require_once 'ZabbixApi.class.php'; + use ZabbixApi\ZabbixApi; - $api = new Zabbix_API ( $ZABBIX_API, $ZABBIX_USER, $ZABBIX_PASS ); + $api = new ZabbixApi ( $ZABBIX_API, $ZABBIX_USER, $ZABBIX_PASS);
ZabbixApi
は Basic 認証を設定している場合にも対処しています。
1 2 // 例) $api = new ZabbixApi ( $ZABBIX_API, $ZABBIX_USER, $ZABBIX_PASS, $BASIC_AUTH_USER, $BASIC_AUTH_PASS);
検証環境
Amazon Linux AMI release 2015.09
Zabbix 2.5 (3.0α)
PHP 5.6.14
MySQL 5.5.46
以上