My SaaS app WP Lookout uses Amazon Web Services for hosting. I’ve had plenty of monitoring set up using both internal and external tools notifications, and these mostly output to a combination of a dedicated Slack channel and/or a Pushover notification that goes to my mobile device.
The one thing I didn’t have in place until recently was monitoring for the health of the specific group of AWS services the app depends on. With AWS offering many services spread across many parts of the world (as illustrated in the Very Long Service Health Dashboard), I wasn’t about to start monitoring all of the AWS infrastructure just to see if my particular app was affected.
They do offer a “Personal Health Dashboard” that’s supposedly more tailored to incidents affecting my AWS account, but I find it unintuitive and confusing to use, especially when it comes to setting up notifications to external services like Slack. In my online searching I found various services and tools that supposedly integrated the PHD into more standard monitoring and alerting options, but they were also either too complicated or seemed to require additional levels of paid AWS support plans that I didn’t want to take on.
So I decided to keep things simple and use the tried and true technology for polling information about external resources: RSS!
I logged into my AWS billing console and made a list of all AWS services my app is depending on in any form. (Ideally this list would be dynamically generated but I didn’t find a tool for doing that just yet…again, the PHD probably offers this in some form, but I can’t find it if it does.)
Then, I looked up the RSS feeds that AWS offers for each of those services, using the main Service Health Dashboard. So for example, since I’m using Lambda in the Ohio (us-east-2) region, one RSS feed I care about is
Once I had my list (about 11 in total), I headed over to RSS Mix to combine all of these feeds into a single feed. I know I’m not the first person to have this idea because RSS Mix said that all of my requested AWS RSS feeds were already in their database for checking. Hooray for efficient re-use of resources.
RSS Mix spit out a customized RSS feed URL that brings together all of the RSS items from all of my feeds, in the right order.
Then, I told Slack I wanted it to subscribe to that feed and send new items to my monitoring Slack channel.
/feed subscribe http://www.rssmix.com/...
There are of course still many questionable things that have to be true for this approach to work:
- Amazon’s status health RSS feeds have to be available and accurate
- RSS Mix has to fetch those feeds often enough to be useful
- Slack has to fetch the RSS Mix feed often enough to be useful
- All of these services have to be working even when AWS is not
But I still feel better that I will hopefully have some kind of insight into the health of the group of AWS services I care about, displayed in context in my existing monitoring channel so that I can see how any incidents might be affecting WP Lookout.
If you’ve found a better (but still relatively simple) way to monitor specific AWS services for an application you care about, please share!