# Мониторинг Cron

Source: https://instatus.com/help/ru/monitoring/cron

Cron-мониторы дают каждой задаче по расписанию (резервной копии, пакетной обработке или регулярному скрипту) уникальный URL для пинга и оповещают вас, когда пинг опаздывает или отсутствует. Задача помечается как деградировавшая, если пропустила период, и как упавшая, если пропустила ещё и отсрочку.

Как и с [другими мониторами](https://instatus.com/help/ru/monitoring), когда cron-задача падает, вы можете вместе с командой [устранить инцидент](https://instatus.com/help/ru/incident-response) и при желании обновить [страницу статуса](https://instatus.com/help/ru/status-page).

| At a glance | Details |
| :-- | :-- |
| [Как это работает](https://instatus.com/help/ru/monitoring/cron#тип-монитора) | Задача пингует уникальный URL при каждом запуске |
| [Период](https://instatus.com/help/ru/monitoring/cron#проверка-успешна-если) | Как часто должна выполняться задача |
| [Отсрочка](https://instatus.com/help/ru/monitoring/cron#проверка-успешна-если) | Запас времени до того, как задача считается упавшей |
| [Опоздавший пинг](https://instatus.com/help/ru/monitoring/cron#проверка-успешна-если) | Деградация после периода, падение после отсрочки |
| [Сигнал о сбое](https://instatus.com/help/ru/monitoring/cron#сигнал-о-сбое) | Запросите URL с добавленным /fail |
| [Время выполнения](https://instatus.com/help/ru/monitoring/cron#измерение-времени-выполнения-задачи) | Пинг /start при старте задачи, URL при завершении |

Вот пример того, как выглядит список ваших cron-мониторов:

![Список cron-мониторов](https://instatus.com/help/monitors/cron-list.png)

## Что делает cron-монитор?

- Проверка того, что cron-задачи выполняются вовремя (по пингам от самих задач).
- Оповещение, если задача опаздывает или не завершается.
- Оповещения через Slack, email, SMS, телефонный звонок и другие каналы.

Если нажать на cron-монитор, вы увидите подробности:

![Подробности cron-монитора](https://instatus.com/help/monitors/cron-item.png)

## Как добавить cron-монитор?

Перейдите в свой проект → Мониторы → Добавить монитор, выберите **Cron/Heartbeat**, затем направьте задачу на сгенерированный URL и задайте её период и отсрочку.

![Добавить монитор](https://instatus.com/help/monitors/cron-add.png)

### Тип монитора

Выберите тип монитора **Cron/Heartbeat**.

![Тип монитора Cron](https://instatus.com/help/monitors/type-cron.png)

Для вас будет сгенерирован уникальный URL. Ваша cron-задача должна отправлять HTTP-запрос (`HEAD`, `GET` или `POST`) на этот URL при каждом запуске.

### Проверка успешна, если

Cron-монитор считается успешным, когда задача пингует сгенерированный URL по расписанию. Вы можете настроить:

- **Период:** как часто должна выполняться задача (например, каждые 15 минут).
- **Отсрочка:** дополнительное время, после которого задача считается упавшей.

Если период истёк, а пинга от задачи не было, монитор будет помечен как деградировавший.

Если истекла отсрочка, а пинга по-прежнему нет, монитор будет помечен как упавший.

Вы можете настроить [оповещения](https://instatus.com/help/ru/monitoring/alerts), чтобы получать уведомления, когда задача падает, деградирует или восстанавливается.

## Сигнал о сбое

Отправьте запрос на URL монитора с добавленным `/fail`, чтобы пометить задачу как упавшую, даже если она выполнилась и отправила пинг.

Это удобно, если ваш скрипт столкнулся с ошибкой и вы хотите, чтобы Instatus сразу зафиксировал сбой задачи.

- **Пинг об успехе**: `https://cron.instatus.com/your-unique-url`
- **Пинг о сбое**: `https://cron.instatus.com/your-unique-url/fail`

При получении сигнала о сбое монитор будет помечен как упавший, а оповещения отправятся немедленно согласно вашим [настройкам оповещений](https://instatus.com/help/ru/monitoring/alerts).

## Измерение времени выполнения задачи

Отправьте два запроса: `/start` при старте задачи и пинг об успехе или сбое при её завершении — Instatus запишет время между ними как время выполнения задачи:

1. **Сигнал о старте**: отправьте запрос на `/start`, когда задача начинается
2. **Сигнал об успехе или сбое**: отправьте запрос на базовый URL, когда задача завершается или падает

- **Пинг о старте**: `https://cron.instatus.com/your-unique-url/start`
- **Пинг об успехе**: `https://cron.instatus.com/your-unique-url`
- **Пинг о сбое**: `https://cron.instatus.com/your-unique-url/fail`

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

Если задача упала после отправки сигнала о старте, отправьте сигнал о сбое вместо сигнала об успехе — так она будет помечена как упавшая, а время выполнения всё равно зафиксируется.

Поздравляем, вы добавили свой первый cron-монитор!

- [Ping-мониторы](https://instatus.com/help/ru/monitoring/ping): Узнайте, как следить за доступностью и производительностью ваших ping-эндпоинтов
