CloudWatch is AWS's built-in monitoring service. Been around since 2009, so it's mature but also carries some legacy baggage. The good news: it automatically collects metrics from 70+ AWS services without you having to set up anything. The bad news: it'll cost you more than you expect if you're not careful.
Here's the reality: CloudWatch is great until you see your first bill. That innocent "let's enable detailed monitoring" checkbox? That's $0.14 per month per instance. Multiply by 100 instances and suddenly you're spending like $170/month just to see metrics every minute instead of every five minutes.
What You Actually Get (The Good and The Painful)
CloudWatch basically has four parts, and you'll hate at least two of them:
Metrics are numbers over time - CPU usage, memory, request counts, error rates. AWS sends these automatically for most services, which is nice. But custom metrics cost $0.30 per month each. That "requests per second" metric across 50 microservices? $180/month just for those numbers.
Logs are where your money disappears. CloudWatch Logs charges $0.50 per GB ingested and $0.03 per GB per month stored. Turn on debug logging in production and watch your bill explode. I've seen a single verbose microservice with Spring Boot's default logging generate 10GB of logs per day - that's $150/month in ingestion alone for one chatty service.
Alarms actually work pretty well. CloudWatch Alarms cost $0.10 per month each and can trigger notifications, scaling actions, or Lambda functions. The downside? They're delayed. Expect 5-10 minutes between when something breaks and when you get notified.
Dashboards look nice in demos but cost $3 per month each. CloudWatch Dashboards can span multiple accounts and regions, which is genuinely useful for larger organizations.
The New Fancy Features (And What They Actually Cost)
AWS keeps adding new features to CloudWatch. Some are useful, others are expensive experiments:
Application Signals launched in 2024 and automatically maps your service dependencies with distributed tracing. Sounds great until you realize it's priced per request. A busy API handling 1 million requests per day? That's around $400/month, give or take, just for the tracing. Turned it off after our demo because the CFO had questions. Also, it randomly stopped working after an agent update on our Ubuntu 22.04 boxes - just stopped collecting traces with zero error messages.
Container Insights works well for EKS, ECS, and Fargate but adds $0.01 per GB ingested on top of normal log costs. For a medium Kubernetes cluster with 50 pods generating 100GB of logs monthly, that's an extra $50/month. Still useful if you need container-level metrics.
Cross-Account Observability is actually useful for enterprises. Multi-account monitoring saves you from having to log into 20 different AWS accounts to debug issues. No extra cost, just more IAM complexity to set up.
AI Observability (Preview) is AWS's answer to the AI hype train. Specialized monitoring for AI applications including LLM performance tracking. Haven't seen pricing yet, but based on AWS's track record, prepare your wallet.
The Integration Reality
CloudWatch's best feature is that it just works with AWS services. EC2, RDS, Lambda - they all send metrics automatically without you having to configure anything. This is why most people use CloudWatch despite its limitations.
X-Ray integration adds distributed tracing but costs extra. Systems Manager lets you monitor on-premises servers with the CloudWatch agent, but good luck debugging when it stops working.
Want to send custom metrics from your application? Easy enough with a simple API call. Monitoring third-party services? That's where it gets painful - you'll need to write custom scripts or use something like Datadog instead.
CloudWatch is like that coworker who does their job but constantly pisses you off. Works fine for basic AWS stuff, but try to do anything sophisticated and you'll want to throw your laptop out the window.
Bottom line: If you're all-in on AWS and need something that "just works" for basic monitoring, CloudWatch gets the job done. If you need sophisticated observability, multi-cloud support, or predictable billing, start shopping around. Just remember that whatever you choose, monitoring your monitoring costs is probably more important than the tool itself - because at 3am when something's broken, you want answers, not a surprise bill.