Hey everyone,
I have an unraid server and over the years I’ve gathered quite a lot of tools, some of which are now exposed to the net.
I’ve been mostly checking on my server every once in a while to see if things are healthy, but I would like a more central version to look into the health of my network, any issues from docker logs, etc.
Anyone got a good ui for that? (preferably deployed through docker)
Since I didn’t see it mentioned there’s also Gatus.
I’m using CheckMK to monitor my hypervisor, physical hardware like disks, CPU etc. and SNMP-capable hardware like my pfSense firewall via a CheckMK instance in docker. It either works in docker or on a few different linux based OS like ubuntu and debian (see CheckMK download page).
There’s a free and open source version (called raw edition, GitHub Link) which I am using. It comes with a lot of checks / plugins for monitoring stuff out of the box and if there’s something it doesn’t ship, you can easily create your own check in whatever language your server is capable of executing a binary of. Or you could look up if there’s a user-contributed plugin on the official CheckMK Exchange Platform.
The whole configuration of this is based on rules with a lot of predefined rules and sane defaults already set.
To have an example for your use-case: You can monitor docker-logfiles and let CheckMK warn you, if specific keywords are or are not in a logfile. You will then be able to view the offending lines in the monitoring UI.
Why do I use this?
- We use it at work
- FOSS
- docker makes updating this easy
- can send mails, teams notifications, …
- very customizable and expandable
my docker compose file
# docker-compose.yml services: monitoring: image: checkmk/check-mk-raw:2.4.0-latest container_name: monitoring restart: unless-stopped environment: - CMK_PASSWORD=changeme ports: # WEB UI port - "5000:5000" # agent communication port - "8000:8000" # used for SNMP - "162:162/udp" - "514:514/tcp" - "514:514/udp" volumes: - "./monitoring:/omd/sites" - /etc/localtime:/etc/localtime:ro env_file: - .envStart off simple, use something like uptime-kuma just to check your services are available - takes minutes to set up and can send you notifications when something goes down. It can plug into docker directly to check if a container is up, as well as perform HTTP checks that the service is responding, plus some other cool stuff.
(Side note, I set up ntfy to handle notifications and it’s great! Another solid recommendation but you can use discord web hooks or whatever as well)
The other options described here are good for gathering and visualising data, but it takes quite a bit to set them up and even more to configure the right kinds of alerts to notify you when something is wrong. A simple “is this docker container running” check or a “does this respond with a http 200” check gets you like 95% the way there.
Uptime Kuma is sufficient in almost every scenario. If you don’t monitor the additional stats other tools provide they are basically useless anyway.
I’ve recently switched to Beszel and so far it’s been great.
+1 I love the easy integration of Gotify.
came here to say Beszel too, love it!
Librenms
I have nagios to check the status, but librenms runs too in case i need trends, graphs etc etc
I know these projects cockpit, netdata and grafana + prometheus.
Why Grafana + Prometheus? Why do they have to go together?
Edit: I went back and reread… I think Prometheus is the data grabbing/monitor and Grafana is the polished UI dashboard???
Yes. Prometheus isn’t standalone though, it requires agents on all target machines. The go-to is node exporter. It’s really flexible though and there’s agents for lots of different tools, you can monitor everything with it, but the initial setup isn’t suuper easy.
Someone opened my eyes recently to Yunohost which is a container manager essentially (my understanding) though is based on Debian for the newer versions not actual Docker.
Anyway, I can install Prometheus as well as node explorer, but I think I would only need Prometheus. Node explorer sounds like if I hosted Prometheus on another box and wanted this host to talk to it.
Prometheus is a metric scrapper, it just recollects metrics from either it’s own computer or another one. If you want to monitor something, you also need that something to publish metrics, so they can be scrapped by Prometheus.
Thus if you want to monitor even just a single computer, you need node-exporter to publish the metrics, and Prometheus to gather them. Then you can use Grafana to create beautiful dashboards (or use community’s), and even add alarms to it.
Dang, that’s a lot of seperate parts for 1 “simple” task smh. It’s one of the reasons I’ve stayed away from all this Docker nonsense. I get it’s FOSS and is a great alternative to a lot of paid garbage, but just seems like there could be an easier way… Nice to learn, tinker, etc, but if it breaks, then it seems more complicated to fix as each component is separate.
I’ve just supported Window for so long and there’s a second-nature to troubleshooting; but took years to get there, ya know? I’ll check it out for sure, but I’m still going to look around myself
Dang, that’s a lot of seperate parts for 1 “simple” task
Agree, but this setup (node-exporter + Prometheus + Grafana) allows for a lot of expansion and customization. I’m sure there are simpler tools that tell you your computer status, and it’s up to you to see which fits more your use-case.
but just seems like there could be an easier way
I’ve felt that way before. But in this case of node-exporter and Prometheus, it’s way simpler. You don’t even need Docker, and the installation for both tools is basically a single line that you can copy and paste from their documentation.
Configuring Prometheus to accept node-exporter is a bit harder I admit, but again you can simply copy and paste the documentation example. The whole process should take like ~10 minutes if you follow the documentation.
Sweet, thank you
Not sure how that’s related to docker. It’s the prometheus setup which can be run natively just fine. Still needs an agent that actually retrieves info from the OS.
Certainly there’s “single executable” tools as well. I just don’t know them.
Prometheus+Grafana is my go-to. You can also add Drilldown plugin to Grafana and it will monitor Docker logs.
Prometheus is incredibly versatile and widely used, so a lot of projects support metrics export to it, so IMO is your safest blind bet.
For even more custom behaviour, you can create very simple Python scripts that send data to Prometheus.
There are a lot of server monitoring softwares out there, but Netdata gives you just about every metric I’d ever want to look at. Can be deployed using Docker (https://learn.netdata.cloud/docs/netdata-agent/installation/docker).
The one thing I do when linking to Netdata in whatever dashboard you are running, I use the v3 switch at the end of the url thusly:
https://netdata.mycoolserver.com/v3That way you don’t have to log in to the mother ship to view your metrics.
ETA: mobile app available
It’s not primarily made for monitoring, but Dockhand has a lot of great monitoring for your whole host and for individual containers.
SigNoz or Uptrace are alternatives to something like DataDog, which is the route you want to go versus checking each individual machine.
You could also just use Prometheus+Grafana and build your own monitoring dashboards and alerts that way, but will be a bit more manual at first.








