Implementing Uptime Monitoring for my Static Sites
2021-10-02 14:43:00 -0500

I use Cloudflare to manage my SSL certs, DNS configuration, and redirects. And to be completely honest, DNS/SSL is one area that I’m not super familiar with, and it always seemed a bit magical to me. So, a couple of weeks ago, when I navigated to one of my websites (such as this one), and I immediately saw an error, directly from Cloudflare, I realized there was an error in my SSL settings. The error page looked something like this:

I freaked out for a minute. What changed? What did I do? And then I remembered. A few weeks ago, when Cloudflare sent me an email which said that I should change my domains to use Full (strict) as my SSL/TLS mode, versus Flexible or Full, I said “sure”. After briefly looking over the suggested change, I set all of my domains to use Full (strict).

What I didn’t catch was this:

This means that for Full (strict) to work, not only does the domain need to have an SSL certificate, but my server (and my site is currently hosted on GitHub Pages, so that would be GitHub’s server) would need a trusted private certificate… and my site does not have one. So turning on Full (strict) immediately broke my site. And setting it back to Full fixed it right away.

But what this taught me was: my site was down for almost a week before I noticed anything. Either my visitors didn’t feel like telling me (or didn’t know how because my site was down), or I didn’t have any visitors during that time frame. Either way, my site was down for a long time, I didn’t know it, and I wouldn’t have realized it had I not wanted to look at something.

So, I need to make a change in order to avoid this happening again. Downtime happens… it is sort of inevitable. The thing is that I need to be made aware of when downtime happens or is happening so that I can try to fix it right away. Static sites generally don’t have a lot of downtime because there’s no backend, but they’re still liable to internet issues and DNS/SSL issues (as shown above). So, I went on an experimental journey to find a 3rd party service to provide some simple uptime monitoring.

CloudRadar does a beautiful job of explaining what uptime monitoring is here. The gist is this (straight from that link):

Uptime Monitoring checks the availability and the response time of your website and publicly accessible infrastructure. An effective monitoring solution will alert you of a problem as soon as it occurs - wherever you are.

So, I needed to find a service that would ping my website (over HTTPS) regularly (preferrably once a minute), and then text me, send my phone a notification, or some other alternative when it goes down for a couple of consecutive checks. It’d be awesome if it also notified me when my website came back up. I started by just googling for some uptime monitoring services. I got some pretty common ones like:

I could keep listing off these services—there’s a lot of them. I compared several of them based on pricing (I try very hard to make my entire website free except for my domain), uptime check frequency (how often they ping my monitoring checks, commonly ranging from once a minute to once every five minutes), amount of uptime checks (I’d like to have at least ten checks, preferrably more), and integration options (SMS notifications, push notifications to mobile devices, etc).

I ended up selecting two to trial: BetterUptime and Freshping (that’s by a company called Freshworks).

Overall, I really liked the look and feel of BetterUptime more than Freshping. The UI seemed more modern, it checked from multiple locations around the world to verify downtime was real downtime, and it was fast at alerting me when I tested downtime. However, BetterUptime could only check my websites every three minutes, which was too slow for my preference. The free plan also didn’t notify my phone app via push notification, which is my ideal situation. I found a way around this by using their integration with Slack, and then letting Slack alert me via push notifications from Slack straight to my phone. The free plan only allowed 10 monitors total, and they turned each downtime into a full incident, which was unnecessary for me… I want a ping service, not an incident management service. Their emails were fast though.

But Freshping filled in BetterUptime’s gaps. With Freshping, they can check my websites once a minute. Freshping gives me 50 monitors, versus BetterUptime’s limit of 10. Freshping also has the ability to pause monitors, and gives me a full report with data, metrics, and availability percentages. Freshping’s free plan still doesn’t have push notifications, but my Slack integration solution worked as well for Freshping as it did for BetterUptime. Although I don’t like the UI of Freshping quite as much as BetterUptime, I decided to fully commit to Freshping (for now at least) by deleting my BetterUptime account. And so far, Freshping has given me everything I wanted in my uptime monitoring service.

After setting Freshping up with several of my websites, I now feel 10x more confident that when downtime happens, I’ll know about it. Throughout all of my testing, and some real downtime that happened during maintenance yesterday, I knew the downtime was happening. In fact, Freshping notified me multiple times as the downtime continued, just in case I missed it.

I’m not suggesting that you use Freshping or BetterUptime. What I found through my research was that all of the different uptime monitoring services have different benefits. Some are cheaper, some offer lots of features, but have less data on the reporting side. BetterUptime turned every downtime event into a full incident, which could be helpful if the team had more than one person. What I simply suggest is that every team (even teams of one) use an uptime monitoring service. There’s free options, and they’re simple to set up. The peace of mind is worth the effort to do some research.

Here’s some places to get started:

Good luck!