将额外的非 root 系统日志服务器设置为 systemd 服务

将额外的非 root 系统日志服务器设置为 systemd 服务

我想创建一个系统服务,这将引发额外的系统日志实例(我假设rsyslogd,因为这似乎是我的 Xenial 上安装的?)。我希望它监听指定的套接字(无特权)作为“系统日志服务器”,并将所有收到的日志转储到某个文件中。我希望它运行无特权(即以非 root 用户身份)。

假设我创建了新用户logdumper并输入以下几行:/etc/systemd/[email protected]

[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 可以吗?

假设我希望它监听端口 9999(因此,%i=9999),并将接收到的数据转储到/home/logdumper/rsyslogd-port-9999.log

答案1

因此,看起来下面的方法对我来说是可行的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%

相关内容