Мониторинг аптайма

Уведомления о падении сайта на телефон.

Cron, curl или ваш health-check script отправляет зашифрованный push на iPhone и Android, если сайт или API перестали отвечать.

Зачем Nerve для uptime checks

Для небольшого VPS, side project или внутреннего API не всегда нужен большой monitoring stack. Nerve — это короткий зашифрованный push-канал для health checks, которые уже пишутся одной командой.

Проверка HTTP-статуса

#!/bin/sh
URL="https://example.com/health"
STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$URL")

if [ "$STATUS" != "200" ]; then
  echo "DOWN: $URL returned $STATUS" | nerve send --severity critical
fi

Cron каждую минуту

* * * * * NERVE_DSN="nerve://TOKEN:[email protected]" /usr/local/bin/check-site.sh

Алерт по latency

TIME=$(curl -s -o /dev/null -w "%{time_total}" https://example.com)
awk "BEGIN { exit !($TIME > 2.0) }" \
  && echo "SLOW: example.com took ${TIME}s" | nerve send --severity alert

Несколько endpoint'ов

for url in https://app.example.com/health https://api.example.com/status; do
  code=$(curl -s -o /dev/null -w "%{http_code}" "$url")
  if [ "$code" != "200" ]; then
    echo "health check failed: $url -> $code" | nerve send --severity critical
  fi
done

Не алертить на один случайный таймаут

Интернет иногда моргает. Для публичного сайта лучше считать endpoint down после 2-3 неудачных проверок подряд.

STATE="/tmp/site-fail-count"
code=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 https://example.com/health || echo 000)

if [ "$code" != "200" ]; then
  count=$(( $(cat "$STATE" 2>/dev/null || echo 0) + 1 ))
  echo "$count" > "$STATE"
  [ "$count" -ge 3 ] && echo "DOWN: example.com failed ${count} checks" | nerve send --severity critical
else
  rm -f "$STATE"
fi

Проверять не только HTTP 200

Иногда сайт отвечает 200, но показывает maintenance page или пустой HTML. Добавьте smoke-проверку ожидаемого текста или JSON-поля.

body=$(curl -fsS --max-time 10 https://example.com/health)
echo "$body" | grep -q '"ok":true' \
  || echo "health body invalid: example.com" | nerve send --severity alert

FAQ

Можно использовать Nerve для мониторинга аптайма?

Да. Запустите cron job, который проверяет endpoint через curl и отправляет ошибку в nerve send.

Nerve заменяет полноценный monitoring?

Нет. Nerve — лёгкий зашифрованный канал уведомлений для скриптов, cron jobs и health checks.

Алерты зашифрованы?

Да. Текст алерта шифруется до отправки на relay.