CentOS6.6にCloudWatchを設定する。
CloudWatchデフォルトで監視できる項目は、CPU使用率、ネットワーク帯域などOSに依存しない項目のみとなっていて、Memory、DISK、SWAP、プロセスなどOSに依存する項目は、インスタンスにCloudWatchCommandLineTool / CloudWatchモニタリングスクリプトをインストールしてメトリクスを取得する必要があります。
- CloudWatchCommandLineToolのインストール
- LinuxベースのAmazon CloudWatch モニタリングスクリプトをインストール
- クレデンシャル、監視スクリプト、監視対象の設定
CloudWatchCommandLineToolのインストール
CloudWatchCommandLineToolの前提としてJavaがインストールされていることを確認します。
インストールディレクトリは/usr/local/src
としています。
# /usr/java/latest/bin/java -version java version "1.8.0_45" Java(TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
CloudWatchCommandLineTool SDKをダウンロードする。
# cd /usr/local/src # curl -O curl -O http://ec2-downloads.s3.amazonaws.com/CloudWatch-2010-08-01.zip # unzip CloudWatch-2010-08-01.zip
CloudWatchモニタリングスクリプトのインストール
依存パッケージをインストールします。
# yum -y install perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA # yum -y install perl-CPAN perl-libwww-perl openssl-devel # yum -y install libyaml
足りないモジュールをCPANを使ってインストールする。色々聞かれますが、とりあえずすべてyesで。
# perl -MCPAN -e shell cpan[1]> install Bundle::LWP6 LWP cpan[2]> install YAML cpan[3]> install Crypt::SSLeay
CloudWatchモニタリングスクリプトをインストールします。
# cd /usr/local/src/CloudWatch-1.0.20.0/ # curl -O http://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.1.zip # unzip ./CloudWatchMonitoringScripts-1.2.1.zip Archive: ./CloudWatchMonitoringScripts-1.2.1.zip extracting: aws-scripts-mon/awscreds.template inflating: aws-scripts-mon/AwsSignatureV4.pm inflating: aws-scripts-mon/CloudWatchClient.pm inflating: aws-scripts-mon/LICENSE.txt inflating: aws-scripts-mon/mon-get-instance-stats.pl inflating: aws-scripts-mon/mon-put-instance-data.pl inflating: aws-scripts-mon/NOTICE.txt
/usr/local/src/CloudWatch-1.0.20.0/aws-scripts-mon
にインストールされました。
Aws Credentialを設定する
AWS CLIで利用するクレデンシャルを設定します。インスタンスにiamを設定している場合は、そちらの方法を優先させます。
クレデンシャル記述のテンプレートを確認。CLIツールと同じですね。
# cat CloudWatch-1.0.20.0/credential-file-path.template AWSAccessKeyId=<Write your AWS access ID> AWSSecretKey=<Write your AWS secret key>
クレデンシャルを設定します。
# mkdir -p /etc/aws # cp -p ./CloudWatch-1.0.20.0/credential-file-path.template /etc/aws/awscreds.conf # vim /etc/aws/awscreds.conf
監視スクリプトを設置する
プロセスの存在性、リソースをClowdWatchに登録するスクリプトを設置します。
# vim /usr/bin/check_cw_stats ---- #!/bin/bash # Parameter export AWS_CLOUDWATCH_HOME=/usr/local/src/CloudWatch-1.0.20.0 export AWS_CREDENTIAL_FILE=/etc/aws/awscreds.conf export AWS_MONITOR_PROCESSLIST=/etc/aws/mon_pro_list export AWS_CLOUDWATCH_URL=https://monitoring.amazonaws.com export PATH=$AWS_CLOUDWATCH_HOME/bin:$PATH export JAVA_HOME=/usr/java/default export INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id) InstanceId=$INSTANCE_ID ### Memory & Disk util Check perl ${AWS_CLOUDWATCH_HOME}/aws-scripts-mon/mon-put-instance-data.pl --mem-util --disk-space-util --disk-path=/ --aws-credential-file=${AWS_CREDENTIAL_FILE} if [ $? != 0 ]; then logger -p user.err -t "batch[${$}][Error]" "${0##*/} Memory & Disk util Check execution failed." fi ### Process Check while read line do PRO_NAME=`echo $line |awk -F"," '{print $1}'` PRO_GREP_STRINGS=`echo $line |awk -F"," '{print $2}'` PRO_COUNT=`ps ax| grep "${PRO_GREP_STRINGS}" | grep -v grep | wc -l` mon-put-data --metric-name "${PRO_NAME}" --namespace "System/Linux" --dimensions "InstanceId=$InstanceId" --value "$PRO_COUNT" --unit "Count" --region ap-northeast-1 done < ${AWS_MONITOR_PROCESSLIST} ---
監視対象のプロセスを定義します。
vim /etc/aws/mon_pro_list ---- crond,crond sshd,/usr/sbin/ssh httpd,/usr/sbin/httpd postfix,/usr/libexec/postfix/master
スクリプトに権限設定する。
# chmod +x /usr/bin/check_cw_stats
スクリプトを実行してみる。
# /usr/bin/check_cw_stats Successfully reported metrics to CloudWatch. Reference Id: fba01c9f-e4d1-11e5-843f-87deeeda5ed9
成功。ClowdWatchコンソールから登録されていることを確認する。
最後にスクリプトをcronで設定して、定期的にCloudWatchに登録するようにしたらおしまい。
# crontab -e ---- */5 * * * * /usr/bin/check_cw_stats
それでは。m(__)m