Looking for FOSS server monitoring UI
from kcweller@feddit.nl to selfhosted@lemmy.world on 07 Feb 15:28
https://feddit.nl/post/51375373

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)

#selfhosted

threaded - newest

supervent@lemmy.dbzer0.com on 07 Feb 15:37 next collapse

I know these projects cockpit, netdata and grafana + prometheus.

mrnobody@reddthat.com on 07 Feb 16:53 collapse

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???

tofu@lemmy.nocturnal.garden on 07 Feb 17:06 collapse

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.

mrnobody@reddthat.com on 07 Feb 17:33 collapse

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.

Danitos@reddthat.com on 07 Feb 17:43 collapse

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.

mrnobody@reddthat.com on 07 Feb 18:01 collapse

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

Danitos@reddthat.com on 07 Feb 18:29 next collapse

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.

mrnobody@reddthat.com on 07 Feb 21:34 collapse

Sweet, thank you

tofu@lemmy.nocturnal.garden on 07 Feb 18:54 collapse

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.

irmadlad@lemmy.world on 07 Feb 16:23 next collapse

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 (learn.netdata.cloud/docs/netdata-agent/…/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/v3

That way you don’t have to log in to the mother ship to view your metrics.

ETA: mobile app available

just_another_person@lemmy.world on 07 Feb 16:28 next collapse

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.

dave@piefed.blahaj.zone on 07 Feb 16:38 next collapse

I’ve recently switched to Beszel and so far it’s been great.

statelesz@slrpnk.net on 07 Feb 17:17 next collapse

+1 I love the easy integration of Gotify.

myrmidex@belgae.social on 07 Feb 18:14 collapse

came here to say Beszel too, love it!

statelesz@slrpnk.net on 07 Feb 17:18 next collapse

It’s not primarily made for monitoring, but Dockhand has a lot of great monitoring for your whole host and for individual containers.

Danitos@reddthat.com on 07 Feb 17:47 next collapse

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.

Kushan@lemmy.world on 07 Feb 18:54 next collapse

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

EarMaster@lemmy.world on 07 Feb 19:00 collapse

Uptime Kuma is sufficient in almost every scenario. If you don’t monitor the additional stats other tools provide they are basically useless anyway.

Spaniard@lemmy.world on 07 Feb 19:24 next collapse

Librenms

redlemace@lemmy.world on 07 Feb 19:42 collapse

I have nagios to check the status, but librenms runs too in case i need trends, graphs etc etc

hamsda@feddit.org on 07 Feb 20:24 collapse

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:
      - .env