Перейти к содержанию

Karma

Назначение

Karma — это лёгкий веб-интерфейс к Alertmanager, облегчающий поиск, фильтрацию и массовые действия с алертами. В стек «Monitoring Services» Karma разворачивается в Docker и проксируется через Traefik, находясь в той же сети monitoring_net.

Karma не заменяет Alertmanager, а лишь предоставляет удобный фронтенд к его API.


Структура каталогов

config/karma/
└─ deployment/docker/
   ├─ .env_example      # переменные окружения (копировать в .env)
   ├─ docker-compose.yml# основной compose-файл
   └─ karma.yaml        # конфигурация интерфейса

Быстрый обзор файлов

Файл Назначение
.env_example шаблон переменных окружения: домен, порт, имя compose-проекта
docker-compose.yml описывает контейнер ghcr.io/prymitive/karma, Traefik-labels и монтирует karma.yaml
karma.yaml UI-настройки (частота обновления, видимость фильтров, предзагруженные получатели)

Переменные окружения (.env)

Переменная Описание Пример
COMPOSE_PROJECT_NAME (опц.) префикс контейнеров в Docker karma
VIRTUAL_HOST Домен, по которому будет доступен UI alerts.example.com
VIRTUAL_PORT Порт, который слушает Karma внутри контейнера 8080

Скопируйте пример и отредактируйте:

cd config/karma/deployment/docker
cp .env_example .env
nano .env

Развёртывание

  1. Убедитесь, что на хосте уже создана внешняя сеть: bash docker network create monitoring_net || true
  2. Запустите сервис: bash docker compose up -d
  3. Откройте https://$VIRTUAL_HOST в браузере. Должны появиться алерты Alertmanager.

Проверка работы

  • В контейнере: bash docker compose logs -f karma Убедитесь, что Karma успешно подключился к Alertmanager (Loaded n alerts in …).
  • На стороне Alertmanager endpoint /api/v2/alerts должен быть доступен из сети monitoring_net.

Кастомизация UI (karma.yaml)

Пример конфигурации:

receivers:
  keep:
    - telegram_bot_1h      # отображать только эти получатели по умолчанию
    - telegram_bot_12h

ui:
  refresh: 30s             # интервал авто-обновления
  hideFiltersWhenIdle: true
  minimalGroupWidth: 420   # px
  alertsPerGroup: 5
  collapseGroups: collapsedOnMobile
  • receivers.keep — список Alertmanager-receiver’ов, которые отображаются без фильтра.
  • ui.refresh — частота обновления страницы.
  • После изменения файла выполните docker compose restart karma.

Полный список настроек см. в документации проекта.


Обновление

docker compose pull karma
docker compose up -d

Удаление

docker compose down --remove-orphans

Контейнеры будут остановлены, но сеть monitoring_net и Traefik останутся нетронутыми.


TL;DR

cd config/karma/deployment/docker
cp .env_example .env
# правим домен и порт

docker compose up -d   # запустить
# …
docker compose pull karma && docker compose up -d   # обновить

Теперь Karma доступен по указанному домену и показывает алерты из вашего Alertmanager!