Jarvis: open-source UI для Prometheus Alertmanager

Логотип Jarvis

Jarvis — это веб-интерфейс с открытым исходным кодом для Prometheus Alertmanager: интерактивный, работающий в реальном времени, разворачиваемый на собственной инфраструктуре.

Проект создан под впечатлением от Karma — отличного инструмента. Однако в нём не хватало возможностей, важных для ежедневного дежурства: полного сохранения состояния после перезапуска, комментариев к отдельным алертам, системы «взятия в работу» (claiming), чтобы команда видела, кто что обрабатывает, а также надёжной основы для дальнейшей операционной автоматизации. Jarvis — результат работы над этими задачами.

Скриншот интерфейса Jarvis
Обзор 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.

© 2026 meganuke