夏なので、AWSのCentOS7でCloudWatchでディスク容量監視、始めました
夏なので始めました。以下は手順です。
AWSのCloudWatchにはディスク容量を監視するメトリクスは標準では無いので、カスタムメトリクスを設定する必要があります。
参考
ここの内容を簡単にしただけです。少し画面キャプチャとかも加えました。
CloudWatch モニタリングスクリプトの導入
必要なパッケージのインストールを行う
sudo yum install perl-DateTime perl-CPAN perl-Net-SSLeay perl-IO-Socket-SSL perl-Digest-SHA gcc -y
sudo yum install zip unzip
次にSUDOでCPANを実行。
sudo cpan
次のプロンプトが表示されるまで、各プロンプトで Enter キーを押す。
cpan[1]>
以下のコマンドでモジュールをインストールする。
cpan[1]> install YAML
cpan[1]> install LWP::Protocol::https
cpan[1]> install Sys::Syslog
cpan[1]> install Switch
モニタリングスクリプトのダウンロード、インストール
任意のスクリプト保存用フォルダを作成し、ダウンロード。
mkdir cloudWatchScript
cd cloudWatchScript/
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
認証情報ファイルで AWS 認証情報を指定する。
まず、次のようにモニタリングスクリプトに含まれている awscreds.template ファイルを awscreds.conf にコピー。
cp awscreds.template awscreds.conf
作成したファイルに、アクセスキーIDとシークレットアクセスキーを入力。
vi awscreds.conf
AWSAccessKeyId=my-access-key-id
AWSSecretKey=my-secret-access-key
以上で準備は完了。
動作テスト、CloudWatchでの確認
オプションの--veryfy
と--verbose
を用いて、正常にインストールされているかを確認することができる。
CloudWatch にデータを投入しないでテストを行うためには、以下のコマンドを入力
./mon-put-instance-data.pl --mem-util --verify --verbose
公式ページには結果は書かれていないが、下記のような実行結果が得られれば、OK
MemoryUtilization: 4.24024510254427 (Percent)
Using AWS credentials file <./awscreds.conf>
Endpoint: https://monitoring.ap-northeast-1.amazonaws.com
Payload: {"MetricData":[{"Timestamp":1528942171,"Dimensions":[{"Value":"i-09c2c31fef1692c33","Name":"InstanceId"}],"Value":4.24024510254427,"Unit":"Percent","MetricName":"MemoryUtilization"}],"Namespace":"System/Linux","__type":"com.amazonaws.cloudwatch.v2010_08_01#PutMetricDataInput"}
Verification completed successfully. No actual metrics sent to CloudWatch.
試しに以下のコマンドで、実際にCloudWatchにデータを送信してみる。送信しているのはディスクの利用率。
./mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --disk-space-util --disk-path=/
AWSの管理画面にて、以下の画面を確認(CouldWatch->メトリクス->全てのメトリクス->Linux システム)
この中のFilesystem, InstanceId, MountPath
という項目があるのでそれをクリック。
その中のDiskSpaceUtilization
という名前のメトリクスにディスク利用率が記録されているのがわかる。

df
の実行結果と比較しても、おおよそ間違いないことがわかる。
(CloudWatchへの記録とdfの実行に少し間が空いたので厳密にあってはいないけど…)
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/xvda1 52416860 7559496 44857364 15% /
cronへの登録
以下の内容をCronに追加(パスは適宜変更)
*/5 * * * * ~/CoudWatchScript/aws-scripts-monaws-scripts-mon/mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --disk-space-util --disk-path=/ --from-cron
少したってからClousWatchで正常に値が確認できれば完了!
お疲れ様でした。