Amazon SNS – Twilioゲートウェイ Labrie(仮) v0.2
よく訓練されたアップル信者、都元です。昨日に引き続き、Labrieの件。早速バージョンアップしました。
CloudWatchが言ってくることが分からない
昨日のエントリでは「HOOT24ライト(無人監視)」等と書いていたのですが、昨日のv0.1ではCloudWatchのアラームに対応していませんでした。
というのも、Labrieのエンドポイント/twilio/{telnum}は、SNSメッセージ本文にTwiMLを記述する、という仕様でした。しかしCloudWatchのアラームとして送られてくるSNSメッセージの本文は、以下のようなJSONです。
{ "AWSAccountId": "XXXXXXXXXXXX", "AlarmDescription": null, "AlarmName": "cpu-80", "NewStateReason": "Threshold Crossed: 1 datapoint (100.0) was greater than or equal to the threshold (80.0).", "NewStateValue": "ALARM", "OldStateValue": "OK", "Region": "US - N. Virginia", "StateChangeTime": "2013-04-25T08:32:55.133+0000", "Trigger": { "ComparisonOperator": "GreaterThanOrEqualToThreshold", "Dimensions": [ { "name": "InstanceId", "value": "i-XXXXXXXX" } ], "EvaluationPeriods": 1, "MetricName": "CPUUtilization", "Namespace": "AWS/EC2", "Period": 60, "Statistic": "AVERAGE", "Threshold": 80.0, "Unit": null } }
当然、LabrieがsubscribeしているSNSトピックとCloudWatchアラームのアクションを繋いでも、「Twilio APIエラーですよ」的な電話が掛かってくるだけです。
よろしい、ならばバージョンアップだ
CloudFormationテンプレートURL
https://s3-ap-northeast-1.amazonaws.com/cm-cfn-templates/labrie/labrie-0.2.template
v0.2のテンプレートのURLがこちら。ああっ…。アップデートの配布も簡単過ぎる。CloudFormationカコイイ…。
変更点
v0.1のインターフェイスは基本的に壊してません。
v0.2の新機能として「CloudWatchアラームメッセージを理解するエンドポイント」を追加しました。/twilio-cw/{telnum}です。このURLをエンドポイントとして、SNSトピック *1を購読してください。電話が掛かって来てconfirmする手順等は/twilio/{telnum}と同じです。
あと、準備として、監視対象のEC2インスタンスを1つ立てておきましょう。Labrieのインスタンスとは別の方が良いと思います。Amazon Linuxのt1.microで充分です。その起動したらインスタンスIDを控えておき、SSHでログインできることも確認しておいてください。
では早速、CloudWatchのアラームを作成し、SNSトピックlabrie-cw-testと繋いでいきましょう。CloudWatchのManagement Consoleの左側メニューよりAlarmsを選択し、Create Alarmボタンをクリックします。検索キーワードとして先ほど控えたインスタンスIDを入力し、そのCPUUtilizationを選択し、Continueボタンをクリックします。
次の画面で、アラームの詳細を決めます。5分間のCPU使用率の平均値が80を越えたらアラーム、ということで、下図のように設定します。
さらに次の、画面では状態がアラームになる等、状態変化が起こった時に何をするかを設定します。ここでSNSトピックと繋ぐわけですね。
あとは順当に、確認等を済ませ、アラームを作成します。
続きまして、監視対象サーバに負荷を掛けます。以下のコマンドで、CPUが100%に張り付くはずです。
gzip -9 < /dev/urandom > /dev/null
そして待つ事約5分。おなじみ、ラブリー息子の登場です。
「You are receiving this phone because your Amazon CloudWatch Alarm "cpu-80" in the US - N. Virginia region has entered the ALARM state, because "Threshold Crossed: 1 datapoint (100.0) was greater than or equal to the threshold (80.0)." at "Thursday 25 April, 2013 09:15:55 UTC".」...
すみません、英語ですw 日本語対応等は、そのうちそのうち…。
もっと作り込めば、HOOT24ライトになっていくわけです。
脚注
- ここではlabrie-cw-testとしました ↩