CronGuard работает по принципу "Dead Man's Switch" (Выключатель мертвеца). Вы создаете проверку и получаете уникальный URL (Ping URL).
https://cronguard.ru/ping/550e8400-e29b-41d4-a716-446655440000
Самый частый сценарий — мониторинг бэкапов. Используйте оператор &&, чтобы отправить пинг только в случае успеха команды.
# Запускать бэкап в 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 раз, если сеть мигнула.Вы можете мониторить сервисы, добавляя команду 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
Если вам нужно отправлять сигнал начала работы и завершения (измерение времени), это тоже можно реализовать, но 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 для мониторинга свободного места. Если места станет мало, скрипт перестанет отправлять пинги, и вы получите алерт.
#!/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 минут.
Вы можете использовать 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
Используйте стандартную библиотеку 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 // Ваш код // Отправка пинга file_get_contents('https://cronguard.ru/ping/UUID'); ?>