2026-02-06 19:30:35 +07:00
2026-02-06 15:41:01 +07:00
2026-02-06 15:41:01 +07:00
2026-02-06 15:41:01 +07:00
2026-02-06 15:41:01 +07:00
2026-02-06 19:30:35 +07:00
2026-02-06 15:41:01 +07:00
2026-02-06 15:41:01 +07:00
2026-02-06 15:41:01 +07:00
2026-02-06 15:50:12 +07:00
2026-02-06 15:41:01 +07:00

NATS Queue Visualizer

Веб-приложение на Go для визуализации содержимого очередей NATS в реальном времени.

Возможности

  • 🔄 Подписка на NATS subjects/очереди в реальном времени
  • 📊 Красивый веб-интерфейс для просмотра сообщений
  • 🔍 Фильтрация по subject и поиск по содержимому
  • 📈 Статистика: количество сообщений, subjects, общий размер
  • 🌐 WebSocket для обновлений в реальном времени
  • 💾 Хранение последних N сообщений в памяти

Требования

  • Go 1.21 или выше
  • NATS сервер (локальный или удаленный)

Установка

  1. Клонируйте репозиторий или скачайте файлы
  2. Установите зависимости:
go mod download

Конфигурация

Все настройки приложения находятся в файле config.yaml. Создайте этот файл или отредактируйте существующий:

# URL NATS сервера
nats_url: "nats://localhost:4222"

# Аутентификация NATS (используйте один из вариантов)
# Вариант 1: Токен
# token: "your-token-here"

# Вариант 2: Имя пользователя и пароль
# username: "your-username"
# password: "your-password"

# Список subjects для подписки (через запятую)
subjects: ">"

# Порт HTTP сервера
port: "8080"

# Максимальное количество сообщений для хранения в памяти
max_messages: 1000

Использование

Базовое использование

go run main.go

Приложение автоматически загрузит конфигурацию из config.yaml в текущей директории.

Использование другого конфигурационного файла

go run main.go /path/to/custom-config.yaml

Можно указать путь к другому конфигурационному файлу в качестве аргумента командной строки.

Примеры subjects

  • > - все subjects
  • orders.* - все subjects, начинающиеся с orders.
  • events.> - все subjects в пространстве имен events
  • orders.created,orders.updated - конкретные subjects через запятую

Веб-интерфейс

Откройте браузер и перейдите на http://localhost:8080

Функции интерфейса:

  1. Фильтр по subject - выберите конкретный subject из выпадающего списка
  2. Поиск - введите текст для поиска по содержимому сообщений
  3. Очистить - удалить все сообщения из памяти (не влияет на NATS)
  4. Обновить - перезагрузить все сообщения с сервера

Статистика

Интерфейс показывает:

  • Общее количество полученных сообщений
  • Количество уникальных subjects
  • Общий размер всех сообщений в байтах

API Endpoints

  • GET / - веб-интерфейс
  • GET /api/messages?subject=... - получить все сообщения (опционально отфильтрованные по subject)
  • GET /api/subjects - получить список всех subjects
  • WS /ws - WebSocket для получения сообщений в реальном времени

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

Аутентификация с токеном

nats_url: "nats://nats.example.com:4222"
token: "your-secret-token"
subjects: ">"
port: "8080"
max_messages: 1000

Аутентификация с username/password

nats_url: "nats://nats.example.com:4222"
username: "myuser"
password: "mypassword"
subjects: ">"
port: "8080"
max_messages: 1000

Подписка на конкретные subjects

Отредактируйте config.yaml:

nats_url: "nats://localhost:4222"
subjects: "orders.created,orders.updated,orders.deleted"
port: "8080"
max_messages: 1000

Подписка на все subjects в пространстве имен

subjects: "events.>"

Подключение к удаленному NATS серверу

nats_url: "nats://nats.example.com:4222"

Увеличение лимита сообщений

max_messages: 5000

Сборка

Для создания исполняемого файла:

go build -o nats-ui main.go

Затем запустите:

./nats-ui

Или с указанием конфигурационного файла:

./nats-ui /path/to/config.yaml

Структура проекта

nats-ui/
├── main.go          # Основной код приложения
├── index.html       # Веб-интерфейс
├── config.yaml      # Конфигурационный файл
├── go.mod           # Зависимости Go
└── README.md        # Документация

Зависимости

  • github.com/nats-io/nats.go - клиент NATS
  • github.com/gorilla/websocket - WebSocket поддержка
  • gopkg.in/yaml.v3 - парсер YAML конфигурации

Лицензия

MIT

Description
nats-ui
Readme 158 KiB
Languages
HTML 60.6%
Go 37.2%
Dockerfile 2.2%