Xitoring Document
Home
FAQ
Support
Register
Home
FAQ
Support
Register
  • Xitoring

    • Introduction
    • Release Notes
    • Xitoring Release Notes
    • Linux Xitogent Release Notes
    • Windows Xitogent Release Notes
    • Xitoring Mobile App Release Notes
    • Account Management
    • API Access & Automation
    • Team Management & Collaboration
    • Billing & Subscription Management
  • Getting Started

    • Getting Started with Xitoring
    • Workflows & Guides
    • Monitor Your First Server
    • Import / Migration
    • Migrate from UptimeRobot to Xitoring
    • Migrate from Pingdom to Xitoring
    • Migrate from Uptime.com to Xitoring
    • Migrate from BetterStack to Xitoring
  • Help & Support

    • FAQ & Troubleshooting
    • Glossary
  • Server Monitoring

    • Server Monitoring
    • Graphs
    • Live Statistics
    • Monitor Services
    • Auto-Triggers
  • Xitogent on Linux

    • Install Xitogent on Linux
    • Update Xitogent on Linux
    • Uninstall Xitogent on Linux
  • Xitogent on Windows

    • Install Xitogent on Windows
    • Uninstall Xitogent on Windows
    • Xitogent Service
    • Update Xitogent on Windows
    • Disk Performance (I/O)
  • Xitogent on Azure

    • Xitogent on Azure
    • Monitor Azure Linux VM
    • Monitor Azure Windows VM
  • Xitogent CLI

    • Xitogent CLI
    • Xitogent Pause/Unpause
    • Xitogent Status
    • Xitogent debug
    • Xitogent Diagnosis
    • Which data we collect
  • Xitoring CLI

    • Xitoring CLI
  • Uptime Monitoring

    • What is Uptime Monitoring
    • Monitoring Nodes (Geographic Locations)
    • What is Check
    • Auto-Discovery
    • Auto Fault Tolerance
    • Heartbeat Check
    • Ping Check
    • HTTP(S) Check
    • DNS Check
    • FTP Check
    • SMTP Check
    • IMAP Check
    • POP3 Check
    • TCP Check
    • UDP Check
  • SSL Monitoring

    • SSL Monitoring
  • Incidents

    • Incidents
    • Incident's Root Cause
    • Incidents Notification
    • Incident Notes
    • Resolving Incidents Manually
    • Incident Policy
  • Maintenance Schedule

    • Maintenance Schedule
  • Email Reports

    • Email Reports
  • Integrations

    • Integrations
    • Apache Integration
    • CoreDNS Integration
    • CouchDB Integration
    • Disk Health Integration
    • Docker Integration
    • Dovecot Integration
    • Exim Integration
    • HAProxy Integration
    • IIS Integration
    • InfluxDB Integration
    • Kafka Integration
    • KeyDB Integration
    • LiteSpeed Integration
    • MongoDB Integration
    • MySQL Integration
    • Netstat Integration
    • Nginx Integration
    • OpenLiteSpeed Integration
    • OpenVPN Integration
    • PHP-FPM Integration
    • Postfix Integration
    • PostgreSQL Integration
    • RabbitMQ integration
    • Redis Integration
    • MS SQL Server Integration
    • Supervisor Integration
    • Varnish Integration
    • Wireguard Integration
  • Notifications

    • Notifications
    • Creating Notification Roles
    • Email Integration
    • Mobile Push Notifications
    • SMS Integration
    • Phone call Integration
    • Webhook Integration
    • Integration for Slack
    • Telegram Integration
    • WhatsApp Integration
    • Mattermost Integration
    • Discord Integration
    • Google Chat Integration
    • Microsoft Teams Integration
    • Atlassian Opsgenie Integration
    • Splunk On-Call Integration
    • Pushover Integration
    • Pushbullet Integration
    • Gotify Integration
    • Ntfy Integration
    • Spike.sh Integration
    • PagerDuty Integration
    • Zapier Integration
    • AlertOps Integration
  • Status Page

    • Status page
  • 3rd Party Status Pages

    • Using 3rd party Status Pages
    • Atlassian Status Page Integration with Xitoring
    • Status.io Integration with Xitoring
    • Statuspal Integration with Xitoring
    • Instatus Integration with Xitoring
  • Dashboards

    • Main Dashboard
    • Custom Dashboards
  • Metrics

    • Metrics
  • MCP Server

    • Setup & Tool Reference

Heartbeat Check

a Heartbeat is a signal sent by the service or application at regular intervals (e.g. every few seconds) to Xitoring. our system then checks whether it has received the heartbeat within a certain time frame. If it hasn't, it assumes that the service or application is not responding correctly and triggers an incident.

See Heartbeat Monitoring for an overview, or Cron Job Monitoring if you are monitoring scheduled jobs.

How a Heartbeat Check Works

When you create a Heartbeat check you just need to select a label like every other check and configure proper trigger and notification roles. the most important part is the Fault tolerance, for example, if you set the fault tolerance to 1 (minute) Xitoring will expect to receive a heartbeat at least every 1 minute. if the interval between a heartbeat to another exceeds more than the fault tolerance you will get an incident report.

after you create the heartbeat check you get a link like below:

https://node.xitoring.com/heartbeat/1000rquike6143511677680410

making GET requests to that link will define as a heartbeat. so you can add something like the below to any script or code to make sure that it is running smoothly.

curl https://node.xitoring.com/heartbeat/1000rquike6143511677680410

In the above example, we used curl to make a GET request to the heartbeat link, curl is a bash tool that you can use to contact HTTP services so if you put the following command in your crontab in a Linux server and make it run every 1 minute:

* * * * * curl https://node.xitoring.com/heartbeat/1000rquike6143511677680410

It can act as an overall availability check for your Linux machine, This is the simplest way to use a heartbeat check.

More Advanced use cases

Imagine you have a backup script that runs every hour and you want to make sure that it's being done regularly.

You need to create a Heartbeat check in the Xitoring panel and set the fault tolerance to 60 so that Xitoring expects to get a heartbeat every hour. (you can put something like "Production Server backup" in the label) upon creating the heartbeat check you get your Heartbeat check Link. You just need to add one line at the end of your backup script in the success part of your code like the below:

Bash script example

#!/bin/bash

# Set the backup directory
BACKUP_DIR=/path/to/backup/directory

# Set the directories to be backed up
DIR1=/path/to/first/directory
DIR2=/path/to/second/directory

# Set the backup filename
BACKUP_FILENAME="backup-$(date +%Y-%m-%d-%H-%M-%S).tar.gz"

# Create the backup directory if it doesn't exist
if [ ! -d "$BACKUP_DIR" ]; then
  mkdir -p "$BACKUP_DIR"
fi

# Create the backup archive
tar -czf "$BACKUP_DIR/$BACKUP_FILENAME" "$DIR1" "$DIR2"

# Print a message indicating the backup is complete
echo "Backup complete: $BACKUP_DIR/$BACKUP_FILENAME"

# Send a heartbeat to xitoring every time the backup script runs
curl https://node.xitoring.com/heartbeat/1000rquike6143511677680410

Python example

import os
import shutil
import datetime
import requests

# Set the backup directory
BACKUP_DIR = "/path/to/backup/directory"

# Set the directories to be backed up
DIR1 = "/path/to/first/directory"
DIR2 = "/path/to/second/directory"

# Set the backup filename
backup_filename = "backup-{}.tar.gz".format(datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S"))

# Create the backup directory if it doesn't exist
if not os.path.isdir(BACKUP_DIR):
    os.makedirs(BACKUP_DIR)

# Create the backup archive
shutil.make_archive(os.path.join(BACKUP_DIR, backup_filename.replace(".tar.gz", "")), "gztar", DIR1, DIR2)

# Print a message indicating the backup is complete
print("Backup complete: {}".format(os.path.join(BACKUP_DIR, backup_filename)))

# Send a heartbeat to xitoring every time the backup script runs
response = requests.get("https://node.xitoring.com/heartbeat/1000rquike6143511677680410")
Last Updated: 7/27/26, 5:07 PM
Prev
Auto Fault Tolerance
Next
Ping Check