6.0 KiB
6.0 KiB
NATS Queue Visualizer
Веб-приложение на Go для визуализации содержимого очередей NATS в реальном времени.
Возможности
- 🔄 Подписка на NATS subjects/очереди в реальном времени
- 📊 Веб-интерфейс: продюсер/потребитель по сообщениям, активные подключения к NATS
- 🔍 Фильтрация по subject и поиск по содержимому
- 📈 Статистика: количество сообщений, subjects, общий размер
- 🌐 WebSocket для обновлений в реальном времени
- 💾 Хранение последних N сообщений в памяти
Требования
- Go 1.21 или выше
- NATS сервер (локальный или удаленный)
Установка
- Клонируйте репозиторий или скачайте файлы
- Установите зависимости:
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"
# URL HTTP-мониторинга NATS (порт 8222) — для отображения активных подключений
# nats_monitor_url: "http://localhost:8222"
# Список subjects для подписки (через запятую)
subjects: ">"
# Порт HTTP сервера
port: "8080"
# Максимальное количество сообщений для хранения в памяти
max_messages: 1000
Использование
Базовое использование
go run main.go
Приложение автоматически загрузит конфигурацию из config.yaml в текущей директории.
Использование другого конфигурационного файла
go run main.go /path/to/custom-config.yaml
Можно указать путь к другому конфигурационному файлу в качестве аргумента командной строки.
Примеры subjects
>- все subjectsorders.*- все subjects, начинающиеся сorders.events.>- все subjects в пространстве именeventsorders.created,orders.updated- конкретные subjects через запятую
Веб-интерфейс
Откройте браузер и перейдите на http://localhost:8080
Функции интерфейса:
- Фильтр по subject - выберите конкретный subject из выпадающего списка
- Поиск - введите текст для поиска по содержимому сообщений
- Очистить - удалить все сообщения из памяти (не влияет на NATS)
- Обновить - перезагрузить все сообщения с сервера
Статистика
Интерфейс показывает:
- Общее количество полученных сообщений
- Количество уникальных subjects
- Общий размер всех сообщений в байтах
API Endpoints
GET /- веб-интерфейсGET /api/messages?subject=...- получить все сообщения (опционально отфильтрованные по subject)GET /api/subjects- получить список всех subjectsWS /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- клиент NATSgithub.com/gorilla/websocket- WebSocket поддержкаgopkg.in/yaml.v3- парсер YAML конфигурации
Лицензия
MIT