CentOS
AWS
EC2
CloudWatch

夏なので、AWSのCentOS7でCloudWatchでディスク容量監視、始めました

夏なので、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で正常に値が確認できれば完了!
お疲れ様でした。