2013/10/03

AWS SDKを使ってSNSにCPU使用率を送りつける

初めてのAWSメモ(2):CloudWatchからSNS→SQS、AWS SDK for RubyでQueue取り出し」ではEC2のDetailed Monitringを使って「対象EC2のCPU使用率を1分に1回SNSに通知→SQSに分配→監視サーバからAWS SDKを使って取り出し」していたんだけど、普通にAWS-SDKを使って通知もしちゃえば良いことに気づき、Script書いてみた。

 (1)CPU使用率はmpstatを使って取得したいので、sysstatをinstallする。
 $ sudo yum -y install sysstat

 (2)通知スクリプト。mpstatで取得したCPU使用率をAWS-SDKを使ってSNSに送りつける。
  (※追記:IAM Roke for EC2を設定してればアクセスキーとシークレットキーはいらない)

#!/usr/bin/ruby

require 'rubygems'
require 'aws-sdk'

access_key = 'アクセスキー'
secret_key = 'シークレットキー'
sns_endpoint = 'sns.xxxxx.amazonaws.com'
topic_arn = 'arn:aws:sns:xxxxx:1234567890:cpu-alert'

AWS.config(:access_key_id => access_key,
           :secret_access_key => secret_key,
           :sns_endpoint => sns_endpoint)

topic = AWS::SNS::Topic.new(topic_arn)
message = `mpstat -P ALL`

while true
  topic.publish(message,'cpu usage.')
  sleep 60
end

(3)実行すると1分に1回mpstatの結果をSNSに送りつけるので、監視サーバ側でSQSから取り出せばOK。




Amazon Web Services クラウドデザインパターン実装ガイドAmazon Web Services クラウドデザインパターン実装ガイド
大澤 文孝,玉川 憲,片山 暁雄,鈴木 宏康

日経BP社
売り上げランキング : 17216

Amazonで詳しく見る by AZlink