Posted filed under Amazon AWS.


 

Monitoring EC2 with Custom Metrics

 

You can monitor your EC2 using CloudWatch using:

  • CPU
  • Network
  • Disk
  • Status Check

Please note that RAM Utilization is a customer metric. By Default Ec2 monitors is for 5 mins interval, unless you enable detailed monitoring which will then make it 1 min intervals ( it will cost more)

 

Let’s go to google and search for Amazon EC2 Metrics and Dimensions

 

https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ec2-metricscollected.html

 

we will do a lab and we will create a new EC2 and then we do customize Cloudwatch metric for Memory.

 

Step 1) We need to create a  CloudWatch Role for EC2 so the EC2 can send some information to CloudWatch

 

Step 2) Go to IAM , and create a new Role called EC2CloudWatch

 

Step 3) Pick CoudWatchFullAccess as a Policy

 

Step 4) Now we will go and create an EC2 instance, then attached above Role to it ; then we will use some Perl Script so that we get customize Memory Utilization

 

Step 5) Before we do our lab, let’s go to google and type Monitoring Memory and Disk Metrics for EC2 Linux instance

 

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/mon-scripts.html

After we login into EC2 Linux, we will go to aparticular directory and run this Command

 

curl https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.2.zip -O

 

 

Step 6) Now I will go to AWS and start new EC2 instance ( Linux)

 

Step 7) if you login into Linux, type these

 

sudo su

yum update –y

 

Step 8) Now we will install the Perl Script : ( install perl Syslogs and Protocols)

 

sudo yum install -y perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA.x86_64

 

Step 9) Now I will make a directory that we will install all of our stuff

Type:

mkdir /cloudwatchlab

cd /cloudwatchlab

Step 10) now we will paste the curl commands from Amazon Websites

curl https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.2.zip -O

Step 11) Now we will unzip it

Step 12) If you type ls we will see it did create a directory called aws-scripts-mon

 

Now I will remove the Zip file that we downloaded

 

rm –rf CloudWatchMonitoringScripts-1.2.2.zip

 

Step 13) I go to the directory

cd aws-scripts-mon/

Then type ls and you see some perl script ( in green color)

mon-put-instance-data.pl

mon-get-instance-stats.pl

 

Step 14) Now before we push these script to Ec2 , lets go back to AWS console and look at Cloudwatch and we will see there is no Metric for Memory , but after we push above perl scripts ; we will see the Memory Utilization metrics

 

Step 15) Go to the Dashboards and create a new Dashboards and put CPU utilization ( as we see we do not Memory Utilization)

 

Call the Dashboard EC2custommetric (make sure save it)

 

As you click on EC2 and you will see these metric (as I mentioned in the beginning of Lab)

 

You can monitor your EC2 using CloudWatch using:

  • CPU
  • Network
  • Disk
  • Status Check

Step 16) Now we go back to our terminal windows and copy and paste this command from AWS websites

 

I will put this line of code to test and see if our EC2 instance can talk to CloudWatch

 

./mon-put-instance-data.pl –mem-util –verify –verbose

 

(Make sure run it at directory called aws-scripts-mon)

 

As we see we are ok Now.

 

Verification completed successfully. No actual metrics sent to CloudWatch.

 

 

Step 17) Now we will make sure we push the RAM utilization to cloud watch

 

Copy and paste

 

./mon-put-instance-data.pl –mem-used-incl-cache-buff –mem-util –mem-used –mem-avail

 

As we see it say successful

Successfully reported metrics to CloudWatch. Reference Id: 37ce5b72-48ae-11e8-800c-6be073b72519

 

Step 18) Now we do not want to do manually the above task we want to automated and we can use a concept called “crontab

 

Step 19) Go to directory etc

 

cd /etc

nano crontab

then go all the way down and type

 

*/5 * * * * root ./mon-put-instance-data.pl –mem-used-incl-cache-buff –mem-util –mem-used –mem-avail

 

Make sure in above remove the . and go to directory you had / cloudwatchlab/aws-scripts-mon

 

So correct line will be :

*/5 * * * * root /cloudwatchlab/aws-scripts-mon

/mon-put-instance-data.pl –mem-used-incl-cache-buff –mem-util –mem-used –mem-avail

 

Hint remember the directory is case sensitive

 

Exit and make sure save it.

 

Comments are closed.