Skip to content

RomanSnitko/netstream

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Система централизованного сбора и обработки событий с линуксовых эндпоинтов.

На каждой физ машине запускается агент, который читает системный источник событий: syslog (/var/log/syslog).

Агент приводит события к единому формату, батчит их (100 событий или 1 секунда) и отправляет на центральный сервак по TCP. Для TCP используется собственный length-prefixed протокол (4 байта network order + JSON payload), чтобы корректно обрабатывать поток байтов, частичные чтения и несколько сообщений за одно чтение.

Центральный сервис (Gateway) принимает события по TCP через async i/o (Boost.Asio), парсит входной протокол, валидирует поля, нормализует и классифицирует события, после чего прогоняет их через rule engine. Например, события с "failed password", kernel errors или OOM превращаются в алерты. Все нормализованные события и алерты публикуются в Kafka в отдельные топики: netstream.events и netstream.alerts.

Отдельный сервис Consumer читает события из Kafka с manual offset commits и сохраняет данные в PostgreSQL. В БД хранятся принятые события и сработавшие алерты с индексами по agent_id, timestamp, category и severity.

Технологии: C++17, Boost.Asio, nlohmann/json, Kafka(librdkafka), PostgreSQL(libpqxx).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors