AWS
CloudWatch

AWSでメモリやディスクの使用率とか監視する

CloudWatchは便利なのですが、なぜか標準メトリクスにメモリとかディスクの使用量がありません。。

それを知りたい場合はカスタムメトリクスを定義する必要があります。いちおうAWSがサンプルで用意してくれてたりはするようです。。。
もちろん自分で書いても構いません。メトリクスは簡単に送れるようです。

やりかた

ここでは以下の2つを試してみます。

  • AWS提供のスクリプトを利用する。ここのを利用。
  • 誰かが作ったスクリプトを利用する。ここのを利用。

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側に[Linxシステム]というメトリクス群が見えるようになります。

注意

メトリクス送信時にディメンジョンとして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は変えてね。

参考

参考にさせていただきました。ありがとうございます。

以上です。