Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Automated Health Dashboard (github.com/twinproduction)
110 points by TwinProduction on Sept 3, 2020 | hide | past | favorite | 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.


https://status.twinnation.org/

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.


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.


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.


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)


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.


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.


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 :)


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.


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


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 :)


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.


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'.


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.


Do any general purpose dashboard libraries/frameworks exist that people like/recommend?


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


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.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: