Я хочу создать systemd сервис, который запустил бы дополнительный экземпляр системного журнала (я принимаю rsyslogd, поскольку это, кажется, то, что установлено на моем Гостеприимном?). Я хочу, чтобы это послушало на указанном сокете (непривилегированном) как "сервер системного журнала", и вывело все полученные журналы в некоторый файл. Я хочу, чтобы это работало непривилегированный (то есть, как некорневой пользователь).
При принятии я создал нового пользователя logdumper
и вставленный в следующие строки /etc/systemd/syslog-server@.service
:
[Unit]
Description=Unprivileged syslog server on port %i
[Service]
User=logdumper
Restart=always
ExecStart=/usr/sbin/rsyslogd -n -f /home/logdumper/rsyslogd-port-%i.conf \
-i /home/logdumper/rsyslogd-port-%i.pid
[Install]
WantedBy=multi-user.target
— что я должен вставить /home/logdumper/rsyslogd-port-%i.conf
? Кроме того, мой ExecStart OK?
Скажем, я хочу, чтобы это послушало на порте 9999 (таким образом, %i=9999), и дамп получил данные к /home/logdumper/rsyslogd-port-9999.log
.
Так, кажется что что-то как ниже работ для меня как rsyslogd-port-9999.conf
:
$ModLoad imudp
$UDPServerRun 9999
$ModLoad imtcp
$InputTCPServerRun 9999
$ModLoad immark # not sure what's this, but seems popular
$template Template_WithSrcHost,"%timegenerated:::date-rfc3339% %HOSTNAME% %FROMHOST% %syslogtag%%msg:::drop-last-lf%\n"
*.* /home/logdumper/rsyslogd-port-9999.log;Template_WithSrcHost
я создал это на основе man rsyslog.conf
. $template
директива должна добавить %FROMHOST%
, который в моем случае является лучшим IP, чем %HOSTNAME%
.