Production Mastery · Часть 1
Урок 2 — Мониторинг и алерты
⏱ 15 минут🔒 Платный урок
Урок 17 из 20 · 85% пройдено
📖 Термины этого урока
Logging — запись событий программы в файл/БД. «Что и когда произошло». Основа отладки.
Health check — простой эндпоинт /health возвращающий «я жив». Внешний сервис проверяет каждую минуту.
Sentry — сервис для отслеживания ошибок. Бесплатный тариф 5K событий/мес. Видишь точно где сломалось.
Uptime monitoring — внешний сервис проверяет твой агент извне. UptimeRobot, BetterStack — бесплатные.
Алерт — пуш-уведомление когда что-то не так. В Telegram, email, SMS.
❌ До этого урока
  • Узнаёшь о падении агента через 3 дня случайно
  • Не знаешь что сломалось — копаешь логи руками
  • Нет уведомлений когда агент молчит
✅ После этого урока
  • Падение → пуш в Telegram за 30 секунд
  • Видишь точное место ошибки в Sentry
  • Health check + uptime monitoring настроены

Три уровня видимости

1️⃣ Logs — что происходило

Каждое событие в файле. Поиск, фильтр, анализ. Минимум который должен быть всегда.

2️⃣ Errors — что сломалось

Sentry получает каждый exception с stack trace. Видишь строку кода где упало.

3️⃣ Uptime — жив или нет

Внешний сервис пингует /health каждую минуту. Не ответил → алерт в Telegram.

Шаг 1 · Структурированное логирование

👤 Промпт
В моём currency-agent добавь профессиональное логирование: 1. JSON-формат логов (один event = одна строка JSON). Поля: timestamp, level (info/warn/error), event_name, message, context. 2. Логи пишутся в /var/log/agents/currency.log + дублируются в stdout. 3. Log rotation: новый файл каждый день, хранить 14 дней. 4. В коде заменить все print() на структурированные log.info() / log.error(). Сделай через стандартную библиотеку logging + python-json-logger.
💡 JSON-логи vs обычные

Обычные логи: «2026-05-21 10:30 INFO fetched price 92.45». Для машины — трудно парсить.
JSON-логи: {"ts":..., "event":"price_fetched", "rate":92.45}. Можно grep по полям, фильтровать, агрегировать. Стандарт production-систем.

Шаг 2 · Sentry для ошибок

1
Открой sentry.io → Sign Up (бесплатно).
2
«Create Project» → Python → имя «currency-agent». Получишь DSN-строку.
👤 Промпт
Добавь Sentry в currency-agent. DSN: https://xxx@xxx.ingest.sentry.io/yyy Интеграция: 1. pip install sentry-sdk. 2. Инициализация в начале скрипта. 3. Контекстные тэги: agent_name, environment (prod/dev). 4. Все exceptions автоматически идут в Sentry. Тест: сделай искусственно ошибку и покажи мне как она появится в Sentry dashboard.
🤖 Claude
✓ Установил sentry-sdk
✓ Добавил инициализацию
✓ Сделал тестовый raise Exception("test from claude")
✓ Запустил скрипт

Открой sentry.io dashboard → Issues. Должна быть запись:
«Exception: test from claude (currency.py:42)»
с полным stack trace и environment.

Теперь когда любой агент упадёт — увидишь точное место.

Без Sentry я бы потерял на отладку 2-3 дня. С Sentry — fix за 20 минут (вместе с repro в их UI).

Шаг 3 · Health check + Uptime monitoring

👤 Промпт
В currency-agent добавь HTTP health endpoint: 1. Минимальный FastAPI server на порту 8800. 2. GET /health → возвращает {status, last_run_at, uptime_seconds}. 3. Если последний успешный запуск > 2 часов назад — return 503. 4. systemd-сервис для этого http endpoint. Затем — настроить UptimeRobot (бесплатно): проверка /health каждые 5 минут. При downtime → Telegram алерт. Покажи как добавить мониторинг в их UI и где взять Telegram webhook.

Шаг 4 · Telegram алерт-канал

Все алерты — в один Telegram-канал (отдельный от обычного бота):

👤 Промпт
Создай агентов alerter.py — централизованный приёмник алертов от всех моих сервисов. Поднимает FastAPI на порту 8801. Endpoints: - POST /alert/critical — пушит в Telegram с 🚨 и звуком - POST /alert/warning — пушит ⚠️ без звука - POST /alert/info — добавляет в daily-digest вместо мгновенного пуша Body: {service, message, link?} Все сервисы (currency-agent, weather-agent, telegram-bot) могут слать сюда события. Sentry тоже сюда конфигурируем через webhook.

Cost budget — самый важный алерт

👤 Промпт
В каждом моём агенте который использует Claude API — добавь: 1. После каждого LLM-запроса — считай токены × цену → накопительный счётчик за день. 2. Если cost за сутки превысил $10 — пуш в /alert/critical «agent X потратил $X сегодня». 3. Если $50 за сутки — kill switch: останавливаем агент через systemctl stop. Это защита от бесконечных циклов и runaway costs.
⚠️ Cost runaway — реальный риск
Один разработчик потратил $4000 за ночь когда баг закацклил агент в бесконечный loop. Кому-то заплатил Anthropic за это. Cost budget — обязательная защита для production.

Бесплатные сервисы

Что мониторить минимум

🏗️ Реальный пример GuardLabs — Oracle Guardian + Web Audit Guardian

У нас работают 2 уровня мониторинга. Oracle Guardian мониторит infra инциденты (сервисы, диски, RAM). Web Audit Guardian мониторит web-слой (URLs, SSL, language drift). Алерты идут в Telegram и в claude_inbox для AI-разбора.

Для клиентов — Web Audit от $9/мес или Antifraud detector $49. Сделаны на техниках из этого урока.

guardlabs.online → web audit ↗
🎯 Главное из этого урока

3 уровня видимости: logs (что было) + Sentry (что сломалось) + Uptime (жив ли). Cost budget обязателен — иначе один баг = $1000+ счёт. В следующем уроке — финальная защита: kill switches и hardening API ключей.

← Урок 1 Урок 3: Kill-switch + безопасность →