Сбой бэкапа — не вопрос «если», а «когда»
Без мониторинга вы узнаёте о проблеме только в момент восстановления. За 7 лет мы внедрили мониторинг для 50+ проектов: бэкапы, синхронизации, обновления — всё, что работает по расписанию. Healthchecks.io решает задачу с помощью dead man's switch (концепция из Wikipedia): задача ожидает регулярный ping, а при его отсутствии — алерт. Ускорение обнаружения сбоев — в 10 раз по сравнению с проверкой логов, сокращение MTTR с 24 часов до 1 часа.
Как работает dead man's switch?
Создаёте check с ожидаемым периодом (например, каждый день в 02:00) и grace period 1 час. В конце cron-задачи добавляете HTTP-запрос на уникальный URL check'а. Если пинг не пришёл — Healthchecks.io отправляет уведомление. Важно: используйте оператор &&, чтобы пинг уходил только при успешном завершении скрипта.
# /etc/cron.d/backup
0 2 * * * root /opt/scripts/backup.sh && curl -fsS --retry 3 https://hc-ping.com/your-uuid-here > /dev/null 2>&1Этот подход надёжнее мониторинга логов: Healthchecks.io проверяет не только наличие процесса, но и его успешное завершение. Вы получаете алерт в течение grace period (обычно 1 час) вместо того, чтобы обнаружить сбой через сутки.
Почему выбирают self-hosted Healthchecks.io?
Для чувствительных данных или air-gapped окружений разворачиваем собственный инстанс. Все данные остаются на вашей инфраструктуре, обновления — вручную, но полный контроль. Бесплатно и без ограничений. Self-hosted снижает расходы на мониторинг при большом количестве checks по сравнению с облачным тарифом. Исходный код доступен на GitHub.
version: '3.8'
services:
web:
image: healthchecks/healthchecks:latest
environment:
- SECRET_KEY=your-secret-key-here
- ALLOWED_HOSTS=healthchecks.example.com
- [email protected]
- EMAIL_HOST=smtp.example.com
- EMAIL_PORT=587
- EMAIL_USE_TLS=True
ports:
- "8000:8000"
volumes:
- healthchecks-db:/data
Что выбрать: облако или свой сервер?
| Параметр | Cloud | Self-hosted |
|---|---|---|
| Бесплатно | До 20 checks | Полностью |
| Управление данными | На серверах провайдера | Ваш сервер |
| Обновления | Автоматические | Вручную |
| Интеграция с внешними системами | Через webhook | Через webhook + внутренние API |
| Максимальная задержка алерта | Grace + задержка отправки | Grace + ваш SMTP |
Какие задачи мониторят через Healthchecks.io?
- Бэкапы БД: pg_dump, mysqldump, Barman — критично для production.
- Синхронизация: rsync, rclone в S3/GCS.
- Ротация логов: logrotate, архивация.
- Обновление SSL: certbot renew — особенно важно для самоподписанных сертификатов.
- ETL-задачи: ночные отчёты, экспорты.
Кейс из практики: На одном проекте бэкап MySQL не выполнялся месяц из-за нехватки места на диске. После настройки Healthchecks.io с проверкой размера файла проблема выявлялась в течение часа. Мы добавили проверку минимального размера (10 КБ) и алерт в Telegram. С тех пор потерь данных не было. Аналогичная ситуация на другом проекте с PostgreSQL: срабатывание healthcheck предупредило о неполном дампе (файл 2 КБ вместо ожидаемых 50 МБ). Grace period в 30 минут позволил исправить скрипт до следующего бэкапа.
Пример скрипта с проверкой размера
#!/bin/bash
set -e
BACKUP_FILE="/backups/db_$(date +%Y%m%d).sql.gz"
pg_dump -h localhost -U app mydb | gzip > "$BACKUP_FILE"
# Проверяем что файл не пустой (минимум 10KB)
MIN_SIZE=10240
ACTUAL_SIZE=$(stat -c%s "$BACKUP_FILE")
if [ "$ACTUAL_SIZE" -lt "$MIN_SIZE" ]; then
echo "Backup too small: $ACTUAL_SIZE bytes" >&2
exit 1
fi
# Пинг только при успехе
curl -fsS --retry 3 "https://hc-ping.com/${HC_UUID}" > /dev/null
Каналы уведомлений и их возможности
| Канал | Задержка | Особенности |
|---|---|---|
| Telegram | Секунды | Простая настройка, групповые чаты |
| До 5 минут | Надёжно, но медленнее | |
| PagerDuty | Секунды | Escalation, интеграция с ITSM |
| Webhook | По настройке | Кастомные действия (API, Slack etc.) |
Реакция на сбой
Алерт приходит в течение grace period. Далее — runbook: проверить диск, логи, перезапустить задачу. Healthchecks.io позволяет вручную подтвердить problem и отправить повторный ping после исправления.
Процесс внедрения под ключ
- Аудит — инвентаризация всех cron-задач, определение критичности.
- Проектирование — выбор периода, grace, каналов уведомлений.
- Развёртывание — self-hosted инстанс с HTTPS и резервным копированием.
- Интеграция — подключение всех задач, в том числе с проверкой размера.
- Тестирование — эмуляция сбоев, проверка алертов.
- Документация — инструкция для команды по добавлению новых checks.
- Поддержка — неделя post-deploy.
Что вы получите в результате
- Документация: конфигурации всех checks, инструкция по добавлению новых.
- Доступы: к инстансу Healthchecks.io, интеграция с вашими системами.
- Обучение: демонстрация добавления checks и реакции на алерты.
- Поддержка: неделя post-deploy для донастройки.
Типовой проект — от нескольких часов до одного рабочего дня. Стоимость рассчитывается индивидуально в зависимости от сложности. Закажите внедрение — и ваши бэкапы будут под контролем. Получите консультацию: мы оценим вашу текущую схему мониторинга и предложим оптимальный вариант. Свяжитесь с нами для аудита ваших cron-задач.







