В чем разница между syslog, rsyslog и syslog-ng?

61

Я немного запутался в syslog, rsyslog и syslog-ng.

Откуда я могу получить исходный код syslog()?

Есть ли разница между rsyslog и rsyslogd?

StackUser
источник
rsyslogd с буквой D - это демон
rsyslogd
3
Для полноты картины я добавлю одно обнаруженное различие, которое может повлиять или не повлиять на вас. syslog-ng использует fopen, тогда как rsyslog использует fappend. Это важно, если вы chattr +aваши файлы системного журнала. Большинство людей не делают этого, у меня просто был особый вариант использования, и вот как я узнал. Я просто заставил многих людей съежиться.
Аарон

Ответы:

52

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

Но это три разных проекта, каждый из которых пытается улучшить предыдущий с большей надежностью и функциональностью.

SyslogПроект был первым проектом. Это началось в 1980 году. Это основной проект Syslogпротокола. В настоящее время Syslog - очень простой протокол. В начале он поддерживает только UDP для транспорта, так что он не гарантирует доставку сообщений.

Следующий пришел syslog-ngв 1998 году. Он расширяет базовый syslogпротокол новыми функциями, такими как:

  • контентная фильтрация
  • Вход непосредственно в базу данных
  • TCP для транспорта
  • Шифрование TLS

Следующий пришел Rsyslogв 2004 году. Он расширяет syslogпротокол новыми функциями, такими как:

  • Поддержка протокола RELP
  • Поддержка буферизованных операций

Скажем, сегодня это три параллельных проекта, которые выросли отдельно от версий, но также выросли параллельно относительно того, что делали соседи.

Я лично считаю, что сегодня syslog-ngэто справочник в большинстве случаев, так как это самый зрелый проект, предлагающий основные функции, которые могут вам понадобиться, в дополнение к простой и полной настройке и настройке.

krisFR
источник
1
Напомним, что системный журнал OpenBSD может выполнять протоколы TCP и TLS (и UDP)
Нил Макгиган
32

это 3 разных вида менеджеров журналов: это позволяет вашей системе собирать фильтры и передавать / хранить журналы.

  • Syslog(также называется daemon sysklogd) является стандартным LM в распространенных дистрибутивах Linux. Легкий, но не очень гибкий, вы можете перенаправить поток журналов, отсортированный по средствам и серьезности, в файлы и по сети (TCP, UDP).
  • rsyslogявляется «расширенной» версией, sysklogdгде конфигурационный файл остается тем же самым (вы можете скопировать syslog.confфайл непосредственно в него, rsyslog.confи он работает); но у вас есть много новых интересных вещей:

    • Вы можете прослушивать соединения TCP / UDP / ... с ограничениями (порты, исходные IP-адреса)
    • Вы можете загрузить много модулей
    • Вы можете различать фильтрацию журналов по программе, источнику, сообщению, pid и т. Д. (Например, каждое сообщение, помеченное сообщением «связь закрыта» с файлом closed.log)
    • Вы можете отказаться от сообщения после одного или нескольких правил. Посетите http://www.rsyslog.com, что действительно очень хорошо.
  • Syslog-ng - это «Next-Gen». Я думаю, что это лучший способ управления журналами: все является объектом (источник, место назначения, фильтр и само правило пересылки), а синтаксис понятен. Сомневаюсь в функциональности, что rsyslogи syslog-ngразные.

moutonjr
источник
8
Я бы сказал, что и syslog-ng, и rsyslog являются «следующим поколением» или, по крайней мере, более новой заменой более старого системного журнала. Оба сопоставимы с точки зрения возможностей, но синтаксис для обоих очень различен. syslog-ng имеет собственный уникальный синтаксис, в то время как синтаксис rsyslog больше похож на старый синтаксис syslog.
Стефан Ласевский
9
А потом есть journalctl/journald
Mausy5043
9

Откуда я могу получить исходный код для syslog ()

Это обеспечивается glibc или реализациями libc на других разновидностях Unix. Этот вызов в основном отправляет ваше сообщение в сокет домена sixlog unix / dev / log. Этот сокет обычно создается системным регистратором (например, rsyslog, syslog-ng, nxlog и т. Д.).

b0ti
источник
3

Все они являются демонами syslog, где rsyslog и syslog-ng являются более быстрыми и более функциональными заменами (в основном не поддерживаемых) традиционного syslogd. syslog-ng начинался с нуля (с другим форматом конфигурации), в то время как rsyslog изначально был веткой syslogd, поддерживающей и расширяющей его синтаксис. В последние годы rsyslog также начал поддерживать новый формат конфигурации. К настоящему моменту действительно трудно сравнивать их, не вдаваясь в подробности и не начав пламенных войн.

Системный журнал в целом довольно запутанный, так как это может быть несколько вещей. Я попробовал устранить неоднозначность здесь: https://sematext.com/blog/2017/01/30/what-is-syslog-daemons-message-formats-and-protocols/

Раду Георге
источник