Перейти к основному содержимому

Задача (Job)

Перейти в личный кабинет

Задача/Job - монитор предназначен для отслеживания выполнения периодических задач: backup скриптов, cron задач и других операций по расписанию.


Принцип работы

  1. Вы создаёте Job монитор и задаёте расписание выполнения
  2. При запуске задачи отправляется сигнал start
  3. При успешном завершении отправляется сигнал finish
  4. При ошибке отправляется сигнал fail
  5. Система отслеживает своевременность запуска и время выполнения
┌─────────────┐    start     ┌─────────────┐    finish    ┌─────────────┐
│ Ваш скрипт │ ──────────▶ │ Tuna │ ◀────────── │ Ваш скрипт │
(start) │ │ Monitor │ │ (finish)
└─────────────┘ └─────────────┘ └─────────────┘

Параметры

Описание

ПараметрОписаниеОбязательный
НазваниеУникальное имя монитораДа
ОписаниеПримечание о назначении задачиНет
скриншот с описанием монитора

Детали

Указываем ожидаемый интервал между задачами и опционально максимальное время выполнения.

скриншот с деталями job монитора скриншот с деталями job монитора

Интервал

Поддерживается два типа расписания:

Ожидаемый интервал между сигналами:

ЗначениеОписание
1 минутаСигнал ожидается каждую минуту
5 минутСигнал ожидается каждые 5 минут
15 минутСигнал ожидается каждые 15 минут
30 минутСигнал ожидается каждые 30 минут
60 минутСигнал ожидается каждый час

Время выполнения

Максимальная длительность задачи Running Time - если задача выполняется дольше указанного времени, отправляется уведомление.

Уведомления

Задача монитор отправляет уведомления в следующих случаях:

ПричинаОписание
FailЗадача завершилась с ошибкой (сигнал fail или exit code != 0)
Not RunningЗадача не запустилась в течение Grace Period
Long RunningЗадача выполняется дольше Running Time
RecoveryЗадача восстановилась после ошибки

Здесь можно указать группы контактов для уведомлений, если не указывать, то используется Email пользователя.

Также задаётся период ожидания - Grace Period. Добавляется к ожидаемому времени следующего сигнала. Например, если интервал 5 минут и Grace Period 2 минуты, то алерт будет отправлен через 7 минут после последнего сигнала. Повтор уведомлений напоминает о проблеме, можно задать интервал этих напоминаний и их количество.

скриншот с д�еталями job монитора

Использование

Через CLI (рекомендуется)

Команда tuna monitor exec автоматически отправляет сигналы start, finish или fail:

tuna monitor exec MONITOR_ID -- ./backup.sh

Если вы хотите контролировать сигналы вручную:

# Начало выполнения
tuna monitor ping MONITOR_ID --state=start

# Выполнение вашей задачи
./your-task.sh

# Успешное завершение
tuna monitor ping MONITOR_ID --state=finish

# Или ошибка
tuna monitor ping MONITOR_ID --state=fail

Через HTTP

Помимо tuna cli, можно отправлять сигналы напрямую через HTTP запросы. Это полезно когда CLI недоступен или вы используете другие языки программирования.

Формат URL:

https://monitor.tuna.am/{MONITOR_ID}/{slug-name}
подсказка

{slug-name} - опционален и нужен скорее для простой идентификации монитора в коде.

# Простой ping
curl -s "https://monitor.tuna.am/MONITOR_ID/test"

# С указанием статуса
curl -s "https://monitor.tuna.am/MONITOR_ID/test?status=ping"
curl -s "https://monitor.tuna.am/MONITOR_ID/test?status=start"
curl -s "https://monitor.tuna.am/MONITOR_ID/test?status=finish"
curl -s "https://monitor.tuna.am/MONITOR_ID/test?status=fail"

# С сообщением (корректная кодировка UTF-8)
curl -G "https://monitor.tuna.am/MONITOR_ID/test" \
--data-urlencode "message=Backup completed successfully"

# С указанием хоста и сообщением
curl -G "https://monitor.tuna.am/MONITOR_ID/test?host=server-01" \
--data-urlencode "message=Все системы работают"

Параметры запроса

ПараметрОписание
statusСтатус сигнала: ping, start, finish, fail
hostИдентификатор хоста (полезно при нескольких источниках)
messageПроизвольное сообщение

Подробнее: Работа с мониторами в CLI


Статусы

СтатусОписание
NewМонитор создан, ожидается первый запуск
RunningЗадача выполняется (получен сигнал start)
UpЗадача успешно завершена (получен сигнал finish)
DownЗадача завершилась с ошибкой или не запустилась вовремя

Логирование

При использовании tuna monitor exec система автоматически захватывает stdout и stderr вашей задачи. Логи можно просмотреть в интерфейсе в истории событий монитора.

скриншот с сообщением в message

Для отключения отправки логов используйте флаг --no-stdout:

tuna monitor exec MONITOR_ID --no-stdout -- ./task.sh

Примеры использования

Backup PostgreSQL

#!/bin/bash
# /scripts/backup-postgres.sh

tuna monitor exec MONITOR_ID -- pg_dump -U postgres mydb > /backups/mydb_$(date +%Y%m%d).sql

Синхронизация данных

#!/bin/bash
# /scripts/sync-data.sh

tuna monitor exec MONITOR_ID -- rsync -avz /data/ remote:/backup/data/

Crontab

# Backup базы данных каждую ночь в 3:00
0 3 * * * tuna monitor exec MONITOR_ID -- /scripts/backup-db.sh

# Очистка логов каждый час
0 * * * * tuna monitor exec MONITOR_ID -- /scripts/cleanup-logs.sh