Jarvis — это веб-интерфейс с открытым исходным кодом для Prometheus Alertmanager: интерактивный, работающий в реальном времени, разворачиваемый на собственной инфраструктуре.
Проект создан под впечатлением от Karma — отличного инструмента. Однако в нём не хватало возможностей, важных для ежедневного дежурства: полного сохранения состояния после перезапуска, комментариев к отдельным алертам, системы «взятия в работу» (claiming), чтобы команда видела, кто что обрабатывает, а также надёжной основы для дальнейшей операционной автоматизации. Jarvis — результат работы над этими задачами.
Две с половиной минуты о Jarvis: все кластеры в реальном времени, полная история алертов, взятие в работу и комментарии, а также тишины (silences) с предпросмотром.
Зачем нужен Jarvis?
Большинство UI для Alertmanager — это дашборды только для чтения. Jarvis создан для команд, которым нужно реагировать на алерты, а не просто наблюдать за ними:
-
Алерты в реальном времени через WebSocket — перезагрузка страницы не нужна
-
Постоянная история — полный жизненный цикл алертов хранится в SQLite или PostgreSQL; период ожидания (grace period) предотвращает шум от ложных резолвов при пропущенном опросе
-
Claiming и комментарии — возьмите алерт в работу, оставляйте заметки, привязанные к fingerprint и переживающие перезапуски и повторные срабатывания
-
Мультикластер и HA для Alertmanager — все кластеры в одном представлении; направьте один кластер на HA gossip-группу — алерты дедублируются по fingerprint
-
Тишины (silences) без неожиданностей — живой предпросмотр того, что именно попадёт под тишину, прежде чем вы её создадите; одним кликом — Fast-Silence, плюс переиспользуемые шаблоны
-
Сохранённые фильтры — чипы с матчерами Alertmanager, доступные по URL, один из которых можно задать по умолчанию
-
Авторизация на уровне кластера — OAuth2 client credentials (с автообновлением токена), bearer-токен, basic auth или произвольные заголовки для защищённого Alertmanager
-
Один бинарный файл — один контейнер; SQLite не требует внешних сервисов; для нескольких реплик переключитесь на PostgreSQL; Helm-чарт включён
-
Аутентификация пользователей — опциональный вход в UI: встроенные учётные записи с панелью администратора или любой OIDC-провайдер
Беспокоитесь о расползании функциональности? Область применения Jarvis намеренно ограничена — что инструмент делает и чем никогда не станет, зафиксировано в разделе Scope. Полный список возможностей со скриншотами — в разделе Features. Вся документация — начало работы, развёртывание, справочник по конфигурации, концепции — находится на kj187.github.io/jarvis.
Разработка с помощью ИИ
Код пишет ИИ; 20 лет опыта в разработке программного обеспечения — 9 из которых в DevOps и платформенной инженерии — задают ему направление, так что это не «вайб-кодинг». Каждый коммит и запуск CI проверяется по тем же стандартам, что и код, написанный вручную: gosec, govulncheck, golangci-lint, pnpm audit, а также многоуровневая защита (строгий CSP, файловая система контейнера только для чтения, no-new-privileges). Подробнее о подходе и его ограничениях — в разделе AI and engineering, детали безопасности — в Security Policy.
Быстрый старт
Клонировать репозиторий не нужно — всё запускается из опубликованного образа.
Понадобятся только Podman или Docker и доступный Alertmanager — пример ниже его не поднимает. Замените http://alertmanager:9093 на адрес вашего экземпляра; если он работает вне этой compose-сети, укажите реальный адрес.
Просто хотите посмотреть? Руководство по демо поднимает Jarvis и одноразовый Alertmanager с реалистичными алертами за пять минут.
services:
jarvis:
image: ghcr.io/kj187/jarvis:2.1.0
ports:
- "8080:8080"
volumes:
- jarvis_data:/data
read_only: true
tmpfs:
- /tmp
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
environment:
JARVIS_CLUSTER_1_NAME: dev
JARVIS_CLUSTER_1_ALERTMANAGER_URL: http://alertmanager:9093
restart: unless-stopped
volumes:
jarvis_data:
podman compose up -d
Откройте http://localhost:8080. Инструкции по развёртыванию в Kubernetes/Helm, проверке подписей и обновлению — в разделах Kubernetes deployment и Upgrading; все переменные окружения перечислены в Configuration reference.
Важно: Jarvis — внутренний инструмент, предназначенный для развёртывания за VPN или прокси с аутентификацией, а не для прямого доступа из интернета. Подробнее об условиях развёртывания и модели угроз — в разделе Security model.
Совместимость
Jarvis использует исключительно Alertmanager HTTP API v2, появившееся в Alertmanager 0.16.0. Проверенные версии перечислены в разделе Compatibility.
Участие в разработке
Мы рады любым вкладу! Прочитайте Contributing Guide — там описан рабочий процесс разработки, порядок оформления pull request’ов и стандарты написания кода.
Лицензия
Apache 2.0 — см. LICENSE. Образ контейнера содержит тексты лицензий Go- и npm-зависимостей по пути /THIRD_PARTY_LICENSES.