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

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

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

  • Где хранятся журналы доступа к файлам Apache?
  • Очистка файлов журнала в Linux
  • ESET NOD32 esets_daemon syslog flood
  • Могу ли я остановить IPv6 «Router Advertisement», заполняя syslog без отключения IPv6?
  • logrotate записывает старый app.log.1 вместо app.log
  • Как настроить демон для мониторинга журнала ошибок и запуска предупреждений об уведомлениях по электронной почте (возможно, syslogd?)
  • syslog дублирует весь контент
  • rsyslog.conf только частично заслуженно
  • 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 - лучшая ОС в мире.