Получение сообщений Syslog с помощью systemd Arch Linux

Мне кажется, что я упустил из виду очевидное, но я не могу понять, как заставить мой сервер Arch Linux, который использует systemd , получать и записывать сообщения syslog из удаленной системы.

У меня есть модем Cisco 678 DSL и DD-WRT WAP, и оба могут быть настроены для отправки сообщений формата syslog на другой компьютер. Я бы хотел, чтобы эта машина была моим сервером Arch Linux.

Я googled вокруг, и все, что я нахожу, это то, что «systemd заменяет syslog», или что мне больше не нужно запускать syslog или что-то подобное, не относящееся к моему вопросу.

ОБНОВИТЬ

Я спросил на форумах Arch и не получил соответствующих ответов. Я установил syslog-ng только для прослушивания на UDP-порту 514. syslog-ng пишет сообщения от моего Cisco 678 и DD-WRT WAP, которые у меня есть. К сожалению, сообщения не попадают в журнал systemd, а скорее в плоские файлы. Итак, нет точного решения, но что-то вроде обходного пути. Я предпочел бы иметь сообщения syslog в журнале, а не в плоских файлах.

5 Solutions collect form web for “Получение сообщений Syslog с помощью systemd Arch Linux”

Вы можете легко писать syslog-сервер плохого человека с помощью socat . Вам просто нужен сервисный модуль:

 [Service] Restart=on-success ExecStart=/usr/bin/socat -u UDP-RECV:514 STDOUT 

Он будет слепо отправлять что-либо, полученное на служебном порту syslog, в журнал systemd. Сохраните выше, как, скажем, /etc/systemd/system/syslog.service а затем

 # systemctl daemon-reload # systemctl start syslog 

Затем вам просто нужен источник для отправки сообщений на UDP-порт 514 на вашем сервере прослушивания.

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

( socat находится в репозитории Arch Linux Extra : pacman -S socat )

Таким образом, здесь есть немного пробела.

Systemd поддерживает удаленный обмен сообщениями через компонент systemd-journal-gateway. При этом эти сообщения не находятся в формате syslog. Syslog (как формат) является ратифицированной IETF-формой, документированной в RFC 5424 (которая устарела в предыдущей версии, RFC 3164).

Здесь описаны все сложности, связанные с тем, что эти игры прекрасно сочетаются:

http://www.freedesktop.org/wiki/Software/systemd/syslog/

и здесь (man systemd-journald.service)

  systemd-journald is a system service that collects and stores logging data. It creates and maintains structured, indexed journals based on logging information that is received from the kernel, from user processes via the libc syslog(3) call, from STDOUT/STDERR of system services or via its native API. It will implicitly collect numerous meta data fields for each log messages in a secure and unfakeable way. See systemd.journal-fields(7) for more information about the collected meta data. 

В заключение убедитесь, что сообщения отправляются из syslog-ng в STDOUT, и все должно заканчиваться в журнале.

Следуя этому, я еще немного нашел это:

https://github.com/intgr/pg_journal/blob/master/doc/pg_journal.md

Где кто-то пишет привязку из PostgreSQL к systemd для ведения журнала. В этом они цитируют, что в настоящее время (с момента этого файла, 2013/06) многострочные сообщения не поддерживаются в systemd, поэтому следите за этим тоже.

Я не знаю распределения Arch. У меня есть Fedora 20 (включая systemd) и настроил его для приема сообщений удаленного системного журнала.

IMHO, эта функциональность не связана с systemd. Systemd-journald.service вставляет себя между программами kernel / userspace и подсистемой syslog. Он захватывает (я думаю) только локальные сообщения из этих источников в свою базу данных журнала, а затем пересылает их в syslog. См. Например, «man systemd-journald.service» (по крайней мере, на Fedora).

В моем случае я включаю это, настраивая дополнительный модуль TCP syslog-приемника в /etc/rsyslog.conf, т. Е.

 # Provides TCP syslog reception $ModLoad imtcp $InputTCPServerRun 514 

Также доступен модуль UDP.

Также необходимо добавить (r) правила syslog, чтобы направлять вывод на нужные файлы. Полную документацию см. По адресу : http://www.rsyslog.com/doc/.

НТН.

Я установил syslog-ng и смог получать сообщения журнала syslog. Но хотелось бы, чтобы я действительно хотел получить сообщения журнала журнала syslog, а затем записать указанное сообщение в journald. Я не мог найти способ настроить syslog-ng для записи удаленных сообщений syslog в journald.

Поэтому я написал утилиту для этого.

https://github.com/advantageous/rsyslog-journald-repeater

 ./rsyslog-journald-repeater -h Usage of ./rsyslog-journald-repeater: -debug debug flag -host string hostname to listen on (default "0.0.0.0") -port int port to listen on (default 5514 on darwin, default 514 on Linux, Unix, etc.) 

В проект включены файлы и инструкции по тестированию и примеры файлов unitd. Наслаждайтесь!

syslog-ng и systemd журнал

Из syslog-ng

Начиная с версии syslog-ng 3.6.1 исходный код system() по умолчанию для system() Linux, использующий systemd, использует journald как свой стандартный источник system() .

Если вы хотите использовать файлы journald и syslog-ng, убедитесь, что действуют следующие настройки. Для systemd-journald, в файле /etc/systemd/journald.conf, Storage = либо установлено автоматически, либо отключено (по умолчанию установлено значение auto), а ForwardToSyslog = установлено значение no или unset (по умолчанию – нет). Для /etc/syslog-ng/syslog-ng.conf вам нужна следующая строфа источника:

  source src { system(); internal(); }; 

Если, с другой стороны, вы не хотите сохранять журналы журнала, но только текстовые журналы syslog-ng, установите Storage=volatile и ForwardToSyslog=yes в /etc/systemd/journald.conf . Это будет хранить journald в ram. Начиная с syslog-ng 3.6.3, syslog-ng использует journald как источник system() поэтому, если вы установите Storage = none, журнал systemd выведет все сообщения и не переадресует их в syslog-ng.

После перезапуска перезапустите демоны systemd-journald.service и syslog-ng.service .

  • Как указать уровень журнала строки вывода из службы systemd?
  • Должен ли я использовать отдельные файлы журналов или записывать все в журнал?
  • Обнаруживать, если программа должна регистрироваться в журнале systemd или stdout
  • Где «logger» регистрирует свои сообщения в Arch Linux?
  • Захват файлов текстового журнала в journald
  • journalctl: непризнанная опция '--vacuum-size ='
  • Сохранять сообщения из предыдущих загрузок при одновременном сохранении выходных данных журнала
  • Почему systemd-journald выполняет массивные записи на диске?
  • Перезагрузка systemd-journald config
  • Как узнать, когда была запущена / остановлена ​​/ перезапущена служба systemd?
  • Как очистить записи журнала для конкретного устройства?
  • Interesting Posts

    BSD Books – Лучшие книги для OpenBSD и FreeBSD

    Могу ли я запустить команду после того, как пользователь использует Ctrl-C, чтобы убить команду?

    извлекать инкрементные изменения в каталог

    Как удалить все строки в файле UNIX, кроме первой и последней строки?

    Как печатать не последовательные страницы из файла, 2 страницы на листе?

    Предложения для поиска приложений Xubuntu (XFCE)

    mutt: сохранить сообщение в определенной папке

    Как запустить команду на переднем плане, а затем отправить на задний план

    Я что-то испортил, случайно вставив «/ etc / inittab» в оболочку?

    Легкий способ разбора формата даты syslog

    Рекурсивно сравнивать каталоги с резюме по разному содержимому без изучения различий в содержимом файла

    Элемент запуска Gnome игнорирует аргументы командной строки

    Как происходит модификация файла inplace в файле?

    Есть ли в Интернете репозиторий утилит Linux через веб-браузер?

    Как перечислять убивающие задачи?

    Linux и Unix - лучшая ОС в мире.