Comprehensive Monitoring, Instrumentation and Logging for a Dynamic Site - huit/cloud-boot-camp GitHub Wiki
Description
This exercise challenges you to develop a logging and monitoring solution for a deployed application in AWS. You'll need to design how logs and events are collected and aggregated, and the way that alerts are escalated, based on what criteria, and develop an approach that implements that workflow. In addition, consider incorporating instrumentation of the application and AWS services into the solution.
Features of Solution
The solution will aggregate runtime data from a target deployed application, but will be reusable to a wide range of similar applications or services deployed in AWS.
Architectural features
- Use AWS native service where feasible.
- The solution will collect data from only the deployed service.
- The solution will be extensible, and integrate with external tools and services such as Nagios, PagerDuty, Pingdom, etc.
- The solution will be fault tolerant, or at a minimum highly available.
- The solution will be as reusable and generalizable as is reasonably feasible (i.e. don't hardcode stuff about a specific site or platform).
Deployment features
- The solution should be deployed from a single command.
- The solution will be separate from the deployed application, and can be deployed independently.
- Separate build, release, and run stages where possible.
Documentation
- All code and artifacts should be put into a single GitHub repository, unless pulling in code from external sources.
- Document your code layout and build process
- Diagram architecture and process workflows.
- Document how to deploy, update, and destroy the running service using CloudFormation or similar orchestration.
- Document how to target a specified service, and that service alone, including potential changes needed in the deployment of the target service.
- Ensure that sensitive data and configs are kept separate from code and artifacts, in keeping with 12 Factor standards.
- Document how to integrate into local services, or external third-party products where relevant.