Just jotting my thoughts down into an issue for discussion...
If you do 1 check every 10 minutes and your status page shows the last 24 hours of checks, the browser downloads 144 check files to render the status page. This isn't too bad, but if you distribute your checks across multiple instances, you multiply the number of check files by the number of instances you distribute your checks to. And if you want finer granularity in the reporting, you have to produce check files more frequently.
One way to alleviate this volume is to introduce an alternate mode of producing checks: a "ternary" or "discrete" mode (for lack of better words) that only reports healthy, degraded, or down. A healthy status is assumed unless a file exists to report degraded or down. Assuming an endpoint is usually healthy, this would drastically reduce the number of check files produced. Checks could be run every minute on multiple instances, if desired, and if the endpoint is reliably up, no check files would have to be downloaded.
You do lose the RTT (response time) value, so the graphs will report "Up", "Degraded", or "Down" instead of a number. But if the service is only down for 5 minutes, you'd only have to download ~5 check files, so the status pages load much faster and you lose less storage.
@sqs also had the terrible, wonderful, no good, really great idea of encoding the results of the checks directly into the filenames on S3. 😄 That would allow us to download most of the results in just one or a few requests for file listings...
Anyway, it's too early to tell yet how people will be using this and if this mode will be in demand. This change would definitely be a paradigm shift so lots of code changes would be required, I think, unless there's a clever way for the checkup workers and the status page to mutually agree what the mode is from the results of the checks. (Would rather make the mode implicit than requiring explicit configuration. Going for the "just works" ideal.)
Just jotting my thoughts down into an issue for discussion...
If you do 1 check every 10 minutes and your status page shows the last 24 hours of checks, the browser downloads 144 check files to render the status page. This isn't too bad, but if you distribute your checks across multiple instances, you multiply the number of check files by the number of instances you distribute your checks to. And if you want finer granularity in the reporting, you have to produce check files more frequently.
One way to alleviate this volume is to introduce an alternate mode of producing checks: a "ternary" or "discrete" mode (for lack of better words) that only reports
healthy,degraded, ordown. Ahealthystatus is assumed unless a file exists to reportdegradedordown. Assuming an endpoint is usually healthy, this would drastically reduce the number of check files produced. Checks could be run every minute on multiple instances, if desired, and if the endpoint is reliably up, no check files would have to be downloaded.You do lose the RTT (response time) value, so the graphs will report "Up", "Degraded", or "Down" instead of a number. But if the service is only down for 5 minutes, you'd only have to download ~5 check files, so the status pages load much faster and you lose less storage.
@sqs also had the terrible, wonderful, no good, really great idea of encoding the results of the checks directly into the filenames on S3. 😄 That would allow us to download most of the results in just one or a few requests for file listings...
Anyway, it's too early to tell yet how people will be using this and if this mode will be in demand. This change would definitely be a paradigm shift so lots of code changes would be required, I think, unless there's a clever way for the checkup workers and the status page to mutually agree what the mode is from the results of the checks. (Would rather make the mode implicit than requiring explicit configuration. Going for the "just works" ideal.)