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
|
2 months ago | |
---|---|---|
cmd/logbox | 2 months ago | |
pkg | 2 months ago | |
script | 3 months ago | |
vendor | 2 months ago | |
.drone.yml | 4 months ago | |
.gitconfig | 2 years ago | |
.gitignore | 1 year ago | |
README.md | 11 months ago | |
go.mod | 2 months ago | |
go.sum | 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: - логировать обработки запросов
Генерация протофайла
- Переходим в директорию
pkg/model/sdk
- Выполняем в терминале
protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative ./model.proto
- Cгенерированные файлы находятся в директории
pkg/model/sdk