Heartbeat
Heartbeat is a simple way to check a process's vital signs. Use it instead of Monit, Pingdom, Uptime Robot, or any combination thereof.
It's intended to be used in simple applications where full-scale process monitoring is overkill.
Usage
Making a new Heartbeat is easy. Just open up a terminal and type:
curl http://heartbeat.alexose.com/your-email@example.com/60
This will create a new heartbeat that will alert "your-email@example.com" in 60 seconds. You can postpone this alert by running the same command again, or you can stop it altogether by sending a cancellation:
curl http://heartbeat.alexose.com/your-email@example.com/cancel
Heartbeat handles these nonstandard URLs and does not require them to be encoded in any special way.
Examples
It's often useful to know whether a machine has lost power or internet connectivity. An easy to monitor this might be to add a Heartbeat to your crontab. From the terminal, type:
(crontab -l ; echo "* * * * * curl http://heartbeat.alexose.com/your-email@example.com/120") | crontab -
This updates the Heartbeat every 60 seconds. If it fails to update, you'll receive an alert after 120 seconds.
Advanced
Note that each request is tracked by a combination of your IP and User-Agent, so there's no need for unique IDs or tags. If you need multiple heartbeats, simply use a different User-Agent:
curl -A "process one" http://hearbeat.server/alex@alexose.com/30
curl -A "process two" http://hearbeat.server/alex@alexose.com/30
Heartbeat can also alert you if a particular value is out of range:
curl http://heartbeat.server/alex@alexose.com/30/70/60/80 # in range
curl http://heartbeat.server/alex@alexose.com/30/72 # in range
curl http://heartbeat.server/alex@alexose.com/30/59 # out of range
Installation
If you'd like to run it on your own machine, just npm checkout heartbeat-server.
npm install heartbeat-server
node heartbeat-server app.js [port]
Security
There is none.
Redundancy
Nope!
Rate Limiting
By default, each IP is only allowed to send 20 alerts per day.