web-dev-qa-db-fra.com

Configurez un serveur syslog supplémentaire non root en tant que service systemd

Je veux créer un service systemd, qui lancerait une instance supplémentaire de syslog (je suppose rsyslogd, comme cela semble être ce qui est installé sur mon Xenial?). Je le veux écoute sur le socket spécifié (sans privilège) en tant que "serveur syslog" et sauvegarde tous les journaux reçus dans un fichier. Je veux qu'il s'exécute non privilégié (c'est-à-dire en tant qu'utilisateur non root).

En supposant que j'ai créé le nouvel utilisateur logdumper et que je mette les lignes suivantes dans /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

- que dois-je mettre dans /home/logdumper/rsyslogd-port-%i.conf? De plus, mon ExecStart est-il OK?

Supposons que je souhaite l'écouter sur le port 9999 (donc,% i = 9999) et vider les données reçues dans /home/logdumper/rsyslogd-port-9999.log.

1
akavel

Donc, il semble que quelque chose comme ci-dessous fonctionne pour moi comme 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

J'ai construit ceci basé sur man rsyslog.conf. La directive $template consiste à ajouter %FROMHOST%, qui dans mon cas est une meilleure adresse IP que %HOSTNAME%.

1
akavel