MMS • RSS
Steve Elliott wanted a simple, cheap way to monitor uptime for his websites. He found most off-the-shelf tooling to either be too complex or too costly. This lead him to build Checkless, a serverless tool that can monitor sites for uptime via ping-based checks and depending on your usage can potentially be free to use. Elliott has provided a detailed step-by-step guide for installing and configuring Checkless on his blog.
InfoQ: What is Checkless?
Steve Elliott: Checkless is a simple tool to help you make sure that your site is working, and if it isn’t notify you immediately. Designed to do a simple job, and do it cheaply (if not for free), it started off as a basic, personal project, but several people on Twitter showed interest so I wanted to make it easier to use. The interest also revealed there was more demand for doing this on Serverless platforms than I had anticipated.
InfoQ: What prompted you to create Checkless when there are already tools that perform ping-based checks?
Elliott: I needed to monitor some personal websites, preferably without adding additional cost. I had used a range of commercial uptime monitors and open source monitoring platforms before, but all those required you to pay for them as a service or pay for infrastructure.
For my requirement to cheaply (preferably free) check that my sites were up, those tools all seemed excessive. Knowing that serverless can provide a cost effective way of executing code for only the time required, it seemed like a good match.
InfoQ: What challenges did you find implementing Checkless as a Serverless tool?
Elliott: The biggest challenge by far was implementing multi-region support. I used the serverless framework to begin with and it was a massive help with deployment but it is geared to support a single region – or deploying the same application across multiple regions. I built a CLI tool for Checkless, this takes a YAML configuration file and expands it out into one or more serverless configuration files. Using a tool such as CircleCI or Travis you can then automatically deploy the site checks.
Past the multi region challenges, Checkless was very much a learning experience with serverless programming and AWS Lambda. It can be challenging to start off in terms of what the best approach is or how to best structure code make sure you minimise cost. A lot of this was solved with trial and error, but certain aspects still seem harder than they should be – primarily testing and monitoring.
InfoQ: What limitations or feature gaps does Checkless have?
Elliott: Checkless is designed to be as simple as possible, so it’s alerting is quite simplistic. It currently supports notifying via email and Slack. Using either you can set up some reasonable notifications, but for more flexibility, sending to webhooks would allow notifications via services such as Pager Duty or VictorOps.
Past this Checkless currently only matches HTTP status codes. To cover more use cases it’d be great to expand this to checking the response body of the site checks as well. My main concern is how to introduce these features without increasing configuration/setup complexity.
InfoQ: Are you looking for community contributions? Where would be a good place for someone to start contributing?
Elliott: I would definitely love to have others get involved, so far it’s been a personal project, but if anyone wanted to contribute then I’d encourage them to get in contact via Twitter or Github. It’d be a great help to hear what other people’s requirements are, whether Checkless works for them, or if there are missing features. A lot of the work I’ve done with the CLI was to make the experience of setting Checkless up much easier, so feedback on that would also be greatly appreciated.
InfoQ: What is on the roadmap for future improvements and features?
Elliott: My chief goal is that Checkless stays simple and cheap/free to use. However, with that in mind, I do have some features I’d like to see added:
- More options for wiring up notification channels
- Asserting the content of the checks and not just the response status code
- Multi-cloud provider support: this would allow for checking from different networks, as well as allowing the use of multiple free tiers (where available).
- More triggers: Slack seems an obvious choice, but for my own interest I’m interested in triggering via Alexa and other similar devices: “Alexa check my site is up” would be a cool feature.
That’s quite a bit, and it’s key for me that Checkless stays simple and free to use, so the real challenge is to introduce new functionality without compromising either of those principles.
More information about Checkless can be found in the project’s GitHub repository.