No description
  • Go 98.7%
  • Shell 1.3%
Find a file
Александр Федорюк 07ab65aee6
All checks were successful
continuous-integration/drone/tag Build is passing
Fix config
2023-03-22 09:43:22 +03:00
.vscode Write save logs in DB 2022-12-02 13:26:08 +03:00
db Fix database schema 2022-12-05 08:33:35 +03:00
lib Fix config 2023-03-22 09:43:22 +03:00
.drone.yml Add env DB_MIGRATE 2023-03-22 09:23:20 +03:00
.gitignore Write save logs in DB 2022-12-02 13:26:08 +03:00
docker-entrypoint.sh Write save logs in DB 2022-12-02 13:26:08 +03:00
Dockerfile.amd64 Write save logs in DB 2022-12-02 13:26:08 +03:00
Dockerfile.arm64 Write save logs in DB 2022-12-02 13:26:08 +03:00
go.mod Update modules 2022-12-02 15:19:30 +03:00
go.sum Update modules 2022-12-02 15:19:30 +03:00
main.go Write save logs in DB 2022-12-02 13:26:08 +03:00
main_test.go Write save logs in DB 2022-12-02 13:26:08 +03:00
README.md Add env DB_MIGRATE 2023-03-22 09:23:20 +03:00

Сборщик логов через Nats

Сервис для сбора логов, отправленных в указанную очередь в Nats. Данный сервис НЕ БУДЕТ ПОЛУЧАТЬ НАСТРОЙКИ ЧЕРЕЗ yt-settings. Все настройки указываются через переменные окружения. Так как таблица с логами может быть очень большой, то миграция таблицы может занять очень много времени. В таком случае обновление структуры может быть запущено только через коммаду (без автоматики при запуске).

Создание и обновление структуры БД

Если используется SQLite3, MySQL/MariaDB, PostgreSQL или SQLServer, то обновление БД может выполнить само приложения. Для ClickHouse обновление структуры не выполняется в автоматическом режиме, а только вручную в самой СУБД. Это связано с тем, что у ClickHouse очень много различных настроек "движков" и каждый из них может иметь собственную задачу.

Таблица для ClickHouse:

CREATE TABLE IF NOT EXISTS logs (
    log_level        INTEGER,
    start_time       DATETIME,
    start_time_nano  INTEGER,
    end_time         DATETIME,
    end_time_nano    INTEGER,
    func_name        TEXT,
    id_call          VARCHAR (50),
    id_call_prev     VARCHAR (50),
    call_from        VARCHAR (250),
    id_call_response VARCHAR (50),
    path             TEXT,
    status_code      INTEGER,
    size             INTEGER,
    msg              TEXT,
    err_code         INTEGER,
    err              TEXT
)
ENGINE = ReplacingMergeTree() PARTITION BY (log_level, toDate(start_time), toDate(end_time))
ORDER BY (log_level, start_time, start_time_nano, end_time,end_time_nano)
SETTINGS index_granularity = 8192;

Далле таблицу можно снабдить дополнительными параметрами (по вкусу/требованию).

Переменные окружения

ENV

development/production. По умолчанию production.

NATS_ADDR

Адрес менеджера очередей. По умолчанию nats://localhost:4222

DB_DRIVER

Используемая СУБД. По умолчанию sqlite

DB_NAME

Имя БД. По умолчанию db/logger.db

DB_LOGIN

Логин БД

DB_PASSWORD

Пароль БД

DB_HOST

Хост подключения

DB_PORT

Порт подключения

DB_PREFIX

Префикс для таблиц

DB_MIGRATE

Запуск создания и/или миграции структуры БД

QUEUE_LOG

Имя очереди для получения логов. По умолчанию logs

DB_MAX_BATCH_INSERT

Максимальное количество записей для вставки пакетом в БД. По умолчанию 100