Syslog-ng

Syslog-ng — свободная и открытая реализация протокола syslog для Unix и Unix-подобных операционных систем. Она расширяет изначальную модель syslogd возможностями контентной и гибкой фильтрации, содержит гибкие настройки и добавляет важные функции, такие как транспортировка данных по TCP. Разработка syslog-ng ведётся в будапештском офисе компании One Identity LLC. Существует три редакции с общей кодовой базой. Первая редакция называется syslog-ng или syslog-ng Open Source Edition (OSE) и распространяется под лицензиями LGPL + GPLv2. Вторая, syslog-ng Premium Edition (PE), содержит дополнительные модули (плагины) под проприетарной лицензией. Третья — syslog-ng Storebox (SSB) — поставляется как готовое устройство с веб-интерфейсом и дополнительными возможностями, включая высокоскоростной текстовый поиск, объединённый поиск, контентную систему оповещений и премиум-поддержку[1].

В январе 2018 года syslog-ng, будучи частью Balabit, была приобретена компанией One Identity, входящей в холдинг Quest Software. Команда syslog-ng осталась независимым подразделением компании One Identity и продолжает использовать бренд syslog-ng.

В мае 2024 года оригинальный автор syslog-ng, Balázs Scheidler, создал форк syslog-ng под названием AxoSyslog — полностью открытое ПО, призванное стать прямой заменой и развить syslog-ng в универсальный процессор безопасности данных с интеграцией в cloud native-инструменты и сервисы[2].

Что важно знать
syslog-ng
Тип системное логирование
Автор Balázs Scheidler
Написана на Си
Операционная система Unix-подобные
Первый выпуск 1998
Последняя версия 4.11.0 (24 февраля 2026)
Репозиторий github.com/syslog-ng/sys…
Лицензия Ядро: LGPL, Плагины: GPLv2
Сайт syslog-ng.com/products/o…

Протокол

syslog-ng поддерживает широкий набор протоколов для приёма и передачи логов. Хотя изначально продукт предназначался для работы с syslog, сегодня он поддерживает современные облачные транспорты, такие как OpenTelemetry (OTLP), Google PubSub и Kafka. Syslog-ng интегрируется с разнообразными устройствами и способен преобразовывать данные между различными источниками и назначениями.

Расширения оригинального протокола syslog-ng включают:

  • отметки времени в формате ISO 8601 с миллисекундной точностью и учётом часового пояса;
  • добавление имени ретранслятора в отдельное поле хоста, что позволяет отслеживать путь сообщения;
  • надёжная передача по TCP;
  • шифрование передачи с помощью TLS (с версии 3.0.1 в OSE[3]).

История

Проект syslog-ng был начат в 1998 году, когда Balázs Scheidler, основной автор, портировал существующий код nsyslogd на Linux. Ветвь 1.0.x всё ещё основывалась на исходниках nsyslogd и доступна в архиве исходного кода syslog-ng[4].

Сразу после выхода версии 1.0.x было начато переписывание кода для устранения недостатков syslog и устранения лицензионных вопросов, связанных с работой Даррена Рида, автора syslog. Эта переработка была признана стабильной в октябре 1999 года с выпуском версии 1.2.0. В этот раз syslog-ng частично использовал код, разработанный изначально для lsh Нильсом Мёллером.

Три основных выпуска (1.2, 1.4 и 1.6) использовали эту кодовую базу; последний релиз ветки 1.6.x вышел в феврале 2007 года. За эти 8 лет syslog-ng стал одной из популярных альтернатив классическому syslog.

Волонтёрскими силами в 2001 году была начата ещё одна переписка (rewrite), в которой был исключён код lsh и вместо него использована более распространённая библиотека GLib. Этой переработке потребовалось время: первый стабильный релиз 2.0.0 вышел в октябре 2006 года.

В дальнейшем усилия были направлены на развитие ветки 2.0.x; поддержка ветки 1.6.x была прекращена в конце 2007 года. Поддержка 2.x завершилась к концу 2009 года, однако она до сих пор используется в некоторых Linux-дистрибутивах[5].[6] Компания Balabit, стоящая за syslog-ng, начала развивать параллельный коммерческий форк — syslog-ng Premium Edition. Часть прибыли от коммерческого продукта идёт на развитие бесплатной редакции.

Версия syslog-ng 3.0 была выпущена в четвёртом квартале 2008 года.

С версии 3.0 развитие двух редакций (PE и OSE) шло параллельно. В Premium Edition акцент делался на качества, производительность, надёжный транспорт и шифрованное хранение логов, а в Open Source Edition — на расширение гибкости основной инфраструктуры и поддержку нестандартных источников сообщений.

В серии syslog-ng 3.X были реализованы большие изменения без потери обратной совместимости: появилась модульность и многопоточность, поддержка разных хранилищ документов и систем очередей сообщений; многие типы сообщений стали автоматически преобразовываться в пары «имя-значение». Возможна интеграция расширений на Java и Python.

Версия 4.0 была выпущена в декабре 2022 года. Основным изменением стала новая поддержка типов значений для пар «имя-значение» (переменных), несовместимая с серией 3.X, что позволило более точно фильтровать и отправлять данные с корректной типизацией в базы данных и хранилища документов.

Стоит отметить, что версия PE использует независимую нумерацию и основана на редакции с открытым исходным кодом.

Возможности

Syslog-ng обладает рядом функций помимо транспортировки сообщений syslog и их хранения в текстовых логах:

  • Форматирование сообщений с помощью unix-подобного расширения переменных (что может привести к несовместимости логов между платформами)
  • Использование такого же расширения синтаксиса при составлении имён файлов назначения (возможно создание нескольких файлов с одной настройкой)
  • Пересылка сообщений логирования во внешние приложения
  • Поддержка управления потоком сообщений при сетевой передаче
  • Запись логов напрямую в базу данных (с версии OSE 2.1)
  • Изменение текста сообщения с помощью примитивов set и substitute (с версии OSE 3.0)
  • Классификация и выделение структурированной информации из неструктурированных сообщений syslog (с версии OSE 3.0)
  • Универсальная поддержка пар «имя-значение» (каждое сообщение — это набор таких пар; с версии OSE 3.0)
  • Обработка структурированных сообщений логов; например, разбивка строк CSV на столбцы (с версии OSE 3.0)
  • Корреляция нескольких входящих сообщений для формирования сложных событий (с версии OSE 3.2)[7]

Дистрибуции

Syslog-ng доступен во многих дистрибутивах Linux и Unix. Некоторые используют его по умолчанию или предлагают отдельно как пакет для замены классического syslogd. В ряде дистрибутивов (например, Debian после версии 5.0, Fedora после версии 10, openSUSE после 11.2) syslog-ng был заменён на rsyslog.

  • openSUSE — использовался по умолчанию до релиза openSUSE 11.2, по-прежнему доступен как пакет
  • SLES — использовался до версии SLES 12
  • Debian GNU/Linux использовал syslogd и klogd до версии 5.0; начиная с 5.0 («Lenny») применяется rsyslog[8]
  • Gentoo Linux
  • Fedora — по умолчанию до версии Fedora 10
  • Arch Linux — по умолчанию до внедрения systemd в 2012 году
  • HP-UX от Hewlett-Packard
  • FreeBSD (порт)
  • Порт Cygwin для Microsoft Windows

Портируемость

Syslog-ng очень портируем для множества Unix-систем, как современных, так и устаревших. По опыту BalaBit, надёжно поддерживаются следующие платформы:

Могут работать и другие платформы, но их поддержка не гарантируется.

Связанные RFC и рабочие группы

  •  — BSD syslog-протокол
  •  — Протокол Syslog
  •  — Transport Layer Security (TLS) для syslog
  •  — Передача сообщений syslog через UDP

Примечания