Hands-on AWS monitoring, observability, and alerting infrastructure built with Terraform. Includes CloudWatch metrics, dashboards, alarms, GuardDuty alerts, and automated deployments.
This is a real-world observability setup I built from scratch, covering:
- EC2 Monitoring: CloudWatch metrics & CPU utilization alarms.
- Centralized Logging: CloudWatch Logs & Insights for troubleshooting.
- Security Alerts: GuardDuty findings integrated with SNS notifications.
- Terraform Automation: Reproducible infrastructure deployments via IaC.
I faced real challenges like SNS permissions, alarm threshold tuning, and Terraform state conflicts, which I solved to make this setup fully functional.
-
CloudWatch Metrics & Alarms
- Track EC2 CPU, memory, and disk metrics.
- Configure custom alarms triggering SNS notifications.
-
Centralized Logging
- Aggregate EC2 application logs to CloudWatch Logs.
- Analyze logs using CloudWatch Logs Insights queries.
-
Security Monitoring
- Detect anomalies via GuardDuty.
- Automatic alerts sent through SNS.
-
Terraform Automation
- Deploy all monitoring infrastructure with IaC.
- CI/CD-ready workflows in
.github/workflows/terraform-apply.yml.
aws_monitoring_observability/ ├─ screenshots/ # Dashboards, alerts, Terraform outputs ├─ .github/workflows/ # Terraform automation workflows ├─ main.tf # Terraform resources (CloudWatch, SNS, GuardDuty) ├─ outputs.tf # Terraform outputs ├─ variables.tf # Terraform variables ├─ provider.tf # AWS provider configuration ├─ terraform.tfvars.example.txt # Example input variables └─ README.md # Project overview and instructions
yaml Copy code
Clone the repository:
git clone https://github.com/charles-bucher/aws_monitoring_observability.git
cd aws_monitoring_observability
Deploy infrastructure with Terraform:
bash
Copy code
terraform init
terraform plan
terraform apply
Explore screenshots/ to see dashboard outputs, alerts, and deployment confirmation.
Review .github/workflows/terraform-apply.yml for automated deployments.
Experiment with metrics, alarms, and GuardDuty findings in your AWS account.
🎯 Goals & Learning Outcomes
Hands-on AWS monitoring and observability experience.
Built real-world CloudWatch dashboards, alarms, and alerts.
Solved practical issues: SNS permissions, Terraform state management.
Automated infrastructure deployments using Terraform and GitHub Actions.
📸 Screenshots
CPU Metrics
<img src="screenshots/aws_cpu.png" alt="CPU Metrics" width="400"/>
AWS Alerts
<img src="screenshots/aws_alerts.png" alt="AWS Alerts" width="400"/>
Terraform Deployment
<img src="screenshots/aws_terraform.png" alt="Terraform Deployment" width="400"/>
Terraform Apply Confirm
<img src="screenshots/aws_terraform_confirm.png" alt="Terraform Apply Confirm" width="400"/>
AWS Apply Confirm
<img src="screenshots/01_aws_confirm.png" alt="AWS Confirm" width="400"/>
💡 Notes
Fully compatible with AWS Free Tier.
Ideal for portfolio demonstration, learning, and experimentation.
Contributions welcome — PRs are open!
🔗 References
AWS CloudWatch Documentation
AWS GuardDuty Documentation
Terraform Documentation
Made with 💻 by Charles Bucher | GitHub: @charles-bucher