That's a great question. We have experimented with multiple methods to detect a host crash/reboot. We have used a few of the following, with varying results:
1. Check the output of the uptime command to derive whether the server has recently restarted, i.e. 1 < uptime > 5 mins
2. Check the specific windows event log ID associated with server startup (don't have the exact Event ID, but it's easily googleable.
3. Loss of ICMP ping for a specified number of intervals. this will detect loss of communications, but can be an unreliable mechanism as network issues can deliver a false alert.
4. monitoring agent startup.