Heartbeat.sh provides one of the simplest ways to monitor your servers and processes for free. If I want to monitor a service, I can monitor it by simply sending an HTTP POST request to my heartbeat.sh server, and voila, my service is being monitored! I will show you how to this in three easy steps.
(Disclaimer: The author is the developer who built heartbeat.sh)
This is as simple as it gets. Just go to heartbeat.sh, enter a name for your server an click on the big Create Server button! Heartbeat.sh will then create a server for you, with your server name as a subdomain, and redirect you to your new dashboard.
For example. Say I wanted to create a monitoring server named
hn-example. I simply go to the heartbeat.sh home page, enter hn-example in the text box and click on create-server.
Heartbeat.sh then automatically redirects me to
hn-example.heartbeat.sh
which is the dashboard for my new monitoring server.Now that I have a monitoring server, I better start using it. Using the server is as simple as sending a heartbeat with a post request to
https://{my-subdomain}.heartbeat.sh/beat/{heartbeat-name}
.I will use
curl
as an example, but that's not the only way. You can use any tool capable of sending http requests, like axios
for JavaScript or requests
for Python. Heartbeat.sh also has open source JavaScript and Python libraries available on their github profile.❯ curl -X POST 'https://hn-example.heartbeat.sh/beat/example'
The server then replied with this JSON object:
{
"Name": "example",
"Warning": 60,
"Error": 300,
"Age": 0,
"Status": "OK",
"LastBeat": "2020-11-13T08:12:56.447936897Z"
}
The
Warning
and Error
fields mean that my heartbeat will go into Warning status after 60 seconds after the last POST request, and into Error status after 300 seconds (5 minutes). If I want to make the timeouts 90 seconds and 1 hour respectively, I can just add that to the request query string:❯ curl -X POST 'https://hn-example.heartbeat.sh/beat/example?warning=1m30&error=1h'
To which the server replies with:
{
"Name": "example",
"Warning": 90,
"Error": 3600,
"Age": 0,
"Status": "OK",
"LastBeat": "2020-11-13T08:23:02.738496856Z"
}
Every POST request will update the heartbeat. If I have a script that must run every day, I can send a heartbeat at the end of the script with a warning and error timeout of 1 day each. The heartbeat will then timeout if my script missed a day.
My dashboard shows my heartbeats and their statuses. It automatically refreshes every minute, so I can display it on a screen where the color changes will quickly tell me if there is a problem.
I can also get my heartbeat statuses programmatically by simply sending a GET request:
❯ curl -X GET 'https://hn-example.heartbeat.sh/beat/example'
{
"Name": "example",
"Warning": 90,
"Error": 3600,
"Age": 527,
"Status": "WARNING",
"LastBeat": "2020-11-13T08:23:02Z"
}
Or to get a list of all my beats:
curl -X GET 'https://hn-example.heartbeat.sh/heartbeats'
{
"Heartbeats": [
{
"Name": "example",
"Warning": 90,
"Error": 3600,
"Age": 669,
"Status": "WARNING",
"LastBeat": "2020-11-13T08:23:02Z"
}
]
}
This is the simplest monitoring set-up I know of. I use it for some of my hobby projects and even at work. Heartbeat.sh made it very easy for me to automate my daily checks. Now I spend less time baby sitting my projects and more time improving them.
(Disclaimer: The author is the developer who built heartbeat.sh)