You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
loveckiy.ivan eb54bd816f Merge branch 'main' of git.lowcodeplatform.net:fabric/logbox 2 months ago
cmd/logbox [upd] ping (uptime...) 2 months ago
pkg [upd] ping (uptime...) 2 months ago
script upd sql init 3 months ago
vendor Merge branch 'main' of git.lowcodeplatform.net:fabric/logbox 2 months ago
.drone.yml [upd] drone 4 months ago
.gitconfig [init] 2 years ago
.gitignore add new ping (metrics) 1 year ago
README.md update sdk proto, upd impl starage 11 months ago
go.mod Merge branch 'main' of git.lowcodeplatform.net:fabric/logbox 2 months ago
go.sum Merge branch 'main' of git.lowcodeplatform.net:fabric/logbox 2 months ago

README.md

LogBox

Описание

Предназначен для получения логов из сервиса через клиентов, работающих в каждом сервисе (если в сервисе не настроен клиент LogBox или сервис недоступен - логирование происходит в локальный файл)

Принцип работы

Сервис принимает по протоколу gPRC сообщения на добавления логов в хранилище.

Формат логов

  • "level" - уровень логирования
  • "name" - имя сервиса
  • "uid": - идентификатор сервиса
  • "srv": - тип сервиса
  • "config": - идентификатор конфигурации, с которой был запущен сервис
  • "error": - описание ошибки (строка)

Реализация

Имеет очередь входящих запросов, а также воркеры добавления данных из очереди в хранилище.

Если хранилище недоступно, запись будет производиться в локальный файл (во избежании потери данных)

В качестве хранилища могуи выступать:

  • локальный файл (в этом случае файлы ротируются)
  • файлы в хранилище S3 (при наличии распределенного хранилища)
  • база данных SQLite
  • база данных Reindexer
  • база данных ElasticSearch (стек ELK)

Настройка

Настраивается через файл конфигурации в момент запуска сервиса

Параметры:

  • type [local/s3/sqlite/reindexer/elastic]
  • connect - настройки подключения к каждому из получателей

Доп.информация

Типы логирования

//Debug:
// сообщения отладки, профилирования.
// В production системе обычно сообщения этого уровня включаются при первоначальном
// запуске системы или для поиска узких мест (bottleneck-ов).

//Info: - логировать процесс выполнения
// обычные сообщения, информирующие о действиях системы.
// Реагировать на такие сообщения вообще не надо, но они могут помочь, например,
// при поиске багов, расследовании интересных ситуаций итд.

//Warning: - логировать странные операции
// записывая такое сообщение, система пытается привлечь внимание обслуживающего персонала.
// Произошло что-то странное. Возможно, это новый тип ситуации, ещё не известный системе.
// Следует разобраться в том, что произошло, что это означает, и отнести ситуацию либо к
// инфо-сообщению, либо к ошибке. Соответственно, придётся доработать код обработки таких ситуаций.

//Error: - логировать ошибки
// ошибка в работе системы, требующая вмешательства. Что-то не сохранилось, что-то отвалилось.
// Необходимо принимать меры довольно быстро! Ошибки этого уровня и выше требуют немедленной записи в лог,
// чтобы ускорить реакцию на них. Нужно понимать, что ошибка пользователя – это не ошибка системы.
// Если пользователь ввёл в поле -1, где это не предполагалось – не надо писать об этом в лог ошибок.

//Panic: - логировать критические ошибки
// это особый класс ошибок. Такие ошибки приводят к неработоспособности системы в целом, или
// неработоспособности одной из подсистем. Чаще всего случаются фатальные ошибки из-за неверной конфигурации
// или отказов оборудования. Требуют срочной, немедленной реакции. Возможно, следует предусмотреть уведомление о таких ошибках по SMS.
// указываем уровни логирования Error/Warning/Debug/Info/Panic

//Trace: - логировать обработки запросов

Генерация протофайла

  1. Переходим в директорию pkg/model/sdk
  2. Выполняем в терминале protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative ./model.proto
  3. Cгенерированные файлы находятся в директории pkg/model/sdk