Logger un fichier sur un serveur distant

Le but de la manip est de récupérer les logs zimbra/carbonio sur un serveur syslog-ng UDP distant, le tout sans modifier la conf de zimbra, pour éviter les problèmes en cas de MAJ majeur de carbonio. Du coup le tuto est valable pour n’importe quel fichier log, à adapter suivant vos besoins.

Préqueris

Autoriser rsyslog local à accéder au fichier log, par défaut si vous utilisez appamor,notamment pour la version carbonio ubuntu, l’accès au fichier log sera bloqué.

bash

# Voir le profil AppArmor actuel de rsyslog
cat /etc/apparmor.d/usr.sbin.rsyslogd

Créer un fichier d’extension local :

# Éditer le profil local (ne pas modifier le profil principal)
vi /etc/apparmor.d/local/usr.sbin.rsyslogd

Ajouter :

# Accès aux logs Zextras/Carbonio
/opt/zextras/log/ r,
/opt/zextras/log/** r,

Recharger AppArmor :

apparmor_parser -r /etc/apparmor.d/usr.sbin.rsyslogd
systemctl restart rsyslog

Configurer votre rsyslog

Créé un fichier /etc/rsyslog.d/60-remote.conf

vi /etc/rsyslog.d/60-remote.conf

Utiliser le module imfile pour lire les fichiers de log Zimbra

module(load="imfile")

input(type="imfile"  
File="/opt/zextras/log/mailbox.log"  
Tag="carbonio"  
Facility="local6"  
Severity="info")

local6.\* action(type="omfwd" target="[monsyslog.domain.fr]" port="514" protocol="udp")

On rédémarre le service rsyslog

systemctl restart rsyslog