CPU/RAM/Disk/Network etc. get written to Influxdb via Telegraf, and visualized with Grafana.
This is my exact setup and I love it (especially in comparison to the prometheus stack which I have to use at work). telegraf is so easy to use and extend. I have my own custom metrics for things like speed of my home internet connection (runs speedtests every hour), listener counts on my custom/private internet radio stream, or even fetching the daily food trucks rotation at a nearby lunch site (influx can handle text data!)
I don't do anything for logging but I also like UptimeKuma to keep and eye on things I run. Grafana has alerting but I find it pretty horrible.
Definitely... you can write custom scripts that Telegraf will run and write that data to Influx. For instance, I have one that writes the Gateway status information from pfSense so I can track and graph any internet downtime.
For general system stats, I like btop. It runs in the terminal, so you can monitor it through SSH remotely. It also is much more readable than some of the other older top process monitors.
Docker desktop is a nice GUI interface for local docker container management, Portainer if you want something more enterprise grade.
For monitoring from my phone (iOS) I use ServerCat which I really like. It can show the status of multiple servers at a glance and provides detailed information and a SSH terminal if needed.