Monitoring in AWS — Let’s cloud!
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:
- 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.
- 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.
- 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.
- 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.
- 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 ;)!