@@ -1,156 +1,148 @@
|
|||||||
# HellreigN
|
# HellreigN
|
||||||
|
|
||||||
Платформа централизованного мониторинга логов, управления скриптами и деплоя агентов.
|
Агент внутренней диагностики инфраструктуры. Централизованный сбор логов, мониторинг нагрузки, управление скриптами и контроль состояния сервисов.
|
||||||
|
|
||||||
|
## Возможности
|
||||||
|
|
||||||
|
- **Сбор логов** — journald, Docker, Kubernetes, файлы
|
||||||
|
- **Метрики нагрузки** — CPU, RAM, диск, сеть в реальном времени
|
||||||
|
- **Контроль сервисов** — проверка alive/dead для systemd и Docker
|
||||||
|
- **Удалённое выполнение команд** — запуск скриптов и команд на агентах
|
||||||
|
- **Граф зависимостей** — определение причин сбоев, порядок запуска
|
||||||
|
- **Офлайн-буфер** — логи не теряются при потере связи
|
||||||
|
- **mTLS** — защищённое соединение между агентом и бэкендом
|
||||||
|
|
||||||
## Архитектура
|
## Архитектура
|
||||||
|
|
||||||
```
|
```
|
||||||
┌─────────────┐ gRPC (mTLS) ┌────────┐
|
┌─────────────────────────────────────────────────────────────┐
|
||||||
│ Agent 1 │ ───────────────────────► │ │
|
│ Инфраструктура │
|
||||||
└─────────────┘ │ │
|
│ │
|
||||||
┌─────────────┐ gRPC (mTLS) │Backend │ HTTP ┌──────────┐
|
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
||||||
│ Agent 2 │ ───────────────────────► │ :8080 │ ◄──────────────── │ Frontend │
|
│ │ Agent 1 │ │ Agent 2 │ │ Agent N │ │
|
||||||
└─────────────┘ │ :9001 │ │ :3000 │
|
│ │ (хост) │ │ (docker) │ │ (k8s) │ │
|
||||||
┌─────────────┐ gRPC (mTLS) │ │ └──────────┘
|
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
|
||||||
│ Agent N │ ───────────────────────► │ │
|
│ │ │ │ │
|
||||||
└─────────────┘ └───┬────┘
|
│ └──────────────┼──────────────┘ │
|
||||||
│
|
│ │ gRPC (mTLS) │
|
||||||
▼
|
│ ▼ │
|
||||||
┌─────────────┐
|
│ ┌───────────────┐ │
|
||||||
│ ClickHouse │
|
│ │ Backend │ ◄── REST API │
|
||||||
│ :8123/:9000│
|
│ │ :8080 / :9001│ │
|
||||||
└─────────────┘
|
│ └───────┬───────┘ │
|
||||||
|
│ │ │
|
||||||
|
│ ▼ │
|
||||||
|
│ ┌───────────────┐ │
|
||||||
|
│ │ ClickHouse │ ◄── Хранилище логов │
|
||||||
|
│ └───────────────┘ │
|
||||||
|
└─────────────────────────────────────────────────────────────┘
|
||||||
|
▲
|
||||||
|
│ HTTP
|
||||||
|
┌───────┴───────┐
|
||||||
|
│ Frontend │
|
||||||
|
│ :3000 │
|
||||||
|
└───────────────┘
|
||||||
```
|
```
|
||||||
|
|
||||||
### Компоненты
|
|
||||||
|
|
||||||
| Компонент | Описание |
|
|
||||||
|-----------|----------|
|
|
||||||
| **Backend** | Go (Gin + gRPC). REST API, gRPC сервер с mTLS, хранение токенов в SQLite |
|
|
||||||
| **Agent** | Go. Сбор логов (journald, docker, kubernetes, file), отправка метрик, выполнение команд |
|
|
||||||
| **Frontend** | React 19 + TypeScript + TailwindCSS + PrimeReact |
|
|
||||||
| **ClickHouse** | Хранилище логов |
|
|
||||||
|
|
||||||
## Быстрый старт
|
## Быстрый старт
|
||||||
|
|
||||||
### Требования
|
### Требования
|
||||||
|
|
||||||
- Docker + Docker Compose
|
- Docker + Docker Compose
|
||||||
- Go 1.26.1+ (для локальной разработки)
|
- Go 1.26.1+ (для локальной разработки)
|
||||||
- protoc + protoc-gen-go (для генерации proto)
|
|
||||||
|
|
||||||
### Деплой через Docker Compose
|
### Деплой
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd infra
|
cd infra
|
||||||
docker compose up -d --build
|
docker compose up -d --build
|
||||||
```
|
```
|
||||||
|
|
||||||
Это поднимет:
|
Поднимутся:
|
||||||
- **ClickHouse** — хранилище логов
|
- **ClickHouse** — хранилище логов
|
||||||
- **Backend** — API на порту `8080`, gRPC на `9001`
|
- **Backend** — API (`8080`) + gRPC (`9001`)
|
||||||
- **Frontend** — веб-интерфейс на порту `3000`
|
- **Frontend** — веб-интерфейс (`3000`)
|
||||||
- **Agent** — агент мониторинга (пример)
|
- **Agent** — пример агента
|
||||||
|
|
||||||
Откройте `http://localhost:3000`. Логин: `admin`, пароль: `admin123`.
|
Откройте `http://localhost:3000`. Логин: `admin`, пароль: `admin123`.
|
||||||
|
Что бы агент заработал нужно в веб интрфейсе найти кнопку создать токен получить его и вписать в конфигурацию агента
|
||||||
### Локальная разработка
|
### Локальная разработка
|
||||||
|
|
||||||
#### Backend
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd backend
|
# Backend
|
||||||
go mod tidy
|
cd backend && go run ./cmd/main.go
|
||||||
go run ./cmd/main.go
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Frontend
|
# Frontend
|
||||||
|
cd frontend && npm install && npm run dev
|
||||||
|
|
||||||
```bash
|
# Agent
|
||||||
cd frontend
|
cd agent && CONFIG_FILE=./config.yml go run main.go
|
||||||
npm install
|
|
||||||
npm run dev
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Agent
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd agent
|
|
||||||
go mod tidy
|
|
||||||
CONFIG_FILE=./config.yml go run main.go
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Конфигурация
|
## Конфигурация
|
||||||
|
|
||||||
### Backend (`infra/backend/config.yml`)
|
### Backend
|
||||||
|
|
||||||
|
`infra/backend/config.yml`:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
database:
|
database:
|
||||||
token_db: /var/lib/hellreign/tokens.db # SQLite база токенов и пользователей
|
token_db: /var/lib/hellreign/tokens.db
|
||||||
clickhouse_host: clickhouse:9000 # ClickHouse native порт
|
clickhouse_host: clickhouse:9000
|
||||||
clickhouse_user: default # Пользователь ClickHouse
|
clickhouse_user: default
|
||||||
clickhouse_password: testpassword # Пароль ClickHouse
|
clickhouse_password: testpassword
|
||||||
clickhouse_database: hellreign # База данных ClickHouse
|
clickhouse_database: hellreign
|
||||||
admin:
|
admin:
|
||||||
admin_name: Admin # Имя администратора
|
admin_name: Admin
|
||||||
admin_last_name: User # Фамилия администратора
|
admin_last_name: User
|
||||||
admin_login: admin # Логин администратора
|
admin_login: admin
|
||||||
admin_password: admin123 # Пароль администратора (смените!)
|
admin_password: admin123
|
||||||
```
|
```
|
||||||
|
|
||||||
### Agent (`infra/agent/config.yml`)
|
### Агент
|
||||||
|
|
||||||
|
`infra/agent/config.yml`:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
backend_url: http://backend:8080 # HTTP URL бэкенда
|
backend_url: http://backend:8080
|
||||||
grpc_url: backend:9001 # gRPC URL бэкенда
|
grpc_url: backend:9001
|
||||||
label: test-agent-1 # Уникальная метка агента
|
label: production-server-1
|
||||||
registration_token: "your-token-here" # Токен регистрации (сгенерировать в UI)
|
registration_token: "token-из-ui"
|
||||||
cert_dir: /etc/hellreign-agent/certs # Директория для mTLS сертификатов
|
cert_dir: /etc/hellreign-agent/certs
|
||||||
services:
|
services:
|
||||||
# Сбор логов из journald
|
# journald + проверка systemd
|
||||||
- name: system
|
|
||||||
type: journald
|
|
||||||
|
|
||||||
# Сбор логов Docker контейнера
|
|
||||||
- name: nginx
|
- name: nginx
|
||||||
|
type: journald
|
||||||
|
systemd_unit: nginx.service
|
||||||
|
|
||||||
|
# Docker контейнер
|
||||||
|
- name: redis
|
||||||
type: docker
|
type: docker
|
||||||
|
|
||||||
# Сбор логов из journald + проверка systemd сервиса
|
# Файл
|
||||||
- name: sshd
|
|
||||||
type: journald
|
|
||||||
systemd_unit: sshd # Опционально: проверка alive/dead
|
|
||||||
|
|
||||||
# Сбор логов из файла
|
|
||||||
- name: myapp
|
- name: myapp
|
||||||
type: file
|
type: file
|
||||||
path: /var/log/myapp/app.log
|
path: /var/log/myapp/app.log
|
||||||
|
|
||||||
# Сбор логов из Kubernetes
|
|
||||||
- name: mypod
|
|
||||||
type: kubernetes
|
|
||||||
namespace: default
|
|
||||||
pod: my-pod
|
|
||||||
container: my-container
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Graph зависимостей (`infra/services.yaml`)
|
Поле `systemd_unit` опционально. Если указано — агент проверяет `systemctl is-active` и шлёт статус `up`/`down`. Для Docker — `docker inspect {{.State.Running}}`.
|
||||||
|
|
||||||
Описывает зависимости сервисов для построения графа и определения причин сбоев:
|
### Граф зависимостей
|
||||||
|
|
||||||
|
`infra/services.yaml`:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
nodes:
|
nodes:
|
||||||
test-agent-1:
|
production-server-1:
|
||||||
services:
|
services:
|
||||||
nginx:
|
nginx:
|
||||||
depends_on:
|
depends_on: [sshd]
|
||||||
- sshd
|
|
||||||
sshd:
|
sshd:
|
||||||
depends_on: []
|
depends_on: []
|
||||||
system:
|
|
||||||
depends_on:
|
|
||||||
- sshd
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Используется для определения причины сбоев и порядка запуска.
|
||||||
|
|
||||||
## Переменные окружения
|
## Переменные окружения
|
||||||
|
|
||||||
### Backend
|
### Backend
|
||||||
@@ -159,71 +151,39 @@ nodes:
|
|||||||
|------------|-------------|----------|
|
|------------|-------------|----------|
|
||||||
| `CONFIG_FILE` | `/etc/hellreign/config.yml` | Путь к YAML конфигу |
|
| `CONFIG_FILE` | `/etc/hellreign/config.yml` | Путь к YAML конфигу |
|
||||||
| `GRAPH_YAML_PATH` | `/etc/hellreign/services.yaml` | Путь к графу сервисов |
|
| `GRAPH_YAML_PATH` | `/etc/hellreign/services.yaml` | Путь к графу сервисов |
|
||||||
| `SSL_CERT_DIR` | `/var/lib/hellreign/ssl` | Директория SSL сертификатов для mTLS |
|
| `SSL_CERT_DIR` | `/var/lib/hellreign/ssl` | Директория mTLS сертификатов |
|
||||||
| `SERVER_SAN_DNS` | `localhost,backend` | SAN DNS для серверного сертификата |
|
| `SERVER_SAN_DNS` | `localhost,backend` | SAN DNS сертификата |
|
||||||
| `SERVER_SAN_IP` | `127.0.0.1` | SAN IP для серверного сертификата |
|
| `SERVER_SAN_IP` | `127.0.0.1` | SAN IP сертификата |
|
||||||
| `GRPC_PORT` | `9001` | Порт gRPC сервера |
|
| `GRPC_PORT` | `9001` | Порт gRPC |
|
||||||
| `GIN_MODE` | `release` | Режим Gin (`debug` / `release`) |
|
| `GIN_MODE` | `release` | Режим Gin |
|
||||||
|
|
||||||
### Agent
|
### Агент
|
||||||
|
|
||||||
| Переменная | По умолчанию | Описание |
|
| Переменная | По умолчанию | Описание |
|
||||||
|------------|-------------|----------|
|
|------------|-------------|----------|
|
||||||
| `CONFIG_FILE` | `/etc/hellreign-agent/config.yml` | Путь к YAML конфигу агента |
|
| `CONFIG_FILE` | `/etc/hellreign-agent/config.yml` | Путь к YAML конфигу |
|
||||||
| `JOURNALD_LOGDIR` | `/var/log/journal` | Директория логов journald (read-only) |
|
| `JOURNALD_LOGDIR` | `/var/log/journal` | Директория journald (ro) |
|
||||||
| `BUFFER_DB` | `/var/lib/hellreign-agent/agent_buffer.db` | SQLite буфер для офлайн-доставки |
|
| `BUFFER_DB` | `/var/lib/hellreign-agent/agent_buffer.db` | SQLite буфер |
|
||||||
| `IS_DEBUG` | `0` | Включить debug логи агента (`1` / `0`) |
|
| `IS_DEBUG` | `0` | Debug логи (`1`/`0`) |
|
||||||
|
|
||||||
## Порты
|
## Порты
|
||||||
|
|
||||||
| Сервис | Порт | Назначение |
|
| Сервис | Порт | Назначение |
|
||||||
|--------|------|------------|
|
|--------|------|------------|
|
||||||
| Frontend | `3000` | Веб-интерфейс (Nginx → React) |
|
| Frontend | `3000` | Веб-интерфейс |
|
||||||
| Backend HTTP | `8080` | REST API + Swagger UI |
|
| Backend HTTP | `8080` | REST API + Swagger |
|
||||||
| Backend gRPC | `9001` | gRPC с mTLS (Commander + Collector) |
|
| Backend gRPC | `9001` | gRPC (mTLS) |
|
||||||
| ClickHouse HTTP | `8123` | HTTP интерфейс ClickHouse |
|
| ClickHouse HTTP | `8123` | HTTP интерфейс |
|
||||||
| ClickHouse Native | `9000` | Native протокол ClickHouse |
|
| ClickHouse Native | `9000` | Native протокол |
|
||||||
|
|
||||||
## API
|
## API примеры
|
||||||
|
|
||||||
### Авторизация
|
### Авторизация
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Логин
|
|
||||||
curl -X POST http://localhost:8080/api/v1/auth/login \
|
curl -X POST http://localhost:8080/api/v1/auth/login \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d '{"login":"admin","password":"admin123"}'
|
-d '{"login":"admin","password":"admin123"}'
|
||||||
|
|
||||||
# Создать токен
|
|
||||||
curl -X POST http://localhost:8080/api/v1/auth/token \
|
|
||||||
-H "Authorization: Bearer <jwt>" \
|
|
||||||
-H "Content-Type: application/json" \
|
|
||||||
-d '{"name":"my-token","permissions":["admin"]}'
|
|
||||||
```
|
|
||||||
|
|
||||||
### Регистрация агента
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Сгенерировать токен регистрации (admin)
|
|
||||||
curl -X POST http://localhost:8080/api/v1/agents/register-token \
|
|
||||||
-H "Authorization: Bearer <jwt>"
|
|
||||||
|
|
||||||
# Зарегистрировать агент
|
|
||||||
curl -X POST http://localhost:8080/api/v1/agents/register \
|
|
||||||
-H "Content-Type: application/json" \
|
|
||||||
-d '{"registration_token":"<token>","csr":"<pem>"}'
|
|
||||||
```
|
|
||||||
|
|
||||||
### Логи
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Поиск логов
|
|
||||||
curl "http://localhost:8080/api/v1/logs?service=nginx&level=error&from=2024-01-01T00:00:00Z" \
|
|
||||||
-H "Authorization: Bearer <jwt>"
|
|
||||||
|
|
||||||
# Список сервисов
|
|
||||||
curl http://localhost:8080/api/v1/logs/services \
|
|
||||||
-H "Authorization: Bearer <jwt>"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Агенты и метрики
|
### Агенты и метрики
|
||||||
@@ -238,66 +198,48 @@ curl http://localhost:8080/api/v1/agents/system-metrics \
|
|||||||
-H "Authorization: Bearer <jwt>"
|
-H "Authorization: Bearer <jwt>"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Логи
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Поиск
|
||||||
|
curl "http://localhost:8080/api/v1/logs?service=nginx&level=error" \
|
||||||
|
-H "Authorization: Bearer <jwt>"
|
||||||
|
|
||||||
|
# Список сервисов
|
||||||
|
curl http://localhost:8080/api/v1/logs/services \
|
||||||
|
-H "Authorization: Bearer <jwt>"
|
||||||
|
```
|
||||||
|
|
||||||
### Скрипты
|
### Скрипты
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Дерево скриптов
|
# Дерево
|
||||||
curl http://localhost:8080/api/v1/scripts/tree \
|
curl http://localhost:8080/api/v1/scripts/tree \
|
||||||
-H "Authorization: Bearer <jwt>"
|
-H "Authorization: Bearer <jwt>"
|
||||||
|
|
||||||
# Создать скрипт
|
# Запуск на агенте
|
||||||
curl -X POST http://localhost:8080/api/v1/scripts \
|
|
||||||
-H "Authorization: Bearer <jwt>" \
|
|
||||||
-H "Content-Type: application/json" \
|
|
||||||
-d '{"path":"deploy/restart.sh","content":"#!/bin/bash\nsystemctl restart nginx","interpreter_id":1}'
|
|
||||||
|
|
||||||
# Запустить скрипт
|
|
||||||
curl -X POST http://localhost:8080/api/v1/scripts/1/run \
|
curl -X POST http://localhost:8080/api/v1/scripts/1/run \
|
||||||
-H "Authorization: Bearer <jwt>" \
|
-H "Authorization: Bearer <jwt>" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d '{"token":"agent-token","stdin":""}'
|
-d '{"token":"agent-token"}'
|
||||||
|
|
||||||
# Переименовать скрипт или папку
|
|
||||||
curl -X POST http://localhost:8080/api/v1/scripts/rename \
|
|
||||||
-H "Authorization: Bearer <jwt>" \
|
|
||||||
-H "Content-Type: application/json" \
|
|
||||||
-d '{"old_path":"deploy/old.sh","new_path":"deploy/new.sh"}'
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Swagger
|
### Swagger
|
||||||
|
|
||||||
Swagger UI доступен по адресу: `http://localhost:8080/swagger/index.html`
|
`http://localhost:8080/swagger/index.html`
|
||||||
|
|
||||||
Перегенерация:
|
Перегенерация:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd backend
|
cd backend && swag init -g ./cmd/main.go --parseDependency --parseInternal
|
||||||
swag init -g ./cmd/main.go --parseDependency --parseInternal
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Proto
|
|
||||||
|
|
||||||
gRPC протокол определён в `proto/hellreign.proto`. После изменений:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd proto
|
|
||||||
protoc --go_out=. --go_opt=paths=source_relative \
|
|
||||||
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
|
|
||||||
hellreign.proto
|
|
||||||
mv hellreign*.go proto/
|
|
||||||
```
|
|
||||||
|
|
||||||
## Миграции
|
|
||||||
|
|
||||||
SQL миграции для SQLite хранятся в `migrations/`. Применяются автоматически при старте бэкенда.
|
|
||||||
|
|
||||||
## Деплой агента на хост
|
## Деплой агента на хост
|
||||||
|
|
||||||
### 1. Создать директорию
|
### 1. Директории
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo mkdir -p /etc/hellreign-agent/certs
|
sudo mkdir -p /etc/hellreign-agent/certs /var/lib/hellreign-agent
|
||||||
sudo mkdir -p /var/lib/hellreign-agent
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Конфиг
|
### 2. Конфиг
|
||||||
@@ -307,10 +249,10 @@ sudo nano /etc/hellreign-agent/config.yml
|
|||||||
```
|
```
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
backend_url: https://your-backend.example.com
|
backend_url: https://monitoring.example.com
|
||||||
grpc_url: your-backend.example.com:9001
|
grpc_url: monitoring.example.com:9001
|
||||||
label: production-server-1
|
label: prod-web-1
|
||||||
registration_token: "token-from-ui"
|
registration_token: "token-из-ui"
|
||||||
cert_dir: /etc/hellreign-agent/certs
|
cert_dir: /etc/hellreign-agent/certs
|
||||||
services:
|
services:
|
||||||
- name: nginx
|
- name: nginx
|
||||||
@@ -321,17 +263,16 @@ services:
|
|||||||
systemd_unit: postgresql.service
|
systemd_unit: postgresql.service
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Установить бинарь
|
### 3. Бинарь
|
||||||
|
|
||||||
Скачать релиз из Gitea или собрать:
|
Скачать из релиза Gitea или собрать:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd agent
|
cd agent && go build -o hellreign-agent ./main.go
|
||||||
go build -o hellreign-agent ./main.go
|
|
||||||
sudo mv hellreign-agent /usr/bin/
|
sudo mv hellreign-agent /usr/bin/
|
||||||
```
|
```
|
||||||
|
|
||||||
### 4. Systemd сервис
|
### 4. Systemd
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
[Unit]
|
[Unit]
|
||||||
@@ -356,71 +297,62 @@ sudo systemctl enable --now hellreign-agent
|
|||||||
|
|
||||||
## CI/CD
|
## CI/CD
|
||||||
|
|
||||||
### GoReleaser (агент)
|
При пуше тега `v*` — GoReleaser собирает `.deb` и `.rpm` для `linux/amd64` и `linux/arm64`:
|
||||||
|
|
||||||
При пуше тега `v*` автоматически собирается релиз:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git tag v1.0.0
|
git tag v1.0.0 && git push origin v1.0.0
|
||||||
git push origin v1.0.0
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Собираются `.deb` и `.rpm` пакеты для `linux/amd64` и `linux/arm64`.
|
|
||||||
|
|
||||||
Требует секрет `GITEA_TOKEN` в настройках репозитория.
|
Требует секрет `GITEA_TOKEN` в настройках репозитория.
|
||||||
|
|
||||||
## Структура проекта
|
## Proto
|
||||||
|
|
||||||
|
После изменений в `proto/hellreign.proto`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd proto
|
||||||
|
protoc --go_out=. --go_opt=paths=source_relative \
|
||||||
|
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
|
||||||
|
hellreign.proto
|
||||||
|
mv hellreign*.go proto/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Структура
|
||||||
|
|
||||||
```
|
```
|
||||||
HellreigN/
|
HellreigN/
|
||||||
├── agent/ # Агент мониторинга
|
├── agent/ # Агент диагностики
|
||||||
│ ├── main.go # Точка входа
|
│ ├── main.go
|
||||||
│ ├── dockerfile
|
|
||||||
│ ├── .goreleaser.yml # Конфиг GoReleaser
|
|
||||||
│ └── internal/
|
│ └── internal/
|
||||||
│ ├── buffer/ # SQLite буфер логов
|
│ ├── buffer/ # SQLite буфер (офлайн-доставка)
|
||||||
│ ├── client/ # gRPC клиент команд
|
│ ├── client/ # gRPC клиент команд
|
||||||
│ ├── commander/ # Исполнитель команд
|
│ ├── commander/ # Исполнитель команд
|
||||||
│ ├── config/ # Загрузка YAML конфига
|
│ ├── config/ # YAML конфиг
|
||||||
│ ├── logger/ # Логгер
|
│ ├── metrics/ # Сбор CPU, RAM, disk, network
|
||||||
│ ├── logsource/ # Источники логов
|
│ ├── logsource/ # Источники логов
|
||||||
│ │ ├── docker/ # Docker логи
|
│ │ ├── docker/
|
||||||
│ │ ├── file/ # File логи
|
│ │ ├── file/
|
||||||
│ │ ├── journald/ # Journald логи
|
│ │ ├── journald/
|
||||||
│ │ └── kubernetes/ # Kubernetes логи
|
│ │ └── kubernetes/
|
||||||
│ ├── metrics/ # Сбор метрик (CPU, RAM, disk, network)
|
|
||||||
│ ├── mtls/ # mTLS credentials
|
│ ├── mtls/ # mTLS credentials
|
||||||
│ └── registration/ # Регистрация агента
|
│ └── registration/ # Регистрация
|
||||||
├── backend/ # Бэкенд API
|
├── backend/ # Бэкенд API
|
||||||
│ ├── cmd/main.go # Точка входа
|
│ ├── cmd/main.go
|
||||||
│ ├── dockerfile
|
│ └── internal/
|
||||||
│ ├── internal/
|
│ ├── handlers/ # HTTP хендлеры
|
||||||
│ │ ├── handlers/ # HTTP хендлеры
|
│ ├── repository/ # SQLite репозитории
|
||||||
│ │ ├── repository/ # Репозитории (SQLite)
|
│ ├── grpcsrv/
|
||||||
│ │ ├── service/ # Бизнес-логика
|
│ │ ├── commander/ # Выполнение команд
|
||||||
│ │ ├── storage/ # ClickHouse storage
|
│ │ └── collector/ # Сбор логов и метрик
|
||||||
│ │ ├── grpcsrv/ # gRPC серверы
|
│ ├── auth/ # JWT
|
||||||
│ │ │ ├── commander/ # Выполнение команд на агентах
|
│ └── storage/ # ClickHouse
|
||||||
│ │ │ └── collector/ # Сбор логов и метрик
|
├── frontend/ # React + TypeScript
|
||||||
│ │ ├── auth/ # JWT авторизация
|
├── infra/ # Docker Compose
|
||||||
│ │ └── config/ # Загрузка конфига
|
|
||||||
│ └── docs/ # Swagger документация
|
|
||||||
├── frontend/ # Веб-интерфейс
|
|
||||||
│ ├── dockerfile
|
|
||||||
│ ├── nginx.conf
|
|
||||||
│ └── src/
|
|
||||||
├── infra/ # Docker Compose деплой
|
|
||||||
│ ├── docker-compose.yml
|
│ ├── docker-compose.yml
|
||||||
│ ├── services.yaml # Граф зависимостей
|
│ ├── services.yaml # Граф зависимостей
|
||||||
│ ├── backend/config.yml # Конфиг бэкенда
|
│ ├── backend/config.yml
|
||||||
│ ├── agent/config.yml # Конфиг агента
|
│ ├── agent/config.yml
|
||||||
│ └── clickhouse/init/ # Инициализация ClickHouse
|
│ └── clickhouse/init/
|
||||||
├── migrations/ # SQL миграции SQLite
|
├── migrations/ # SQL миграции SQLite
|
||||||
├── proto/ # Protobuf определения
|
└── proto/ # Protobuf
|
||||||
│ ├── hellreign.proto
|
|
||||||
│ └── proto/ # Сгенерированный Go код
|
|
||||||
└── .gitea/workflows/ # Gitea Actions CI/CD
|
|
||||||
├── ci-agent.yml
|
|
||||||
├── ci-front.yml
|
|
||||||
└── release-agent.yml
|
|
||||||
```
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user