Wiki
猫Table of Contents
Sentry Integration RU
English version: Sentry-Integration
Это краткая русскоязычная версия страницы про интеграцию с Sentry. Полная и наиболее актуальная страница: Sentry-Integration.
Идея
Laniakea намеренно не поставляет готовую интеграцию с Sentry. Точка расширения уже есть — интерфейс Observer (см. Error-Handling): в него прилетают все классифицированные ошибки из handler'ов, сцен, runner'ов и policy-проверок вместе с контекстом (plugin, handler kind, chat/user ID, update ID). Вызов observer'а panic-safe, так что упавший экспортёр не уронит бота.
Тегирование и фильтрация шума — вещи специфичные под конкретный бот, поэтому такой код лучше держать у себя, а не тянуть sentry-go в зависимости библиотеки.
Что отправлять
OnError— срабатывает на каждую ошибку из центрального потока handler/scene. ПропускайIsUserError(err)— это ожидаемые ошибки, уже показанные пользователю, а не баги.OnPolicyChecked— срабатывает на каждую policy-проверку, включая обычные отказы "не разрешено". В Sentry стоит слать толькоInternal-ошибки (неправильная конфигурация, упавший запрос к API).OnPollingRetry— сам по себе не инцидент, но полезен как breadcrumb перед реальной ошибкой.
Пример
Полный листинг — на странице Sentry-Integration. Кратко: реализуешь laniakea.Observer, у большинства методов пустое тело, а OnError/OnPolicyChecked/OnPollingRetry вызывают sentry.CaptureException(...) через sentry.GetHubFromContext(ctx), добавляя теги (plugin, handler_kind, handler_name, update_type) и chat_id/from_id/update_id в scope.SetContext(...).
Подключение
sentry.Init(sentry.ClientOptions{Dsn: dsn})
defer sentry.Flush(2 * time.Second)
bot.SetObserver(observability.SentryObserver{})
SetObserver(...) полностью заменяет observer (см. Bot-Options-and-Configuration). Если нужно несколько получателей (Sentry + метрики + логирование), пиши небольшой fan-out Observer, оборачивая вызов каждого дочернего observer'а своим recover(), чтобы паника в одном не блокировала остальных для того же события.
Что читать дальше
Navigation
Start here
Runtime and Architecture
- Bot-Lifecycle
- Webhook-Runtime
- Middleware
- Runners
- Error-Handling
- Logging
- Update-Routing-Model
- Policies
- Scenes
Interaction and Telegram API
- Inline-Keyboards-and-Payloads
- Auto-Generated-Commands
- Drafts
- Rich-Messages
- Localization
- Rate-Limiting
- tgapi-Overview