canary.io, a side-project20 Oct 2013
Over the past several years, my friend Brandon Tindle and I have been discussing and prototyping various ideas around HTTP monitoring. I'm happy to say that we've finally gotten brave enough to start shipping, even if it is a slightly embarrassing technological preview. If you'd like to see it, head over to canary.io, check it out for a few moments, and come back here to learn about its underpinnings.
The goal of canary.io is not to build yet another HTTP monitoring service - it's to re-imagine how one could be built for today and build it for the long-term. Some of the principles that we've established are as follows:
- be as Unix-like as possible. Do one thing well and be open
- measurements are the primitive, everything else is a function of that. Canary will ultimately become a distributed measurement engine, and any UI, alerting, etc will be secondary
- no more black box measurements - everything should be measured with curl
- measurements should happen as quickly as possible, no more than 10s apart
- the system should be as open a possible - the measurement data should be free to the public (if authorized by the user) for analysis
- UIs should leverage modern technologies - realtime delivery of measurements of data and state change to the browser is a possibility now. Do that
- different UI's for different cases - a contextual tactical response UI that helps you understand if you are in a failure state and if you are recovering is necessarily different than the tooling you'd use to look at long-term trends or one you'd use for a postmortem
- make room for others to innovate. We'll never get it all correct but by keeping to our core values and allowing others to use our data and APIs, very interesting things can happen
The current preview doesn't really cover any of these points fully outside of getting data to you quickly. It is barely usable and limited to a single site. However, if you are interested in seeing what we cook up, I invite you to follow us on Twitter where we'll be announcing as we iterate.