HumanGov: Implementing AWS Cloud Watch Synthetics for Real-Time Application URL Monitoring Integrated With CloudWatch Alarms, SNS, and AWS Chatbot to Send Real-Time Alerts on Slack.
In this hands-on project, I engaged in the advanced aspects of AWS CloudWatch, focusing on implementing CloudWatch Synthetics for real-time application URL monitoring, integrated with CloudWatch Alarms, SNS, and AWS Chatbot for immediate alerts on Slack. The goal was to establish a robust monitoring system for the HumanGov application to ensure its high availability and performance.
To get started, I initiated the creation of CloudWatch Synthetic canaries. These canaries were designed to continuously monitor the HumanGov application URLs, simulating user interactions to check for availability and response times.
Following the canaries’ setup, I integrated CloudWatch Alarms. These alarms were configured to trigger based on specific metrics such as high response time or failure rates, ensuring immediate detection of any application issues.
The alarm thresholds were carefully set to balance sensitivity and practicality, avoiding false positives while ensuring no critical issues were missed.
To enhance the response to these alarms, I integrated AWS SNS (Simple Notification Service). This allowed for the creation of notification topics that would relay any alarm state changes to designated subscribers. It was crucial to have a seamless flow of information regarding the application’s health.
The pinnacle of this project was integrating AWS Chatbot with Slack. By linking the SNS topics to AWS Chatbot, I enabled real-time alerts to be sent directly to a designated Slack channel. This ensured that the development and operations SRE team were immediately informed about any application issues, allowing for prompt action.
The project culminated in a series of rigorous tests to validate the entire setup. By simulating various application issues, I confirmed that the canaries correctly detected problems, alarms triggered as expected, and notifications were promptly sent through AWS Chatbot to Slack.
This intensive project not only reinforced my understanding of AWS CloudWatch and its integrations but also highlighted the importance of proactive monitoring in maintaining application reliability and performance in the cloud.
Below are few screenshots:
HumanGov Logo
Created HumanGov Amazon SNS notification
Synthetic Canary
Create Canary
Canary for HumanGov application for the state of California
CloudWatch Alarm
Canary monitoring the HumanGov application for the state of California
Canary can store screenshots of the appliction
AWS Chatbot
Create a new Slack channel
sre-team Slack channel
Send a test message
The Slack channel receives the test message
AWS Cloud 9 — kubectl get deployments to check the applications running.
Bring down nginx application for the state of California to test the Canary if it can detect the application is down.
HumanGov applicaiton for the state of California is down.
The Canary detects that the application is down.
The Slack channel receives the message that the HumanGov application for the state of California is down.
The Canary shows the error details.
An Alarm is activated.
Bring up the HumanGov application for the state of California
The Canary detects that the HumanGov application for the state of California is Up again and the Canary changes the status from Failed to Passed.