LoginSignup
10
5

More than 5 years have passed since last update.

Twilio+CloudFunctions+Stackdriverで障害アラートを電話で通知してみる

Posted at

はじめに(モチベーション)

商用環境だけど、外部委託とかの大した監視いらないからURLの疎通が出来なかったらアラート飛ばしたいってときがある。
イベントログとかパフォーマンスとかどうでもいいから、サービスが本当に使えなくなったときだけアラートがほしい。

かといって、深夜にslackとかメールで気づけるわけがないから、電話がほしい。
でも、stackdriverとかだとメールとかslackにしか通知できない。
URLの疎通が出来なかったら電話かけてきてほしい。

twilio(トゥイリオ)って何?

webAPIによって自動で電話をかけたり、SMS送ったりするやつ。

本社はアメリカのtwilio社がやっていて、日本ではKDDIが代理店としてサービスを提供している。
用途としては、自動の音声案内とかにも使われてたりする。

料金はざっくり以下となる。がトライアルで500円分が最初にもらえる。

  • 電話番号 108円/月
  • 発信(携帯宛) 16.2円/分
  • 着信(0120/0800宛) 21.6/分

詳しくはWebでhttps://twilio.kddi-web.com/price/

今回試すこと

twilioとgoogle cloud functionsを使って、サーバレスなアラート発報する仕組みを作る。
なんでCloudFunctionsを使ったかというと、内容によってアラートの送り先とか、電話の内容を変えたりするにはCloudFunctionsとかの関数で
自由に設定できたほうがいいんじゃないかと思ったから。

twilio_alerting (1).png

twilioアカウント作成

https://twilio.kddi-web.com/
ここから普通にアカウント作る。

ログイン後の画面

スクリーンショット 2018-07-30 19.19.56.png

プロジェクトを作成

スクリーンショット 2018-07-30 19.20.13.png

ソロ活動ですが何か?

スクリーンショット 2018-07-30 19.20.28.png

ログイン後のダッシュボード

スクリーンショット 2018-07-30 19.20.50_2.png

電話番号を取得する

スクリーンショット 2018-07-30 19.23.24.png

電話番号ガチャができる

スクリーンショット 2018-07-30 19.23.57_2.png

取得完了

スクリーンショット 2018-07-30 19.24.11_2.png

取得した電話番号を確認出来る

スクリーンショット 2018-07-30 19.24.38.png

スクリーンショット 2018-07-30 19.24.52_2.png

CloudFunctionの作成

index.js

exports.twiliotest = function(event, context) {
// Download the Node helper library from twilio.com/docs/node/install
// These consts are your accountSid and authToken from twilio.com/user/account
const accountSid = 'XXXXXXXXXXXXXXXXXXXXXXXXXXX';
const authToken = 'XXXXXXXXXXXXXXXXXXXXXXXXXXX';
const Twilio = require('twilio');
const client = new Twilio(accountSid, authToken);

client.api.calls
  .create({
    url: 'http://demo.twilio.com/docs/voice.xml',
    to: '+XXXXXXXXXXXXX',
    from: '+XXXXXXXXXXXX',
    method: 'GET',
  })
  .then(call => console.log(call.sid));
}
package.json
{
    "name": "twiliotest",
    "version": "0.0.1",
    "dependencies": {
      "twilio": "^3.18.0",
      "querystring": "^0.2.0"
    }
}

$ gcloud functions deploy twiliotest --trigger-http

監視対象VMの作成

今回は、GCEでVM(CentOS 7)を作成し、Nginxをインストールしておく。

$ sudo yum install -y nginx
$ sudo systemctl start nginx

Stackdriverの設定

UptimeCheckの設定

スクリーンショット 2018-07-30 22.49.13.png

Notification設定

WEBHOOKSにて先程作成したCloudFunctionを呼び出すようにする。
スクリーンショット 2018-07-30 22.51.43.png

スクリーンショット 2018-07-30 22.54.12.png

動作確認

Nginxの停止

$ sudo systemctl stop nginx

しばらく待つと・・・

かかってきた!

IMG_0327.png

今後について

今回はトライアル版だったから、「twilio使ってくれてありがとう。お試しの内容じゃなく任意のコールするなら有料版使ってね」的なメッセージになってた。
(イントネーションがすごい片言感ある)

アラートの内容によって電話の内容を変えたい。

10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5