Icon

Checks to see that all Route53 hosted zones have a monitor in UptimeRobot


This application will monitor route53 for new hosted zones (example.com).

It will match up the hostname to monitors from UptimeRobot. Any hostnames that are in Route53 but not being monitored will cause a Slack message to be posted.

Why?

If you have a lot of domains being added to your DNS, especially via non-automated processes, you might forget to add them to your monitoring service.

Before you begin

You should have:

  • a free Transposit account
  • a free UptimeRobot account
  • an AWS account
  • a Slack workspace where you can install applications

Setup

AWS

Create an IAM user with AmazonRoute53ReadOnlyAccess permission. Save off the Access Key ID and Secret Access Key.

UptimeRobot

Go to the settings page and get the Read-Only API Key. Save this for the authorization of the UptimeRobot data connector.

Running it

  • Fork the app https://console.transposit.com/t/transposit-sample/route53_monitoring_check (find the Fork button at the top of the editor view).
  • Navigate to Code and review the operations. You may want to look closely at the run_it operation and in particular the text in the text parameter. This is the message that will be sent when a hostname is not monitored.
  • Navigate to Deploy > Production Keys and add keys for all the data connectors using the values you saved off during setup. The Slack key will require you to go through the OAuth process.
  • Navigate to Deploy > Environment Variables and fill out the environment variable with the Slack channel to which you want to post warnings.
  • Navigate to Deploy > Scheduled Tasks and create a new scheduled task. Run the run_it operation once an hour, using a cron schedule like: 37 19 * ? * *. Or run it more often if you'd like.

Go further

  • Make it work with cnames in your hosted zones. Hint, you'll have to use the list_resource_record_sets API call.
  • Cache hostname values using the stash to avoid throttling when querying Route53.
  • Ask the user if they'd like to add a monitor for each of the missing hostnames. Use the createMonitor UptimeRobot API.
  • Text the user using the Twilio API--missing monitors are important!