LoginSignup
0
0

More than 3 years have passed since last update.

EC2にディスク監視やメモリ監視を追加しよう(CloudWatchMonitoringScripts)

Posted at

概要

デフォルトのCloudWatchだと取れないメトリックがあります。
たまに調べたりするので、ここに書いておこう。

基本的には下記を参考にすると良いです。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/mon-scripts.html

IAMロールを用意しよう

EC2からCloudWatchを使ったりするために、下記のようなポリシーのついたIAMロールを用意しましょう。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData",
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:ListMetrics",
                "ec2:DescribeTags"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

EC2にIAMロールを設定しましょう

昔は起動中にIAMロールを変更できなかったんですが、今はAWSコンソールから起動中でも変更できます。

今回はUbuntu

必要なパッケージをインストールします。

sudo apt-get update
sudo apt-get install unzip
sudo apt-get install libwww-perl libdatetime-perl

AWS提供の監視スクリプトをダウンロードします

最新バージョンは下記のURLを確認してください。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/mon-scripts.html

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

そうすると下記のようなファイルができます。

  • CloudWatchClient.pm – 共通 Perl モジュール。これを使って、他のスクリプトから簡単に Amazon CloudWatch を呼び出すことができます。
  • mon-put-instance-data.pl – Amazon EC2 インスタンス (メモリ、スワップ、ディスクスペースの使用状況) のシステムメトリクスを収集し、Amazon CloudWatch に送信します。
  • mon-get-instance-stats.pl – Amazon CloudWatch に問い合わせて、このスクリプトが実行される EC2 インスタンスの最新の使用状況統計を表示します。
  • awscreds.template – アクセスキー ID とシークレットアクセスキーを保存する AWS 認証情報のファイルテンプレートです。

動作確認

解凍してできたディレクトリの中で、下記のようにすると動くかの確認ができます。

$ ./mon-put-instance-data.pl --mem-util --verify --verbose
MemoryUtilization: 53.4314735431687 (Percent)
No credential methods are specified. Trying default IAM role.
Using IAM role <HogeHogeRole>
Endpoint: https://monitoring.ap-northeast-1.amazonaws.com
Payload: {"__type":"com.amazonaws.cloudwatch.v2010_08_01#PutMetricDataInput","MetricData":[{"Unit":"Percent","MetricName":"MemoryUtilization","Value":53.4314735431687,"Dimensions":[{"Name":"InstanceId","Value":"i-hogehoge"}],"Timestamp":159184XXXXX}],"Namespace":"System/Linux"}

Verification completed successfully. No actual metrics sent to CloudWatch.

cronに設定しよう

cronに設定していきましょう

$ crontab -e

# 最後の行に書きを付け足します。(メモリ使用量、ディスク使用量を監視してます。メモリではcache、buffもusedに計上します)
*/5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --disk-space-util --disk-path=/ --from-cron

おわり

多分これで、CloudWatchにディスクの情報とメモリの情報が送られるようになりました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0