Rsyslog
Notions
Rsyslog se configure assez simplement lorsqu’on a compris les notions de sélecteurs et d’actions :
Sélecteurs
Un sélecteur, est un couple facility.priority qui va déterminer la provenance des logs à traiter.
- Facility désigne un sous-système applicatif concerné (par ex cron, daemon, auth, mail etc.)
- Priority désigne la priorité des messages à traiter.
Dans la configuration, il est possible de spécifier un ensemble de couples facility.priority séparés par des virgules, et il est également possible d’utiliser des * (joker).
Actions
A chaque sélecteur (ou ensemble de sélecteurs) nous associons une action qui consiste à envoyer ces logs vers un fichier ou vers un serveur de logs.
Les actions déterminent donc la destination des logs.
Configuration
Le fichier de configuration nous permet de spécifier les sélecteurs (le couple facility.priority) et l’action associée.
Il existe un fichier de configuration principal /etc/rsyslog.conf
qui peut inclure d’autres fichiers (situés par ex dans /etc/rsyslog.d/
) grâce à la directive $IncludeConfig /etc/rsyslog.d/*.conf
.
Coté clients
Les clients doivent déterminer s’ils doivent envoyer leurs logs dans un fichier local ou à travers le réseau en TCP ou en UDP, mais surtout indiquer quels logs, à quel niveau de sévérité ils souhaitent envoyer, et où l’envoyer, voici quelques exemples.
logs locaux
cron.* /var/log/cron.log
auth,authpriv.err /var/log/auth.log
*.*;cron,auth,authpriv.none -/var/log/syslog
- nous souhaitons envoyer tous les niveaux de logs de cron vers le fichier spécifié
- nous avons la notation
facility1,facility2.priority
qui spécifie que les logs de priorité (ici error) des 2 facilities spécifiés partirons vers auth.log - tous les messages en dehors des logs des 3 services spécifiés (par le
.none
)
logs distants
*.* @monserveurdelog.fr:514
auth.err @monserveurdelog.fr:514
- . : indique d’envoyer tous les logs
- @ ou @@ : indique d’envoyer en UDP ou TCP
- monserveurdelog.fr:514 : adresse et port du serveur de logs
Troubleshooting
Pour tester si notre configuration fonctionne bien et que le client envoi bien ses erreurs au serveur (ou en local), il est possible de générer une fausse erreur via la commande logger
:
logger -p authpriv.alert "ca fonctionne 🤜🤛"
Coté serveur
modifier le fichier de façon à permettre la réception des logs en UDP et/ou TCP:
$ModLoad imudp $UDPServerRun 514
$ModLoad imtcp $InputTCPServerRun 514
puis paramétrer la whiteliste d’IP autorisés etc.
Voir doc Debian.