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

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

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

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

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

решение1

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

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

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

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

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

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

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

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

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

решение2

Это три различных типа менеджеров журналов: они позволяют вашей системе собирать, фильтровать, передавать и хранить журналы.

  • Syslog(демон также называется 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отличаются.

решение3

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

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

решение4

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

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

Связанный контент