My solution is to just be OK with http status checking (run a webserver on important machines), and use a service like updown.io which is so cheap it's almost free.
e.g. For 1 machine, hourly checking is ~$0.25/year
e.g. For 1 machine, hourly checking is ~$0.25/year
I have found that "machine is online" is usually not what I need monitoring for, at all. I'll notice if it's down. It's all the mission-critical-but-silently-breakables that I bother to monitor.