LINUX.ORG.RU
ФорумAdmin

Не выходит записать логи из journald->rsyslog->file

 ,


0

1

Здравствуйте, Подскажите, пожалуйста, не могу найти ошибку. Хочу самое простое - пересылать логи из сокета systemd-journald на удаленный сервер через rsyslog. Не вышло сходу, поэтому решил, для начала, попробовать записать логи в файл - логов нет, при этом и ошибок нет. Не пойму что не так - вроде все делаю по документации. Debian 11, если что.

  1. Настроил /etc/systemd/journald.conf: ForwardToSyslog=yes Остальные ForwardTo* сделал =no. Пробовал и комментировать их - толку 0.
  2. Файл конфигурации rsyslog.conf:
module(load="imuxsock" SysSock.Use="on" SysSock.Name="/run/systemd/journal/syslog")
module(load="builtin:omfile"                          
        Template="RSYSLOG_TraditionalFileFormat"      
        FileOwner="root"                              
        FileGroup="adm"
        dirOwner="root"
        dirGroup="adm"
        FileCreateMode="0640"
        DirCreateMode="0755")

# ========== Global Settings Section ==========
global(workDirectory="/var/spool/rsyslog" umask="0022" preserveFQDN="on" localHostname="node1")

# ========== Rules Section ==========

#ruleset(name="To_remote") {
#   *.*  action(type="omrelp" target="192.168.10.54" port="10514")
#  action(type="omfile" file="data_remote.log")
#  }

input(type="imuxsock" Socket="/run/systemd/journal/syslog")
action(type="omfile" file="/tmp/data.log")

Пробовал разные варианты, как видите - не работает все равно.

Первое что не пойму: rsyslog заставляет меня еще раз указывать параметр Socket= в блоке input. Зачем, если в подключении модуля я уже указал? И при старте получаем двойное подключение сокета rsyslog:

root@node1:/etc# systemctl status rsyslog
● rsyslog.service - System Logging Service
     Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; preset: enabled)
     Active: active (running) since Wed 2023-12-13 22:49:33 UTC; 7min ago
TriggeredBy: ● syslog.socket
       Docs: man:rsyslogd(8)
             http://www.rsyslog.com/doc/
   Main PID: 1163 (rsyslogd)
      Tasks: 2 (limit: 19199)
     Memory: 1.3M
        CPU: 11ms
     CGroup: /system.slice/rsyslog.service
             └─1163 /usr/sbin/rsyslogd -n -iNONE

дек 13 22:49:33 node1 systemd[1]: Starting System Logging Service...
дек 13 22:49:33 node1 rsyslogd[1163]: imuxsock: Acquired UNIX socket '/run/systemd/journal/syslog' (fd 3) from systemd.  [v8.2302.0]
дек 13 22:49:33 node1 systemd[1]: Started System Logging Service.
дек 13 22:49:33 node1 rsyslogd[1163]: imuxsock: Acquired UNIX socket '/run/systemd/journal/syslog' (fd 3) from systemd.  [v8.2302.0]
дек 13 22:49:33 node1 rsyslogd[1163]: [origin software="rsyslogd" swVersion="8.2302.0" x-pid="1163" x-info="https:/>

Сокет syslog существует, логов нет. Файл не создается. Куда хоть посмотреть? Ошибок тоже не показывает нигде.


1. Где-то в конфиге systemd (journald точнее) включается форвардинг в syslog.
2. Сокет нестандарный, надо syslog на тот сокет перенастроить:
https://lists.freedesktop.org/archives/systemd-devel/2012-January/004188.html
3. Я делал с syslog-ng, там есть вообще плагин отдельный для таскания логов из journal.

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 2)

Debian 11, если что.

Кажется вы что-то перемудрили.

Запустил виртуалку с Debian11, на которой точно ничего похожего не делал. Там уже по умолчанию всё настроено и даже запущено (оказывается, даже не знал).

Все эти модули и сокеты уже прописаны и так в /etc/rsyslog.conf и в /usr/lib/systemd/system/syslog.socket

Создал файлик

cat /etc/rsyslog.d/tofile.conf 
action(type="omfile" file="/tmp/data.log")
всё сразу и работает - пишет в /tmp/data.log

Toxo2 ★★★★
()
Последнее исправление: Toxo2 (всего исправлений: 1)