nats-ui/README.md
2026-02-07 19:47:22 +07:00

198 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# NATS Queue Visualizer
Веб-приложение на Go для визуализации содержимого очередей NATS в реальном времени.
## Возможности
- 🔄 Подписка на NATS subjects/очереди в реальном времени
- 📊 Веб-интерфейс: продюсер/потребитель по сообщениям, активные подключения к NATS
- 🔍 Фильтрация по subject и поиск по содержимому
- 📈 Статистика: количество сообщений, subjects, общий размер
- 🌐 WebSocket для обновлений в реальном времени
- 💾 Хранение последних N сообщений в памяти
## Требования
- Go 1.21 или выше
- NATS сервер (локальный или удаленный)
## Установка
1. Клонируйте репозиторий или скачайте файлы
2. Установите зависимости:
```bash
go mod download
```
## Конфигурация
Все настройки приложения находятся в файле `config.yaml`. Создайте этот файл или отредактируйте существующий:
```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
```
## Использование
### Базовое использование
```bash
go run main.go
```
Приложение автоматически загрузит конфигурацию из `config.yaml` в текущей директории.
### Использование другого конфигурационного файла
```bash
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 для получения сообщений в реальном времени
## Примеры конфигурации
### Аутентификация с токеном
```yaml
nats_url: "nats://nats.example.com:4222"
token: "your-secret-token"
subjects: ">"
port: "8080"
max_messages: 1000
```
### Аутентификация с username/password
```yaml
nats_url: "nats://nats.example.com:4222"
username: "myuser"
password: "mypassword"
subjects: ">"
port: "8080"
max_messages: 1000
```
### Подписка на конкретные subjects
Отредактируйте `config.yaml`:
```yaml
nats_url: "nats://localhost:4222"
subjects: "orders.created,orders.updated,orders.deleted"
port: "8080"
max_messages: 1000
```
### Подписка на все subjects в пространстве имен
```yaml
subjects: "events.>"
```
### Подключение к удаленному NATS серверу
```yaml
nats_url: "nats://nats.example.com:4222"
```
### Увеличение лимита сообщений
```yaml
max_messages: 5000
```
## Сборка
Для создания исполняемого файла:
```bash
go build -o nats-ui main.go
```
Затем запустите:
```bash
./nats-ui
```
Или с указанием конфигурационного файла:
```bash
./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