📖 Термины этого урока
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 для ошибок
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.
Бесплатные сервисы
- Sentry — 5K событий/мес free.
- UptimeRobot — 50 мониторов free.
- BetterStack — 5 мониторов free + status page.
- Grafana Cloud — 10K log streams free + metrics.
- Loki — self-hosted log aggregation, бесплатно.
Что мониторить минимум
- Uptime каждого сервиса (через /health)
- Все exceptions (через Sentry)
- Cost per agent per day
- Latency LLM запросов (если >10 сек — что-то не так)
- Error rate (если >5% запросов с ошибками — алерт)
🏗️ Реальный пример 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 ключей.