Heartbeat-monitor — обратный uptime-monitor: вместо проверки «жив ли сервис извне», ваш сервис сам шлёт пинг каждые N минут. Если пинг не приходит вовремя — алерт. Применение: cron-задачи, фоновые worker'ы, ETL-пайплайны, бэкап-скрипты. Иногда называется dead-man's switch.
Ниже: подробности, пример, смежные термины, FAQ.
Бесплатный онлайн-инструмент — монитор cron-задач: результат мгновенно, без регистрации.
# Bash-скрипт с финальным heartbeat
#!/bin/bash
set -e
# Делаем бэкап
mysqldump db > /backup/db-$(date +%F).sql
rsync /backup s3:bucket/
# Если дошли сюда — всё ОК, шлём heartbeat
curl -s "https://enterno.io/api/heartbeat?token=$HEARTBEAT_TOKEN&status=ok"
# Python (с обработкой ошибок)
import requests, sys
try:
do_backup()
requests.get('https://enterno.io/api/heartbeat',
params={'token': TOKEN, 'status': 'ok'})
except Exception as e:
requests.get('https://enterno.io/api/heartbeat',
params={'token': TOKEN, 'status': 'critical',
'msg': str(e)[:200]})
sys.exit(1)Heartbeat-monitor, или «выключатель мертвого человека», — это механизм, который позволяет отслеживать состояние системы и уведомлять о сбоях или неактивности. Этот инструмент особенно полезен для обеспечения надежности работы критически важных приложений и сервисов. Он работает по принципу регулярной отправки сигналов о работоспособности от клиента к серверу. Если сигнал не поступает в установленный промежуток времени, система автоматически инициирует заранее определенные действия, такие как отправка уведомлений или перезапуск сервисов.
Heartbeat-monitor реализуется через периодические проверки состояния системы. Например, в случае использования веб-приложения, можно настроить cron-задачу, которая будет отправлять HTTP-запросы на определенный URL, подтверждая, что приложение работает. Если ответа не будет в течение заданного времени, система считает, что приложение вышло из строя.
Пример конфигурации на основе Node.js:
const http = require('http');
const options = {
hostname: 'example.com',
port: 80,
path: '/heartbeat',
method: 'GET'
};
const req = http.request(options, (res) => {
console.log(`STATUS: ${res.statusCode}`);
});
req.on('error', (e) => {
console.error(`Problem with request: ${e.message}`);
});
req.end();В этом примере мы отправляем GET-запрос на '/heartbeat'. Если сервер не отвечает, можно инициировать уведомление об ошибке или выполнить другие действия, такие как перезапуск сервиса.
Heartbeat-monitor находит широкое применение в различных сферах, включая облачные решения, IoT-устройства и системы управления данными. В современных распределенных системах, где несколько компонентов взаимодействуют друг с другом, важно поддерживать постоянный мониторинг их состояния. Например, в микросервисной архитектуре каждый сервис может иметь свой собственный heartbeat, который контролирует его работоспособность.
Кроме того, многие облачные провайдеры, такие как AWS и Azure, предлагают встроенные инструменты для мониторинга состояния виртуальных машин и контейнеров. Используя API, можно интегрировать собственные heartbeat-системы с этими инструментами для получения более детализированной информации о состоянии инфраструктуры.
В качестве примера, интеграция с AWS CloudWatch может выглядеть следующим образом:
const AWS = require('aws-sdk');
const cloudwatch = new AWS.CloudWatch();
const params = {
MetricData: [
{
MetricName: 'Heartbeat',
Dimensions: [
{
Name: 'ServiceName',
Value: 'MyService'
}
],
Unit: 'Count',
Value: 1
}
],
Namespace: 'MyApp'
};
cloudwatch.putMetricData(params, (err, data) => {
if (err) console.log(err, err.stack);
else console.log(data);
});В этом примере мы отправляем метрику heartbeat в CloudWatch, что позволяет отслеживать состояние сервиса и получать уведомления в случае его недоступности.
Heartbeat-monitor, или «выключатель мёртвого человека», представляет собой систему, предназначенную для мониторинга состояния активных процессов и обеспечения их непрерывной работы. Эта технология используется для автоматического обнаружения сбоев в работе систем, приложений или оборудования, позволяя оперативно реагировать на проблемы. В случае, если основной процесс перестает функционировать, Heartbeat-monitor инициирует заранее определенные действия, такие как уведомление администраторов или запуск резервных систем.
Для настройки Heartbeat-monitor можно использовать различные инструменты и технологии, такие как systemd или monit. Рассмотрим пример использования monit для мониторинга веб-сервера.
1. Установите monit:
sudo apt-get install monit2. Настройте конфигурацию в файле /etc/monit/monitrc:
set daemon 60 # проверка каждые 60 секунд
check process nginx with pidfile /var/run/nginx.pid
start program = "/usr/sbin/service nginx start"
stop program = "/usr/sbin/service nginx stop"
if failed host 127.0.0.1 port 80 then restart
if 5 restarts within 5 cycles then timeoutВ этом примере monit будет проверять, работает ли процесс Nginx, и в случае сбоя автоматически перезапустит его. Также можно настроить уведомления по электронной почте для администраторов, если система не сможет восстановить работу.
3. Запустите monit:
sudo monit start4. Проверьте статус:
sudo monit statusС помощью этой простой конфигурации вы сможете обеспечить надежность работы вашего веб-сервера и быстро реагировать на возможные сбои.
Heartbeat-монитор — это «обратный монитор»: не мы опрашиваем сервис, а сервис сам сигнализирует нам, что он жив. Если за установленный интервал сигнал не приходит — мы отправляем тревогу.
Один GET-запрос к уникальному URL — и монитор знает, что задача выполнена.
Задайте допустимое опоздание пинга, чтобы исключить ложные тревоги.
Email и Telegram при пропуске пинга. Повторная тревога, если молчание продолжается.
Полный журнал пингов с временными метками — видите каждое выполнение задачи.
мониторинг cron-задач
контроль фоновых воркеров
dead man's switch
мониторинг платёжных очередей
curl -s https://enterno.io/api/heartbeat/TOKEN — просто и надёжно.Heartbeat-монитор: бесплатно 5 задач, алерты в Telegram и на email при пропуске.
Зарегистрироваться (FREE)Uptime — внешняя проверка сервиса (HTTP GET). Heartbeat — внутренний пинг от ВАШЕГО кода. Ловит баги, которые uptime пропустит (cron не запустился — нет HTTP-сервера для проверки).
Алерты сорваны на медленных runs. Дайте 20-30% буфера от длительности нормального run'a. Лучше пропустить 1 секундный glitch, чем словить 10 ложных алармов.
В enterno.io: monitor сразу переключается в DOWN + триггерит alert-каналы. Полезно для «скрипт упал внутри» — не ждать таймаута.
Бесплатный тариф — 20 мониторов, проверки раз в 5 минут, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.