6 ms·
Show HN: Automated Health Dashboard
- rid 6y agoThis is great! Nice work. I would add one feature request which is the ability to monitor from multiple locations. Otherwise it's a SPOF and you'll never receive a notification if your whole cluster is down.
- dewey 6y agoMaybe I'm misunderstanding it but what's the difference to using Grafana / Prometheus / Alertmanager? I see the tool itself exposes the Prometheus metrics endpoint so I guess Prometheus already exists in your stack.
- TwinProduction 6y agoWhile Grafana allows you to monitor metrics provided by Prometheus and Alertmanager allows you to configure alerts also based on these metrics, Gatus allows you to directly monitor your service(s) by sending requests to them at interval and evaluating the conditions that make your service(s) "healthy". As mentioned in the README, Gatus can double as automated user acceptance tests to check if, for instance, an endpoint that you expect to return X has Y instead. Let me know if that's not clear enough, I can provide more a in-depth example :)
- tomaaron 6y agoI like the simple UI and visualization of the timeline! It kinda reminds me of the Prometheus Blackbox exporter. I think you can achieve similar acceptance tests. See https://github.com/prometheus/blackbox_exporter https://github.com/prometheus/blackbox_exporter
- rurounijones 6y agoI think the keyword you might want to add to your README is "Canary". This can refer to a deployment tactic or a system that actively tests systems in the manner that this system does. So that you can be notified of client-side facing issues that might not be visible server-side without relying on actual clients to beat down the door and shout at you.
- oauea 6y agoIsn't that similar to using https://github.com/prometheus/blackbox_exporter https://github.com/prometheus/blackbox_exporter with prometheus, alertmanager and grafana?
- TwinProduction 6y agoI honestly didn't even know that was a thing. That said, it looks like it doesn't support JSONPath out of the box, though I was able to find a plugin that should allow you to parse JSON. I'm not sure how that would work out, but the point is that this is all-in-one. Beyond just that, the resource usage of Gatus is significantly lower than running Grafana, Prometheus and alertmanager individually - much less running all of them at the same time. My personal Kubernetes cluster is quite limited in resources after all, and running Prometheus does make that resource pool even smaller than it already is :p That said, even for clusters that don't have similar resource restrictions, I find that having all of this together in a single application makes it a lot easier to manage, though I guess that's up to the individual :)
- monkeydust 6y agointeresting - I deployed https://healthchecks.io/ https://healthchecks.io/ to a few boxes this morning which pings me in case of downtime based on heartbeat curl calls to designated URL. Works well.
- EE84M3i 6y agoI think it would be helpful if this said at the top of the readme what it's checking the health of. Looks like HTTP services maybe? HTTPS? TCP?
- mqus 6y agoYeah, I first thought it was about monitoring my health, aka fitness, pulse measurement etc. :D But that particular line of thought is cleared up in the second sentence.
- TwinProduction 6y agoWho knows, maybe in the next version, you'll be able to link up your heart rate monitor. (I'm joking, of course, unless this somehow becomes a serious use case at some point xD)
- akeck 6y agoThe dashboard abbreviates "minutes" with "ms", but to me that reads "milliseconds". I think it should probably use "min".
- TwinProduction 6y agoI don't remember abbreviating minutes with ms, could you please tell me where you're seeing this so that I can fix it?
- ShakataGaNai 6y agoI don't see ms in place of min either. Maybe the OP was confused by the response time range. Ex: 2-12ms. There is no explanation or other text other than the numbers. That being said. Maybe that can be a more detailed popup as well. Avg response, mean, median, min/max.
- akeck 6y agohttps://status.twinnation.org/ https://status.twinnation.org/ The time ranges use "ms", but the actual timestamps indicate the gap is minutes.
- TwinProduction 6y agoAh, the range that you're seeing on the top right corner of each service is the minimum and maximum response time. The time on the bottom left is how long ago the oldest status is, while the one on the right is how long ago the latest status is from.
- colsandurz 6y agoDoes this work with Apple Health?? Is there an easy way to get data out of Apple Health?
- dewey 6y agoIf you export the health data (It's possible), expose it through some http service and then scrape it with that tool it'll work. If it's the right tool for the job is the more important question.
- ilyas121 6y agoI got really excited that this was an nice open source way to track my physical human health metrics over time. Oh well, I guess this just means I have to make one now.
- TheCowboy 6y agoDo any general purpose dashboard libraries/frameworks exist that people like/recommend?
- Reelin 6y agoIt would be nice if I didn't have to allow third party scripts (from bootstrapcdn and googleapis in this case) in order to view the dashboard. Is there some technical reason the health page can't be entirely first party? (This comment is based on the example status page you linked.)
- TwinProduction 6y agoI originally wanted to serve as little content as possible to reduce the resource usage as much as possible, but tbh, it's probably not necessary. I just took care of it: https://github.com/TwinProduction/gatus/commit/e31c017a007fe3dfefddb2ab74127ec53fb40892 https://github.com/TwinProduction/gatus/commit/e31c017a007fe... This change will be available from v0.1.3
- s09dfhks 6y agodocker run -p 8080:8080 --name gatus gatus Unable to find image 'gatus:latest' locally docker: Error response from daemon: pull access denied for gatus, repository does not exist or may require 'docker login': denied: requested access to the resource is denied. See 'docker run --help'.
- ShakataGaNai 6y agoYou have to build it, for it to run with that name. To skip the build step you probably want: docker run -p 8080:8080 --name gatus twinproduction/gatus So it'll pull from docker hub.