Мне кажется, что я упустил очевидное, но я не могу понять, как получить мой сервер Arch Linux, который использует systemd
для получения и регистрации syslog
сообщений из удаленной системы.
У меня есть DSL-модем Cisco 678 и WAP DD-WRT, и оба они могут быть настроены для отправки сообщений в формате системного журнала на другой компьютер. Я бы хотел, чтобы эта машина была моим сервером Arch Linux.
Я погуглил, и все, что я нахожу, это то, что «systemd заменяет системный журнал», или что мне больше не нужно запускать syslog
или что-то такое же не относящееся к моему вопросу.
ОБНОВИТЬ
Я спрашивал на форумах Arch и не получил соответствующих ответов. Я установил syslog-ng только для прослушивания UDP-порта 514. syslog-ng записывает сообщения от моего Cisco 678, и у меня есть DD-WRT WAP. К сожалению, сообщения попадают не в журнал systemd, а в виде простых файлов. Таким образом, нет точного решения, но что-то вроде обходного пути. Я предпочел бы иметь сообщения системного журнала в журнале, а не в плоских файлах.
источник
Ответы:
Вы можете написать сервер системного журнала для бедного человека с помощью socat . Вам просто нужен сервисный блок, как это:
Он будет вслепую отправлять все, что получено через сервисный порт системного журнала, в системный журнал. Сохраните выше, как, скажем,
/etc/systemd/system/syslog.service
а затемЗатем вам просто нужен источник для отправки сообщений на UDP-порт 514 на вашем слушающем сервере.
Возможно, вы захотите улучшить это, чтобы фактически проанализировать полученные данные и отформатировать их, но это не обязательно, если все, что вы хотите сделать, это записать в журнал то, что было получено.
( Сокат находится в Arch Linux Дополнительные репозитории:
pacman -S socat
)источник
import socket; sock = socket.socket(type=socket.SocketKind.SOCK_DGRAM); sock.bind(("0.0.0.0", 514)); while True: print(sock.recv(1024 * 1024))
Так что здесь есть небольшой разрыв.
Systemd поддерживает удаленный обмен сообщениями через компонент systemd-journal-gateway. При этом эти сообщения не в формате системного журнала. Системный журнал (как формат) - это спецификация, утвержденная IETF, документированная в RFC 5424 (которая устарела в предыдущей версии, RFC 3164).
Другие тонкости создания этих игр хорошо описаны здесь:
http://www.freedesktop.org/wiki/Software/systemd/syslog/
и здесь (man systemd-journald.service)
В итоге убедитесь, что сообщения отправляются из syslog-ng в STDOUT и все должно заканчиваться в журнале.
В продолжение этого я обнаружил и следующее:
https://github.com/intgr/pg_journal/blob/master/doc/pg_journal.md
Где кто-то пишет привязку из PostgreSQL к systemd для регистрации. В этом они ссылаются на то, что в настоящее время (на момент создания этого файла, 2013/06) многострочные сообщения не поддерживаются в systemd, так что следите за этим.
источник
Я не знаю распределение Arch. У меня есть Fedora 20 (включая systemd), и я настроил ее на прием удаленных сообщений системного журнала.
ИМХО, этот функционал не относится к systemd. Systemd-journald.service располагается между программами ядра / пространства пользователя и подсистемой системного журнала. Он записывает (я думаю) только локальные сообщения из этих источников в свою базу данных журнала, а затем перенаправляет их в системный журнал. Смотрите, например, "man systemd-journald.service" (по крайней мере, в Fedora).
В моем случае я включаю это, настраивая дополнительный «модуль приемника системного журнала TCP» в /etc/rsyslog.conf, т.е.
Также доступен модуль UDP.
Также необходимо добавить (r) правила системного журнала, чтобы направить вывод в нужные файлы. Для полной документации см .: http://www.rsyslog.com/doc/
НТН.
источник
Я установил syslog-ng и смог получать сообщения журнала syslog. Но я действительно хотел получить сообщения журнала системного журнала, а затем написать указанное сообщение в журнал. Я не смог найти способ настроить syslog-ng для записи удаленных сообщений syslog в journald.
Поэтому я написал утилиту для этого.
https://github.com/advantageous/rsyslog-journald-repeater
Файлы сборки и инструкции по тестированию, а также примеры файлов системных модулей включены в проект. Наслаждайтесь!
источник
системный журнал и системный журнал
Из системного журнала
Начиная с syslog-ng версии 3.6.1
system()
исходный код по умолчанию в системах Linux, использующих systemd, использует journald в качестве стандартногоsystem()
источника.Если, с другой стороны, вы хотите не сохранять журналы journald, а только текстовые журналы syslog-ng, set
Storage=volatile
иForwardToSyslog=yes
in/etc/systemd/journald.conf
. Это будет хранить журнал в оперативной памяти. Начиная с syslog-ng 3.6.3, syslog-ng использует journald в качествеsystem()
источника, поэтому, если вы установите Storage = none, журнал systemd удалит все сообщения и не перенаправит их в syslog-ng.После изменения перезапустите
systemd-journald.service
иsyslog-ng.service
демонов.источник