Документация | OpsPulse

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

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

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

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

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

Crontab

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

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

# Запускать бэкап в 3:00 ночи. Если успех -> отправить пинг.
0 3 * * * /home/user/backup.sh && curl -fsS -m 10 --retry 5 https://opspulse.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://opspulse.ru/ping/UUID

Bash

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

#!/bin/bash

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

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

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

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

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

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

Пример скрипта (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://opspulse.ru/ping/$UUID
else
    # Места МАЛО! Не шлем пинг -> OpsPulse поднимет тревогу через N минут.
    echo "Disk full: $CURRENT%"
fi

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

Docker & Healthchecks

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

services:
  app:
    image: my-app
    healthcheck:
      test: "curl -f https://opspulse.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://opspulse.ru/ping/UUID", timeout=10)
    except Exception as e:
        print(f"Error: {e}")
        # Не отправляем пинг -> OpsPulse поднимет алерт

PHP

<?php
// Ваш код 


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

Настройка Webhooks (Pro)

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

Slack

  1. Перейдите на страницу Slack API и нажмите Create New App.
  2. Выберите From scratch, введите имя (например, OpsPulse) и выберите ваш Workspace.
  3. В меню слева выберите Incoming Webhooks и переключите тумблер в On.
  4. Нажмите Add New Webhook to Workspace и выберите канал для уведомлений.
  5. Скопируйте Webhook URL (начинается на https://hooks.slack.com/...) и вставьте его в OpsPulse.

Discord

  1. Зайдите в настройки вашего сервера -> Integrations (Интеграции).
  2. Нажмите Webhooks -> New Webhook.
  3. Выберите канал, куда будут приходить алерты.
  4. Нажмите Copy Webhook URL и вставьте его в OpsPulse.

24 Bitrix24

  1. В левом меню Битрикс24 выберите Приложения -> Разработчикам (Developer resources).
  2. Выберите вкладку Другое -> Входящий вебхук (Inbound webhook).
  3. В правах доступа выберите Чат и уведомления (im).
  4. Нажмите Сохранить. Скопируйте URL из поля Вебхук для вызова REST API.
  5. Вставьте этот URL в настройки OpsPulse. Мы автоматически определим формат Битрикса.

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

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

Регистрация