最近のCloudWatchはすごい。ほんの数年前はリソース系(UI)見にくいとかあったのですが、
最近はかなり使いやすくなっています。
これならZabbixとかnagios建てる必要もないかも。
CloudWatchはデフォルトでメモリー使用率、ディスク、ロードアベレージを可視化することができません。なのでモニタリングスクリプトをぶちこまないとダメなので、今回はその設定をブログします。
■環境
・EC2(Amazon Linux)
■必要パッケージのインストールと設定
1 |
$ sudo yum install perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https |
・モニタリングスクリプトのダウンロードとインストール
1 2 3 4 5 |
# cd /usr/local/bin # curl http://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.1.zip -O # unzip CloudWatchMonitoringScripts-1.2.1.zip # rm CloudWatchMonitoringScripts-1.2.1.zip # cd aws-scripts-mon |
・インスタンスにIAMロールを関連付ける or AWS認証情報を指定
IAMロールの方が簡単。
(IAMロールの場合)
1 2 3 4 |
cloudwatch:PutMetricData cloudwatch:GetMetricStatistics cloudwatch:ListMetrics ec2:DescribeTags |
(AWS認証情報を指定する場合)
1 2 3 4 |
# cp awscreds.template awscreds.conf # vim awscreds.conf AWSAccessKeyId=my-access-key-id AWSSecretKey=my-secret-access-key |
■テストラン
1 2 3 4 5 |
# ./mon-put-instance-data.pl --mem-util --verify --verbose Successfully reported metrics to CloudWatch. Reference Id: xxxxxxxxxxxx ↑OK 問題なければ以下のコマンドでcloudwatchに出力してみましょう #./mon-put-instance-data.pl --mem-util --mem-used --mem-avail |
・実際にCloudWatchのダッシュボードでも確認
Linuxシステムが増えているかと思います。
・crontabに登録
1 2 |
# crontab -l */5 * * * * /usr/local/bin/aws-scripts-mon/mon-put-instance-data.pl --mem-util --mem-used --mem-avail --swap-used --swap-util --disk-space-util --disk-path=/ --from-cron |
■aws-mon.sh
上記のスクリプトだとメモリー使用率とディスクだけなので、それを含めて完全系のスクリプトがあります。ロードアベレージもなんでもある。
https://github.com/moomindani/aws-mon-linux
1 2 3 4 5 6 7 8 9 10 11 |
# cd /usr/local/bin # git clone https://github.com/moomindani/aws-mon-linux.git # cd aws-mon-linux # chmod 755 aws-mon.sh # aws configure AWS Access Key ID [None]: WAHAHA AWS Secret Access Key [None]: OHAHA Default region name [None]: ap-northeast-1 Default output format [None]: text # ./aws-mon.sh # ./aws-mon.sh --all-items --disk-path=/ |
・ダッシュボードで確認
System/Detail/Linuxが増えて、ロードアベレージが表示されています。
・crontabに追加
1 2 |
# crontab -l */5 * * * * /usr/local/bin/aws-scripts-mon/aws-mon.sh --all-items --disk-path=/ --from-cron |
■設定完了
■まとめ
ここらへんをデフォルトで設定できるようにしてほしいよAmazonさん。。監視工数が・・・と思ったけどここらへんはansible化かな。
作ってみた。
https://github.com/RVIRUS0817/ansible_plaza/blob/master/roles/cloudwatch/tasks/main.yml
参考
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/mon-scripts.html
0件のコメント