CloudWatchで監視!
そもそも CloudWatch って何よ
AWS には CloudWatch と呼ばれる監視サービスがあります。
CloudWatch内では、「メトリクス」と呼ばれるグラフを使ってアラートメールを飛ばしたりEC2のオートスケール管理ができたりします。
EC2インスタンスを立てると、標準でいくつかのメトリクスが用意されているのですが、
その中には Load Average とかメモリ使用量とか、色々足りていないものが多いので、自前で用意する(カスタムメトリクスを作成する)必要があります。
AWS側でツール提供してたよね?
http://aws.amazon.com/code/8720044071969977
上記の見て頂ければわかるのですが、、、まさかの Load Average
がないっていう・・・\(^o^)/
LAだけ専用のツール使うのは嫌なので、一つにまとめたい所です。
詳細手順
https://github.com/moomindani/aws-mon-linux
こちらのツール使います。
pip
インストール
$ mkdir ~/work
$ cd work/
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py
aws cli
インストール
$ sudo pip install awscli
アクセスキーなどの設定
$ mkdir ~/.aws
$ cd ~/.aws
$ vi config
以下の内容を ~/.aws/config
に設定
[default]
aws_access_key_id=xxxxxxx
aws_secret_access_key=XXXXXX
region=ap-northeast-1
# 各所インスタンスの設定に書き換える
これがないと Unable to construct an endpoint for ec2 in region None
のようなエラーが出ます。
以下を叩いて正常に結果(JSON)を取得できればOK.
$ aws ec2 describe-instances --filters "Name=instance-type,Values=m1.small,m1.medium" "Name=availability-zone,Values=ap-northeast-1c"
aws-mon-linux
を落とす
github よりダウンロード
$ mkdir ~/lib
$ cd ~/lib
$ git clone https://github.com/moomindani/aws-mon-linux.git
使い方は README.md
にあるとおりですが、こんな感じ
$ ./aws-mon.sh --mem-util --load-ave1 --disk-space-util --disk-path / --verbose --verify
ちなみに 320
行目の System/Detail/Linux
を System/Linux
に変更すると、 Custom Metrix
の箇所ではなく Linux System
というメトリクスがコンソールに表示されます。
※AWS側で設定している予約語??
パスを通す
aws
コマンドは /usr/local/bin
に入ります。
が、このまま crontab の設定をしても、/usr/bin:/bin
ぐらいしかパスが通っていないため、 .profile
に /usr/local/bin
を追加する必要があります。
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games"
crontab に設定
あとは crontab の設定をして、終了。
$ crontab -e
*/5 * * * * . /home/user/.profile; /home/user/lib/aws-mon-linux/aws-mon.sh --load-ave1 --mem-util --unicorn-mem-util --disk-space-util --disk-path / >> /home/user/cron/cron.log 2>&1