この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
よく訓練されたアップル信者、都元です。昨日に引き続き、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としました ↩