Как это работает

CronGuard работает по принципу "Dead Man's Switch" (Выключатель мертвеца). Вы создаете проверку и получаете уникальный URL (Ping URL).

Ваш скрипт должен отправлять HTTP GET или POST запрос на этот URL после успешного завершения работы.
https://cronguard.ru/ping/550e8400-e29b-41d4-a716-446655440000

Лимиты и Таймауты

  • Минимальный интервал: 1 минута.
  • Максимальный интервал: 365 дней.
  • Grace Period (Допуск): По умолчанию 5 минут (можно изменить в настройках). Это время мы ждем после истечения таймера перед отправкой алерта.
  • Rate Limiting: Не отправляйте пинг чаще 1 раза в секунду. Лишние запросы будут игнорироваться (HTTP 429).
  • Хранение логов: Мы показываем текущий статус и время последнего пинга.
  • Напоминание: В случае, если ваша задача так и не вернула корректный статус, придет дополнительное напоминание. Интервал ожидания - 30 минут.

Crontab

Самый частый сценарий — мониторинг бэкапов. Используйте оператор &&, чтобы отправить пинг только в случае успеха команды.

Простой пример

# Запускать бэкап в 3:00 ночи. Если успех -> отправить пинг.
0 3 * * * /home/user/backup.sh && curl -fsS -m 10 --retry 5 https://cronguard.ru/ping/UUID
  • -f: Вернуть ошибку, если сервер ответил 404/500.
  • -sS: Тихий режим, но показывать ошибки.
  • -m 10: Таймаут соединения 10 секунд.
  • --retry 5: Попробовать 5 раз, если сеть мигнула.

Systemd Services

Вы можете мониторить сервисы, добавляя команду ExecStartPost или используя OnFailure.

[Unit]
Description=My Important Service

[Service]
Type=oneshot
ExecStart=/usr/bin/python3 my_script.py
# Пинг после успешного завершения
ExecStartPost=/usr/bin/curl -fsS https://cronguard.ru/ping/UUID

Bash

Если вам нужно отправлять сигнал начала работы и завершения (измерение времени), это тоже можно реализовать, но CronGuard пока поддерживает только сигнал "Жив".

#!/bin/bash

set -e # Остановить скрипт при ошибке

echo "Starting backup..."
tar -czf backup.tar.gz /var/www/html

# Заливка в S3 и т.д.

# Если мы дошли сюда - значит ошибок не было. Шлем пинг.
curl -fsS https://cronguard.ru/ping/UUID

Мониторинг диска

Вы можете использовать CronGuard для мониторинга свободного места. Если места станет мало, скрипт перестанет отправлять пинги, и вы получите алерт.

Пример скрипта (check_disk.sh)

#!/bin/bash

# Настройки
THRESHOLD=90
UUID="ВАШ-UUID"

# Получаем % использования корня /
CURRENT=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')

if [ "$CURRENT" -lt "$THRESHOLD" ]; then
    # Места достаточно (использовано меньше 90%) -> Шлем пинг
    curl -fsS https://cronguard.ru/ping/$UUID
else
    # Места МАЛО! Не шлем пинг -> CronGuard поднимет тревогу через N минут.
    echo "Disk full: $CURRENT%"
fi

Добавьте этот скрипт в Cron запускаться каждые 10 минут. В CronGuard настройте интервал 10 минут + допуск 5 минут.

Docker & Healthchecks

Вы можете использовать CronGuard как Healthcheck внутри docker-compose.yml.

services:
  app:
    image: my-app
    healthcheck:
      test: "curl -f https://cronguard.ru/ping/UUID || exit 1"
      interval: 1m
      timeout: 10s
      retries: 3

Python

Используйте стандартную библиотеку requests.

import requests

def run_task():
    try:
        # Ваша логика...
        do_heavy_work()
        
        # Успех
        requests.get("https://cronguard.ru/ping/UUID", timeout=10)
    except Exception as e:
        print(f"Error: {e}")
        # Не отправляем пинг -> CronGuard поднимет алерт

PHP

<?php
// Ваш код 


// Отправка пинга
file_get_contents('https://cronguard.ru/ping/UUID');
?>

Готовы начать?

Создайте первую проверку за 10 секунд.

Регистрация