How to monitor free disk space at Amazon EC2 with Cloud Watch

As you know Amazon AWS is a great platform to develop a Cloud Infrastructure. It supposedly covers every aspect that is needed for a whole IT infrastructure. With amazon AWS, you can implement Virtual Servers, CDN, Monitoring, Performance Boosting, Scaling on demand, Storage at low cost, Big Data and so on.

The focus of today is the interaction between virtual server instances (Amazon EC2) and the server monitoring service Cloud Watch.

Cloudwatch is a great tool that offers a lot of ready to use parameters, but one missing function is that there is no parameter wich will let you monitor the amount of free space left on a partition of your instance.

Today I will show you how to implement this check in an easy way, and setup an Alarm when free space goes down below a predefined level.

I will use a Ubuntu Based EC2 instance here.

Installation and configuration of Cloud Watch

First, login into the instance that you want to start monitoring, and install possible pending updates as follows:

apt-get update
apt-get upgrade

Then we install some libraries needed by the script we later use:

apt-get install libwww-perl libdatetime-perl

Now we go through the process of the Cloudwatch script installation:

cd /opt/
wget http://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.1.zip
unzip CloudWatchMonitoringScripts-1.2.1.zip
rm CloudWatchMonitoringScripts-1.2.1.zip
cd aws-scripts-mon

Next we have to configure the configuration file to enable authentication to AWS infrastructure:

cp awscreds.template awscreds.conf

First of all you need to get your Access key and Secret Key of Amazon AWS Console. If you don't know where to retrieve these parameters, follow these steps: after logging into the Amazon AWS console go to Services -> All AWS Services -> IAM or simply access this link https://console.aws.amazon.com/iam/home.

Now go to:

- Users - Select your desired user - Click on User Actions - Manage Access Keys - Create Acces Key

ATTENTION!!: Your secret key will no longer be available through the AWS Management Console, you will have the only copy!!

Now we have to edit the file awscreds.conf file to add our credentials.

nano awscreds.conf

In the file, we add these parameters:

AWSAccessKeyId=XXXXXXXXXXXXXXX
AWSSecretKey=YYYYYYYYYYYYYYYYYY

Now save and exit (ctrl+o).

Setup the Disk space monitor

In the next step we setup the cronjob to update the filesystem usage statistics. In my example, I've setup a check every 5 minutes, you can change this parameter as you like it.

nano /etc/cron.d/cloudwatch-monitor

And add the following code

*/5 * * * * root /opt/aws-scripts-mon/mon-put-instance-data.pl --disk-space-avail --disk-path=/ --disk-path=/var --from-cron
chmod +x /etc/cron.d/cloudwatch-monitor
/etc/init.d/cron restart

In my case, I'll monitor the root (/) filesystem and a secondo disk for /var

Now everything is setup in our instance, the last thing we need to do, is to add the monitor in AWS.

Login to the AWS Console and go to Services -> All AWS Services -> CloudWatch -> Metrics -> Linux System Metrics, if the cronjob is working right you should see two new metrics with the Metric Name "DiskSpaceAvailabe", one for / and one for /var.

Now you can create an Alarm, simply selecting the new Metric.

Share this page:

4 Comment(s)