MikeJones solutions here abound. I recently settled on using my own prometheus + grafana instance with a node_exporter on each node. This set up allows:
- monitoring vital server metrics (disk, cpu, memory)
- monitoring domain specific metrics (uptime, ssl cert validity)
- push notifications to lots of channels; I use discord.
The drawback here is yet another weak link in your stack, so I also have this monitoring node be monitored using a simple OhDear.app plan. I think this all outweighs the ridiculous costs of other monitoring services doing only half of the functionality mentioned (either outside or inside monitoring).
I am using this monitoring set up for my own projects/sites, to monitor employer and client sites and for Flarum.
Here's my dashboard for flagrow:
You can find some decent tutorials on the Digital Ocean community, eg: https://www.digitalocean.com/community/tutorials/how-to-install-prometheus-on-ubuntu-16-04#step-6-%E2%80%94-running-node-exporter