Login Logout

Howto Rsyslog

Rsyslog est le démon syslog par défaut sous Debian. Le protocole syslog permet de gérer la journalisation : les messages sont envoyés par diverses applications (messages kernel, user, daemon, mail, etc.) triés par une facility (LOG_KERN, LOG_CRON, LOG_DAEMON, LOG_MAIL, LOG_AUTH, etc.) et un certain niveau de severity (LOG_EMERG, LOG_ALERT, LOG_ERR, LOG_WARNING, etc.) ; ils sont reçus par un démon qui les répartit dans différents fichiers situés dans le répertoire /var/log/ ou par d’autres façons (serveur syslog distant, terminal, etc.)

Installation

En général le paquet rsyslog est installé et le service tourne déjà :

# systemctl status rsyslog
● rsyslog.service - System Logging Service
   Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
     Docs: man:rsyslogd(8)
           http://www.rsyslog.com/doc/
 Main PID: 2815 (rsyslogd)
    Tasks: 4
   Memory: 2.9M
      CPU: 1.604s
   CGroup: /system.slice/rsyslog.service
           └─2815 /usr/sbin/rsyslogd -n

# rsyslogd -v
rsyslogd 8.16.0, compiled with:
        PLATFORM:                               x86_64-pc-linux-gnu
        PLATFORM (lsb_release -d):
        FEATURE_REGEXP:                         Yes
        GSSAPI Kerberos 5 support:              Yes
        FEATURE_DEBUG (debug build, slow code): No
        32bit Atomic operations supported:      Yes
        64bit Atomic operations supported:      Yes
        memory allocator:                       system default
        Runtime Instrumentation (slow code):    No
        uuid support:                           Yes
        Number of Bits in RainerScript integers: 64

Configuration

Le fichier de configuration principal est /etc/rsyslog.conf :

module(load="imuxsock")
module(load="imklog")
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$WorkDirectory /var/spool/rsyslog
$IncludeConfig /etc/rsyslog.d/*.conf

auth,authpriv.*         /var/log/auth.log
*.*;auth,authpriv.none      -/var/log/syslog
#cron.*             /var/log/cron.log
daemon.*            -/var/log/daemon.log
kern.*              -/var/log/kern.log
lpr.*               -/var/log/lpr.log
mail.*              -/var/log/mail.log
user.*              -/var/log/user.log

mail.info           -/var/log/mail.info
mail.warn           -/var/log/mail.warn
mail.err            /var/log/mail.err

*.=debug;\
    auth,authpriv.none;\
    news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;\
    auth,authpriv.none;\
    cron,daemon.none;\
    mail,news.none      -/var/log/messages
*.emerg             :omusrmsg:*

Journaux principaux :

  • auth.log : authentification système (login, su, getty)
  • daemon.log : relatif aux daemons
  • mail.* : relatifs aux mails
  • kern.log : générés par le noyau
  • user.log : générés par des programmes utilisateur
  • debug : messages de debug
  • messages : messages d’infos
  • syslog : tous les messages (sauf exceptions définies)

Nous conseillons :

  • d’activer cron.log
  • de supprimer mail.info, mail.warn et mail.err
  • de réduire les infos en double envoyées à /var/log/syslog
  • de créer des entrées pour les services standard
*.*;auth,authpriv.none;cron,mail,local4,local5,local7.none -/var/log/syslog
cron.*             /var/log/cron.log
#mail.info         -/var/log/mail.info
#mail.warn         -/var/log/mail.warn
#mail.err          /var/log/mail.err
local0.*           /var/log/postgresql.log
local1.*           /var/log/sympa.log
local4.*           -/var/log/openldap.log
local5.*           -/var/log/haproxy.log
local7.*           -/var/log/dhcp.log

Rsyslog supporte une configuration plus avancée, notamment avec des notions d’input, filtre et output. Cela passe notamment par utiliser le nouveau format RainerScript pour la configuration.

Administration

Rotation dynamique des logs

Cela permet d’écrire automatiquement dans un fichier dont le nom est fonction de la date par exemple. Du coup il n’est plus utile de gérer sa rotation (uniquement la compression).

$template DailyPerHostLogs,"/var/log/local2-%$YEAR%-%$MONTH%-%$DAY%.log"
local2.* -?DailyPerHostLogs

Activation en réseau

Pour que Rsyslog écoute en UDP sur réseau (port 514 par défaut) :

# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514