Привет, Хабр.
Сегодня с гордостью и лёгкой дрожью в руках сообщаю: Я наконец-то закончил свой мониторинг ошибок. И он запустился. Сам. Без поддержки.
Представляю — Warden Community Edition: open-source, self-hosted, легковесный и, самое главное, не требует 16 GB RAM, чтобы сказать, что ручка отвалилась с кодом 500
.
История одной деплойки
Представьте: Вы хотите собирать ошибки в своём бэкенде. Логично, да? Открываете Sentry. Хотите self-hosted. Запускаете docker-compose up
… и получаете:
Starting sentry_onpremise_snuba-queries_1 ...
Starting sentry_onpremise_symbolicator_1 ...
Starting sentry_onpremise_kafka_1 ...
Starting sentry_onpremise_redis_1 ...
Starting sentry_onpremise_clickhouse_1 ...
Starting sentry_onpremise_postgres_1 ...
Starting sentry_onpremise_web_1 ...
Starting sentry_onpremise_worker_1 ...
Starting sentry_onpremise_cron_1 ...
Starting sentry_onpremise_ingest-consumer_1 ...
Starting sentry_onpremise_attachements_1 ...
Starting sentry_onpremise_snuba-api_1 ...
Starting sentry_onpremise_snuba-transactions_1 ...
Вы смотрите на это как на архитектуру космического корабля.
Через 20 минут один из сервисов падает.
Вы не знаете, кто он.
Вы не знаете, зачем он.
Но без него ничего не работает.
И тут вы понимаете:
«Я хотел просто логировать
panic: runtime error: invalid memory address
… А получил дежурство в SRE.»
Warden: «Мы не будем вас мучить»
Я создал Warden, чтобы не превращать простую задачу в инженерный подвиг.
Он делает одно:
Собирает ошибки из ваших приложений
Группирует их
Присылает вам в Telegram: "Эй, у тебя опять
nil pointer
в хендлере /api/user"
И всё.
Никакого performance monitoring, никакого session replay, никакого "о, посмотри, как пользователь скроллил 37 секунд перед тем, как нажать крестик".
Warden не следит за вами. Он просто говорит, когда у вас что-то сломалось.
Что в коробке (и чего нет)
Работает с Sentry SDK
Просто поменяйте DSN — и ваши Sentry.CaptureException()
начнут лететь в Warden. Без единой строчки кода.
Группировка, аналитика, релизы
Видно, какие ошибки новые, какие вернулись, какие починили.
Уведомления: где угодно, как угодно
Telegram, Slack, Email, Mattermost, Пачка (да, та самая), Webhooks. Можете настроить, чтобы Warden писал вам в личку: "Ну ты и накосячил".
RBAC, команды, 2FA для безопасности
Можно делить доступ:
Саша — разработчик
Петя — админ, может добавлять пользователей
Вася — владелец, может делать с проектом все
Архитектура: PostgreSQL + ClickHouse + Kafka + Redis + rom8726/di
Нет:
Tracing
Profiling
User feedback
Session recording
AI-анализа настроения пользователя по его кликам
И это нормально. Вы не платите за то, чего не используете.
Вы не тратите RAM на то, что не нужно.
Как запустить? Проще, чем кофе
git clone
https://github.com/rom8726/warden-ce
cd warden-ce
cp prod/docker-compose.yml /opt/warden/
cp prod/config.env.example /opt/warden/config.env
cp prod/platform.env.example /opt/warden/platform.env
cd /opt/warden
docker compose --env-file platform.env up -d
Настройте config.env
и platform.env
(там немного подставить своего) — и готово.
Или просто запустите установщик:
go build -o bin/installer ./cmd/installer
./bin/installer install
Он поможет шаг за шагом настроить продакшен окружение.
А ещё там есть мои фреймворки xD
testy — для декларативного описания тестов в YAML. Можно ставить breakpoints в коде и дебажить как обычное приложение. Плюс фикстуры в PostgreSQL через pgfixtures.
di — для автоматического резолва зависимостей. Компоненты инициализируются и подставляются в конструкторы других компонентов.
Попробовать? Конечно
Если:
вы устали от мониторингов, которые сложнее самого приложения,
хотите что-то простое, рабочее и под контролем,
или просто любите open-source
— тогда Warden для вас.
Буду рад:
⭐ Звёздочкам (они бесплатные, как и сам проект)
Комментариям в Issues (особенно: "а почему так?")
PR’ам (даже если исправите опечатку в README)
В заключение
Warden — это мониторинг ошибок, который не притворяется всем подряд.
Он не хочет быть платформой.
Он не хочет "оцифровывать ваш бизнес".
Он просто хочет, чтобы вы вовремя починили nil pointer exception
.
И, возможно, выпили кофе. А то опять что-нибудь сломаете.
Комментарии (2)
AlexAkulov
31.07.2025 08:57У Sentry слишком много компонентов, используйте нашу тулу где потребуется всего лишь Clickhouse, Postgres, Redis и Kafka (ну и возможно ещё pgbouncer, sentinel, zookeeper и stolon).
Удивительно, почему для логов, метрик и трейсов достаточно одного otel-collector + Clickhouse с графаной. А тупо для агрегации ошибок которых в сотни раз меньше, что у вас, что у Sentry надо ещё один мониторинг поднимать, с большим количеством компонентов.
Эти ошибки и так уже есть у меня в КХ, почему нельзя просто плагин для графаны написать который позволит их отображать красиво? Типа если всё будет просто и понятно тогда поддержку продать не получится или что?
NikSan
выглядит интересно, попробую на днях