Show HN: Automated Health Dashboard(github.com)
github.com
Show HN: Automated Health Dashboard
https://github.com/TwinProduction/gatus
27 comments
The dashboard abbreviates "minutes" with "ms", but to me that reads "milliseconds". I think it should probably use "min".
I don't remember abbreviating minutes with ms, could you please tell me where you're seeing this so that I can fix it?
I 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.
That being said. Maybe that can be a more detailed popup as well. Avg response, mean, median, min/max.
https://status.twinnation.org/
The time ranges use "ms", but the actual timestamps indicate the gap is minutes.
The time ranges use "ms", but the actual timestamps indicate the gap is minutes.
Ah, 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.
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.
docker 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'.
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'.
You 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.
docker run -p 8080:8080 --name gatus twinproduction/gatus
So it'll pull from docker hub.
It 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.)
I 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/e31c017a007fe...
This change will be available from v0.1.3
I just took care of it: https://github.com/TwinProduction/gatus/commit/e31c017a007fe...
This change will be available from v0.1.3
This 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.
Maybe 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.
I see the tool itself exposes the Prometheus metrics endpoint so I guess Prometheus already exists in your stack.
While 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 :)
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 :)
I 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
I 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.
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.
Isn't that similar to using https://github.com/prometheus/blackbox_exporter with prometheus, alertmanager and grafana?
I 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 :)
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 :)
interesting - I deployed 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.
I 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?
Yeah, 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.
But that particular line of thought is cleared up in the second sentence.
Who 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)
(I'm joking, of course, unless this somehow becomes a serious use case at some point xD)
Does this work with Apple Health?? Is there an easy way to get data out of Apple Health?
If 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.
If it's the right tool for the job is the more important question.
I 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.
Same! If you haven't already come across it https://gyrosco.pe/ might be worth a look.
Love this, just wish I could run it locally offline :(
Oh damn, same.
Do any general purpose dashboard libraries/frameworks exist that people like/recommend?