Как я должен отправлять журналы systemd на выделенный сервер протоколирования

Раньше я использовал syslog-ng или rsyslog для отправки системных журналов на выделенный сервер регистрации в другом месте в сети. С systemd, однако, такие вещи, как команды sudo, которые ранее были сохранены в / var / log / secure или /var/log/auth.log (в зависимости от вашего дистрибутива).

Я знаю, что /etc/systemd/journald.conf имеет опцию ForwardToSyslog=yes , которая позволила бы мне вернуться к моим старым путям, но это похоже на неэлегантный шаг назад. Имеет ли systemd встроенный способ отправки журналов на центральный сервер ведения журнала, такой как Logrhythm, ELK или аналогичный, или установка ForwardToSyslog=yes правильный способ сделать это?

  • Как узнать, что делать в dmesg?
  • Как получить дополнительную информацию о загрузочном сообщении «Ожидание / dev для полного заполнения»
  • Узнайте, что вызывает случайные перезагрузки, если / var / log / syslog пуст
  • Как настроить ведение журнала внутри контейнера Docker?
  • Данные, добавляемые к файлу, и когда его значение пересекло 200 МБ, новый файл должен быть создан
  • Регистрация при превышении лимита
  • Недопустимое разрешение Linux при вводе сообщения журнала в файл
  • Изолировать ошибки аутентификации SSH в собственный файл журнала на RHEL 6.6
  • Что означает строка *. *; Auth, authpriv.none - / var / log / syslog в файле конфигурации rsyslog?
  • Как исключить данные строки в syslog-ng?
  • Можно ли включить протоколирование в FirewallD
  • Извлечь файл из полностью отключенной машины, возможно, через сообщения ядра
  • 2 Solutions collect form web for “Как я должен отправлять журналы systemd на выделенный сервер протоколирования”

    Похоже, что systemd не имеет встроенного средства пересылки сообщений на сервер syslog. Официальной рекомендацией Red Hat является использование модуля imjournal позволяющего rsyslog читать журналы журнала и пересылать эти журналы на центральный сервер ведения журнала, установив в файле /etc/rsyslog.conf следующее:

     module(load=”imjournal” PersistStateInterval=”number_of_messages” StateFile=”path” ratelimit.interval=”seconds” ratelimit.burst=”burst_number” IgnorePreviousMessages=”off/on”) 

    Они предоставляют информацию об использовании этих параметров, отмечая

    • С помощью number_of_messages вы можете указать, как часто данные журнала должны быть сохранены. Это будет происходить каждый раз, когда будет достигнуто указанное количество сообщений.

    • Замените путь на путь к файлу состояния. Этот файл отслеживает запись журнала, которая была последней обработанной.

    • С помощью секунд вы устанавливаете длину предельного значения скорости. Количество сообщений, обрабатываемых в течение этого интервала, не может превышать значение, указанное в номере_папки. Значение по умолчанию – 20 000 сообщений за 600 секунд. Rsyslog отбрасывает сообщения, которые поступают после максимального пакета в указанный период времени.

    • С IgnorePreviousMessages вы можете игнорировать сообщения, которые в настоящее время находятся в Журнале, и импортировать только новые сообщения, которые используются, когда нет указанного файла состояния. Значение по умолчанию выключено. Обратите внимание, что если этот параметр выключен и файл состояния отсутствует, все сообщения в Журнале обрабатываются, даже если они уже были обработаны в предыдущем сеансе rsyslog.

    Я не читал подробно о imjournald раньше, но, прочитав ответ Джеймса Шейя, я думаю, что это действительно легко.

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

     module(load=”imjournal” PersistStateInterval=”number_of_messages” StateFile=”path” ratelimit.interval=”seconds” ratelimit.burst=”burst_number” IgnorePreviousMessages=”off/on” ruleset="journald" #bind this action to the ruleset "journald" ) #declare ruleset "journald" ruleset( name="journald" queue.type="FixedArray" queue.spoolDirectory="/var/run/rsyslog/queues" queue.filename="stats_ruleset" queue.lowwatermark="20000" queue.maxdiskspace="100m" queue.size="5000000" queue.dequeuebatchsize="1000" queue.saveonshutdown="on" ) { # add here actions you want to perform action( name="impstats_to_es" type="omelasticsearch" server="127.0.0.1" serverport="9200" template="stats" searchIndex="impstats" searchType="impstats" bulkmode="on" action.resumeretrycount="-1" ) } 
    Linux и Unix - лучшая ОС в мире.