Amazon CloudWatchのメトリクスとアラームをCLIで設定する
はじめに
Amazon CloudWatchを利用したリソースのモニタリングを設定する必要があったのですが、サーバが多くCloudFormationも利用していない環境のため、なるべく楽に設定できる方法を調べました。
池さんにAWS Systems Managerをおすすめされたのですが、使い方がいまいちわからず、あきらめてAWS CLIで設定することにしました。
ここではメモリ利用率、CPU利用率、ディスク利用率の3つをモニタリングしてみます。
池さんにAWS Systems Managerをおすすめされたのですが、使い方がいまいちわからず、あきらめてAWS CLIで設定することにしました。
ここではメモリ利用率、CPU利用率、ディスク利用率の3つをモニタリングしてみます。
手順
CPU使用率の監視はCloudWatchにもとから用意されていますが、メモリ、ディスク利用率はOSが管理しているため、AWS標準では監視項目は用意されていません。
実現のためにサーバ内部からCloudWatchに状況を送信する必要があり、そのためのツール「CloudWatch Monitoring Scripts」がAmazonから提供されています。まずはインストールしてみます。
OSはLinuxです。
実現のためにサーバ内部からCloudWatchに状況を送信する必要があり、そのためのツール「CloudWatch Monitoring Scripts」がAmazonから提供されています。まずはインストールしてみます。
OSはLinuxです。
CloudWatch Monitoring Scriptsのインストール
基本的にAWSのドキュメントに従います。
#sudo yum install -y perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA.x86_64 # mkdir /usr/local/cloudwatch # cd /usr/local/cloudwatch # curl https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.2.zip -O # unzip CloudWatchMonitoringScripts-1.2.1.zip # rm CloudWatchMonitoringScripts-1.2.1.zip # cd aws-scripts-mon # cp awscreds.template awscreds.conf # vi awscreds.conf # mkdir /var/log/cloudwatch/
awscreds.conf
AWSAccessKeyId=【記入】 AWSSecretKey=【記入】
テスト実行します
/usr/local/cloudwatch/aws-scripts-mon/mon-put-instance-data.pl --mem-util --mem-used --mem-avail --disk-space-util --disk-path=/以下のように表示されれば成功。CloudWatchにデータを送信しました。
Successfully reported metrics to CloudWatch. Reference Id:crontabに登録します
# crontab -e
*/5 * * * * /usr/local/cloudwatch/aws-scripts-mon/mon-put-instance-data.pl --mem-util --mem-used --mem-avail --disk-space-util --disk-path=/ --from-cron
CLIでメトリクスとアラームを設定
コマンド長いですが、がんばって実行します。
# aws cloudwatch put-metric-alarm –alarm-name ” EC2 CPUUtilization” –namespace AWS/EC2 –metric-name CPUUtilization –dimensions “Name=InstanceId,Value=i-9999999999999999” –period 300 –statistic Average –threshold 80 –comparison-operator GreaterThanOrEqualToThreshold –evaluation-periods 1 –alarm-actions “arn:aws:sns:ap-northeast-1:999999999999:test” –ok-actions “arn:aws:sns:ap-northeast-1:999999999999:test”
できました!あとは必要分登録して完了です。
各パラメータの意味はこんな感じです。
–alarm-name
アラーム名。AWSコンソールに表示されます。
–namespace
AWSで定義されている名前空間。AWS の名前空間を参照
–metric-name
メトリクス名。Amazon CloudWatch メトリクスとディメンションのリファレンスを参照
–dimensions
ターゲットの指定。Amazon CloudWatch メトリクスとディメンションのリファレンスを参照
–period
データを算出する範囲
–statistic
Maximum,Minimum,Average,Sum,SampleCount
–threshold
しきい値
–comparison-operator
< > <= >= =の指定。
–evaluation-periods
データを算出する範囲中に、しきい値を超えた回数
–alarm-actions
アラーム発生時のアクション。Amazon Simple Notification Service (SNS) でメールを送るなど。
–ok-actions
ステータスがOKに変化したときのアクション。–alarm-actionsと同一
アラーム名。AWSコンソールに表示されます。
–namespace
AWSで定義されている名前空間。AWS の名前空間を参照
–metric-name
メトリクス名。Amazon CloudWatch メトリクスとディメンションのリファレンスを参照
–dimensions
ターゲットの指定。Amazon CloudWatch メトリクスとディメンションのリファレンスを参照
–period
データを算出する範囲
–statistic
Maximum,Minimum,Average,Sum,SampleCount
–threshold
しきい値
–comparison-operator
< > <= >= =の指定。
–evaluation-periods
データを算出する範囲中に、しきい値を超えた回数
–alarm-actions
アラーム発生時のアクション。Amazon Simple Notification Service (SNS) でメールを送るなど。
–ok-actions
ステータスがOKに変化したときのアクション。–alarm-actionsと同一
以上