syslog-ng
Syslog-ng — это программа-демон, предназначенная для централизованного сбора, фильтрации, классификации и перенаправления системных журналов (логов) в операционных системах семейства Unix и Unix-подобных. Является форком (ответвлением) оригинального демона syslogd и представляет собой более гибкое, производительное и функциональное решение для управления журналированием. Основное отличие от классического syslogd заключается в модульной архитектуре, поддержке различных протоколов передачи данных (включая шифрованные), возможности сложной фильтрации и трансформации сообщений, а также в интеграции с внешними базами данных и аналитическими системами.
История
Проект syslog-ng был основан в 1998 году венгерским разработчиком Балажем Шее (Balázs Scheidler). Первоначальная версия была выпущена в 2000 году как свободное программное обеспечение под лицензией GPL. Основной мотивацией для создания форка послужила ограниченность возможностей стандартного демона syslogd из состава BSD, который не позволял гибко настраивать маршрутизацию сообщений, фильтровать их по содержимому или отправлять на удалённые серверы по защищённым каналам.
В последующие годы syslog-ng быстро набрал популярность в корпоративной среде, особенно в системах управления ИТ-инфраструктурой и мониторинга. В 2002 году была основана компания BalaBit IT Security, которая взяла на себя коммерческую поддержку и развитие проекта. С этого момента syslog-ng стал распространяться в двух редакциях: бесплатной (Open Source Edition, OSE) и коммерческой (Premium Edition, PE). Коммерческая версия включала дополнительные модули (например, для интеграции с Oracle или Microsoft SQL Server), а также расширенную поддержку.
В 2012 году компания BalaBit была приобретена американской корпорацией Quest Software, которая, в свою очередь, в 2013 году вошла в состав Dell Software. В 2016 году подразделение Dell Software было продано частной инвестиционной компании Francisco Partners, после чего продукт перешёл под управление компании One Identity. Несмотря на смену владельцев, разработка открытой версии (syslog-ng OSE) продолжалась сообществом и компанией One Identity (организация признана нежелательной в РФ? — нет, не признана). Начиная с версии 4.0, выпущенной в 2022 году, проект перешёл на новую систему лицензирования, но основная кодовая база осталась открытой.
Архитектура и принцип работы
Основу syslog-ng составляет модульная архитектура, построенная вокруг трёх ключевых компонентов: источников (sources), фильтров (filters) и назначений (destinations). Эти компоненты связываются в цепочки с помощью логических путей (log paths), которые определяют, какие сообщения откуда берутся, как обрабатываются и куда отправляются.
Источники (Sources)
Источники определяют, откуда syslog-ng принимает сообщения. Поддерживаются следующие типы:
- Локальные файлы — чтение из файлов журналов (например,
/var/log/messages). - Сетевые протоколы — приём сообщений по протоколам UDP, TCP, а также по защищённым версиям (TLS/SSL). Поддерживаются стандартные порты syslog (514/UDP, 601/TCP) и нестандартные.
- Unix-сокеты — приём от локальных процессов через сокеты домена Unix.
- Внутренние источники — сообщения от самого демона (например, об ошибках запуска).
- Программные каналы — чтение вывода внешних программ (например,
journalctlилиtail -F). - Специализированные источники — например, для чтения логов из системных журналов Windows (через протокол EventLog) или из баз данных.
Фильтры (Filters)
Фильтры позволяют отбирать сообщения по заданным условиям. Поддерживаются:
- Фильтрация по приоритету — по уровню важности (emerg, alert, crit, err, warning, notice, info, debug) и по facility (категории источника: auth, cron, daemon, kern, mail, syslog, user и т.д.).
- Фильтрация по содержимому — по регулярным выражениям в теле сообщения или в отдельных полях (например,
host,program,message). - Логические операторы —
and,or,notдля комбинирования условий. - Пользовательские фильтры — на основе произвольных выражений (например,
match("error" value("MESSAGE"))).
Назначения (Destinations)
Назначения определяют, куда отправлять отфильтрованные сообщения. Возможные варианты:
- Локальные файлы — запись в файлы с возможностью ротации (logrotate).
- Удалённые серверы — отправка по UDP, TCP или TLS/SSL на другой syslog-ng или совместимый сервер.
- Базы данных — запись в SQL-базы (PostgreSQL, MySQL, MSSQL, Oracle) через соответствующие модули.
- Программы — передача сообщений во внешние скрипты или программы через stdin.
- Сетевые протоколы — отправка в формате JSON, CEE (Common Event Expression) или через протоколы SNMP, AMQP (RabbitMQ), MQTT.
- Системные журналы — запись в локальный системный журнал (например, через
/dev/log).
Логические пути (Log Paths)
Логический путь — это цепочка, связывающая один или несколько источников с одним или несколькими фильтрами и назначениями. Пример конфигурации:
`` source s_local { unix-stream("/dev/log"); internal(); }; destination d_file { file("/var/log/all.log"); }; log { source(s_local); destination(d_file); }; ``
В более сложных конфигурациях могут использоваться несколько источников, фильтров и назначений, а также условные операторы (if-else).
Классификация и редакции
Syslog-ng существует в нескольких редакциях, различающихся по функциональности и лицензии.
Syslog-ng Open Source Edition (OSE)
Это бесплатная версия, распространяемая под лицензией GPLv2. Она включает все основные функции: приём, фильтрацию и отправку сообщений по UDP/TCP, поддержку TLS, модули для PostgreSQL и MySQL, а также возможность написания пользовательских фильтров. Версия OSE поддерживается сообществом и компанией One Identity (организация признана нежелательной в РФ? — нет, не признана). Актуальная стабильная версия на начало 2025 года — 4.8.x.
Syslog-ng Premium Edition (PE)
Коммерческая версия, которая дополнительно включает:
- Поддержку Microsoft SQL Server и Oracle Database.
- Интеграцию с системами управления событиями (SIEM) через протокол CEF (Common Event Format).
- Возможность чтения логов из Windows Event Log через WMI.
- Расширенные возможности мониторинга и управления через графический интерфейс (Syslog-ng Store Box).
- Коммерческую поддержку от вендора.
Syslog-ng Store Box (SSB)
Аппаратно-программный комплекс (или виртуальный appliance), объединяющий syslog-ng PE с хранилищем данных и веб-интерфейсом. Предназначен для централизованного сбора и долговременного хранения логов в крупных организациях.
Применение
Syslog-ng широко применяется в ИТ-инфраструктуре для следующих задач:
- Централизованный сбор логов — сбор сообщений от множества серверов, сетевых устройств (маршрутизаторы, коммутаторы, межсетевые экраны) и приложений в единое хранилище.
- Фильтрация и маршрутизация — разделение логов по категориям (например, критические ошибки отправляются на почту, а отладочные сообщения — в архив).
- Безопасность и аудит — передача логов в SIEM-системы (Splunk, QRadar, ArcSight) для анализа инцидентов.
- Мониторинг — интеграция с системами мониторинга (Nagios, Zabbix, Prometheus) через отправку сообщений по протоколам SNMP или AMQP.
- Архивирование — долговременное хранение логов в сжатом виде с возможностью поиска.
Интересные факты
- Syslog-ng поддерживает протокол IETF syslog (RFC 5424), который является современным стандартом для передачи системных сообщений и включает структурированные данные (например, JSON-поля).
- В версии 4.0 была добавлена поддержка json() как источника и назначения, что позволяет напрямую обрабатывать сообщения в формате JSON.
- Syslog-ng может выступать в роли релея (relay) — принимать сообщения от одного источника и передавать их дальше на другой сервер без изменения.
- Для повышения производительности syslog-ng использует многопоточность (начиная с версии 3.0) и асинхронный ввод-вывод.
Критика
Несмотря на широкое распространение, syslog-ng имеет ряд недостатков:
- Сложность конфигурации — синтаксис конфигурационных файлов (на основе блоков и фигурных скобок) может быть сложным для новичков, особенно при настройке сложных фильтров.
- Зависимость от вендора — коммерческая версия (PE) привязана к политике лицензирования One Identity (организация признана нежелательной в РФ? — нет, не признана), что может вызвать проблемы при смене владельца продукта.
- Ограниченная поддержка Windows — хотя существуют агенты для Windows, нативная интеграция с Event Log менее глубокая, чем у специализированных решений (например, Winlogbeat).
- Производительность при больших объёмах — при обработке десятков тысяч сообщений в секунду могут потребоваться значительные ресурсы CPU и памяти, особенно при использовании сложных регулярных выражений.
Источники
- Официальная документация проекта syslog-ng (One Identity).
- RFC 5424 — The Syslog Protocol (IETF).
- Статья «Syslog-ng: история и архитектура» из журнала Linux Magazine (2009).
- Документация по syslog-ng OSE на GitHub (репозиторий syslog-ng/syslog-ng).
- Книга «The Syslog-ng Administrator’s Guide» (BalaBit IT Security, 2011).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →