CloudWatchは便利なのですが、なぜか標準メトリクスにメモリとかディスクの使用量がありません。。
それを知りたい場合はカスタムメトリクスを定義する必要があります。いちおうAWSがサンプルで用意してくれてたりはするようです。。。
もちろん自分で書いても構いません。メトリクスは簡単に送れるようです。
やりかた
ここでは以下の2つを試してみます。
AWS提供のスクリプトを利用する
まずは、AWS提供スクリプトを試してみます。
依存ライブラリ等のインストール
指示に従い、スクリプト実行に必要なファイルをインストールします。
sudo yum install perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https -y
ツールの取得
ツールを取得、設定します。
ダウンロード
ま、ダウンロードしてzipを回答するだけ。
cd
# ダウンロード
curl https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.2.zip -O
# 展開
unzip CloudWatchMonitoringScripts-1.2.2.zip
# 元ファイル削除
rm CloudWatchMonitoringScripts-1.2.2.zip
# 移動
cd aws-scripts-mon
credential情報記述
設定はcredentialを設定するだけ。事前に作成しておきましょう。
# credential設定ファイルコピー
cp awscreds.template awscreds.conf
vi awscreds.confで編集。
AWSAccessKeyId=XXXXXXXXXX
AWSSecretKey=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
実行テスト
準備ができたら、--verifyオプションを付けてテストをしてみます(ま、いきなり送付してもなんあら問題ないと思いますが)。
./mon-put-instance-data.pl --mem-util --swap-util --disk-space-util --disk-path=/ --verify
cronに登録
問題が無いようならcronに登録します。
*/5 * * * * /home/hoge/aws-scripts-mon/mon-put-instance-data.pl --mem-util --swap-util --disk-space-util --disk-path=/ --from-cron
hogeは変えてね。
送信が完了すると、CloudWatch側に[Linuxシステム]というメトリクス群が見えるようになります。
注意
メトリクス送信時にディメンジョンとしてinstand idが送られるのですが、それがキャッシュされるようです。
AMIのイメージ取得して、インスタンス起動させた際、ログがかぶるの注意が必要なようです。
以下のようにキャッシュをクリアするとよいようです。
rm /var/tmp/aws-mon/instance-id
誰かが作ったスクリプトを利用する
いろいろまとめられたaws-mon.shというのがあるらしいのでそれを利用してみます。
ダウンロード
gitで取得するだけ。
cd
git clone https://github.com/moomindani/aws-mon-linux.git
cd aws-mon-linux
credentialの設定
credentialは特に設定せず、awsコマンドを利用するようなので、awscliをダウンロードし、configureで設定しておきます。
実行テスト
何もでませんが。。。たぶん下記でいけるでしょう。
./aws-mon.sh --all-items --disk-path=/ --verify
cronに登録
問題がなければcronに登録します。
*/5 * * * * /home/hoge/aws-mon-linux/aws-mon.sh --all-items --disk-path=/ --from-cron
hogeは変えてね。
参考
参考にさせていただきました。ありがとうございます。
以上です。