systemd serviceを作成します。これにより、syslogのextraインスタンスが開始されます(rsyslogd)と仮定します、これは私のXenialにインストールされているものと思われますか?)。 指定されたソケットでリッスン(非特権)を「syslogサーバー」として使用し、受信したすべてのログを何らかのファイルにダンプします。 nprivileged(つまり、非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
にダンプしたいとしましょう。
だから、以下のようなものが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%
を追加するもので、私の場合は%HOSTNAME%
よりも優れたIPです。