今更感がありますが、備忘録として書いています。
では早速、下記の公式マニュアルにある「Red Hat Enterprise Linux 6.6」の手順を参考に設定していきます。
(尚、対象のOSはCentOS6です。)
Amazon EC2 Linux インスタンスのメモリとディスクのメトリックスのモニタリング
EC2(OS)環境の準備
必要パッケージのインストール
$ sudo yum install zip unzip -y $ sudo yum install perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA -y
今回利用しているインスタンスの元のAMIは、CentOS6を独自に最小インストール構成の状態から作成したものなので、これだけでは不十分でした。
その為、以下を追加でインストールしました。
$ sudo yum -y install perl-CPAN gcc perl-libwww-perl libyaml-devel openssl-devel
Perlモジュールのインストール
次に、必要なPerlモジュールをインストールします。
色々聞かれるので、全てyesで応えるようにしています。
$ perl -MCPAN -e shell cpan> o conf prerequisites_policy follow cpan> o conf commit cpan> install Bundle::LWP6 LWP cpan> install YAML cpan> install Crypt::SSLeay
これで環境の準備が整いました。
環境によっては`export LANG=C`しないと、Crypt::SSLeayのインストール時のテストでエラーになるかもしれません。
メモリ使用率が取れるようになったCloudWatchのスクリプトを導入してみた。
IAM設定
ドキュメントにある通り、以下のポリシーのIAM RoleをEC2インスタンスに付与しています。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1455254031000", "Effect": "Allow", "Action": [ "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics", "cloudwatch:PutMetricData", "ec2:DescribeTags" ], "Resource": [ "*" ] } ] }
モニタリングスクリプトの設置
Amazonが公式で公開しているモニタリングスクリプトをサーバに設置します。
$ curl http://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.1.zip -O $ unzip CloudWatchMonitoringScripts-1.2.1.zip $ rm CloudWatchMonitoringScripts-1.2.1.zip $ cd aws-scripts-mon
テストラン
問題無ければ以下のような応答が返ってきます。
$ ./mon-put-instance-data.pl --mem-util --verify --verbose MemoryUtilization: 13.3129236475253 (Percent) No credential methods are specified. Trying default IAM role. Using IAM role <myrole> Endpoint: https://monitoring.ap-northeast-1.amazonaws.com Payload: {"MetricData":[{"Timestamp":1455261544,"Dimensions":[{"Value":"i-xxxxxxxxxxxxxxxxx","Name":"InstanceId"}],"Value":13.3129236475253,"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-util --mem-used --mem-avail
正常に送れていれば下記のようにLinuxシステムメトリックス
という表示が出ています。
ここからメモリやディスク関連のグラフが見られれば導入完了です。
後は、またまたドキュメント通り、下記のような内容でcronに登録してあげれば完了です。
*/5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --mem-util --disk-space-util --disk-path=/ --from-cron
他にもいくつかの使い方がドキュメントに載っていますので、必要に応じて使い分けてもらえばと思います。
同じAMIからインスタンスを作った時の注意点
公式ドキュメントに書かれている通り、このスクリプトは、インスタンスのメタデータをローカルにキャッシュするので、AMIからインスタンスを複製するような場合は、キャッシュを削除する必要があります。
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/mon-scripts.html
キャッシュTTLを過ぎると、新しいデータを取得するとのことですが、私の環境では1週間以上経過しても更新されなかったので、明示的に削除しました。
削除は、rm /var/tmp/aws-mon/instance-id
で該当ファイルを消すだけです。
このファイルには、インスタンスIDが格納されています。
cat /var/tmp/aws-mon/instance-id i-xxxxxxxxxxxxxxxxx
もし、スクリプトが実行されているインスタンスでAMIを作った場合、そのAMIから起動したインスタンスの/var/tmp/aws-mon/instance-id
には、AMIを取得したインスタンスIDが入ってしまっているので、cloudwatch上でも、元のインスタンスIDとして認識されてしまいます。
忘れずに消すようにしましょう!
関連記事:
- hydraをAWSのubuntuにインストールする
セキュリティ系ツールのHydraと、Hydraで使うパスワードファイルを作成してくれるcrunchコ… - EPELリポジトリを使う方法
よく忘れてしまうのでメモとして残します。対象はCentOS6になります。 インストール方法 [cod… - CentOSにAWS CLIをインストールする
AWS CLIのインストール方法についてです。 よく忘れてしまうので、手順として記載しておこうと思い…


