No description
  • Go 95.9%
  • Dockerfile 4.1%
Find a file
2024-03-14 12:05:10 +03:00
.vscode first commit 2024-03-02 12:04:52 +03:00
lib Поправлен срез буфера с начала 2024-03-14 11:58:24 +03:00
rest first commit 2024-03-02 12:04:52 +03:00
structs first commit 2024-03-02 12:04:52 +03:00
.dockerignore first commit 2024-03-02 12:04:52 +03:00
.drone.yml Обновление контейнеров 2024-03-14 12:05:10 +03:00
.gitignore first commit 2024-03-02 12:04:52 +03:00
Dockerfile Обновление контейнеров 2024-03-14 12:05:10 +03:00
go.mod first commit 2024-03-02 12:04:52 +03:00
go.sum first commit 2024-03-02 12:04:52 +03:00
main.go Слишком большой запрос для 386 процессора 2024-03-14 12:03:09 +03:00
README.md first commit 2024-03-02 12:04:52 +03:00

Логирующее зеркалирование HTTP

Приложение предназначено для получения запросов и их парсинга для дальнейшего анализа. Система получает запрос, раскладывает его на заголовки и тело запроса, переводит в JSON и отправляет в следующую точку по HTTP, например, в БД или в другой узел для дальнейшей обработки.

Отправка в другую точку

В другую точку выполняет POST-запрос по указанному адресу и пути (url-у). Отправка записей может быть по одному, а может быть пачкой по мере набора буфера либо таймаута.

Например для отправки готовых логов в ClickHouse конечная точка будет следующей:

http://10.25.200.243:8123/?user=<login>&password=<password>&database=logs&query=INSERT%20INTO%20http_mirror_log%20FORMAT%20JSONEachRow&input_format_skip_unknown_fields=1

Структура таблицы,например, будет следующая:

CREATE TABLE logs.http_mirror_log
(
`eventTime` DateTime,
`eventTimeMillis` UInt64,
`remoteAddr` String,
`method` String,
`host` String,
`scheme` String,
`requestUri` String,
`contentEncoding` String,
`contentLength` UInt64,
`contentType`  String,

`headers` Map(String, String),
`queryArgs` Map(String, Array(String)),
`body` String
)
ENGINE = ReplacingMergeTree
PARTITION BY toDate(eventTime)
ORDER BY (eventTime, eventTimeMillis, host)
TTL eventTime + toIntervalMonth(6)
SETTINGS index_granularity = 8192

Дополнительные заголовки

Web-сервер должен дополнять заголовки в запросе для дальнейшего анализа

X-Request-Uri - Оригинальный URI запроса, который запрашивает клиент X-Method - метод запроса X-Forwarded-For - Адрес удаленного клиента