Monitoring in AWS — Let’s cloud!
Tags: aws, performance, logging
Published: 2020-08-21 18:56:34


Recently while debugging some performance related issues, I had to monitor the AWS resources that my application was using & a part of it involved checking out the cloudwatch alarms & metrics. While doing so I went deep into all the clouds — there’s cloudwatch, there’s cloudtrail, there’s config. What’s the purpose of these different clouds for monitoring ?
Whatever you build on AWS, you will have to monitor it and also do some sort of logging & auditing so that you can get an idea of how your systems are performing.
# AWS CloudWatch:
It’s a monitoring service for AWS resources and applications. Its main job is to **monitor the performance & resources**. How is the performance affected based on certain actions of the user ? — Cloudwatch can tell you that. There are a bunch of things in cloudwatch:
###### 1. Cloudwatch Metrics: 
It provides metrics for every service in AWS. For example CPUUtilization, network etc. There are up to 10 dimensions per metric. Dimensions is basically an attribute of a metric (eg — environment, instanceId etc). Metrics also have timestamps. We can create cloudwatch dashboards of these metrics. You can also define & send your own **Custom Metrics** to cloudwatch using the putMetricData api call.
###### 2. CloudWatch Dashboards:
It consists of a bunch of graphs from same or different regions. It gives you a good visual representation. You can also set automatic refresh of the dashboard. You can choose any timeframe you want eg — last 6hrs , last 30 mins etc.
###### 3. CloudWatch Logs: 
Cloudwatch can get logs from your application or various AWS resources eg: API Gateway, Route53, AWS lambda etc. Cloudwatch logs can also be sent to S3 or elastic search etc for further analytics.
###### 4. CloudWatch Alarms: 
They are used to trigger notifications for any metric. eg messages on your SQS queue exceeded a certain limit etc. These alarms have 3 states OK, INSUFFICIENT_DATA, ALARM.
###### 5. CloudWatch Events: 
It is a stream of system events describing changes in your AWS resources.

# AWS CloudTrail:
It deals with **API level monitoring**. When user logs into AWS and performs any actions — all that can be monitored using cloudtrail. So it has all the info of **who made what changes** eg — I created new ec2 instance or I created a new queue etc all that info is monitored using cloudtrail. If you see that a resource is deleted in AWS — check your cloudtrail first. Cloudtrail is enabled by default.

# AWS Config:
It records config level changes of your AWS resources. It also notifies if any changes are made to your account.


Ummm…there are actually two more clouds left — **Cloudformation & Cloudfront !!** But they have nothing to do with monitoring.
###### CloudFormation:
It is just a template that will spin up all the AWS resources you need effortlessly. You just define whatever you want in that template & AWS magically creates it for you! https://aws.amazon.com/cloudformation/
###### CloudFront: 
It’s just a content delivery network for low latency distribution of contents with high data transfer speeds. https://aws.amazon.com/cloudfront/

## Have fun clouding ;)!

Also in medium on our blog: https://medium.com/just2girlsintech/monitoring-in-aws-lets-cloud-2c122979cf2d