Développeur FullStack & Devops

Notes et mémos techniques

Rsyslog

3 Coté serveur

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
  1. nous souhaitons envoyer tous les niveaux de logs de cron vers le fichier spécifié
  2. 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
  3. 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.

debian
devops
linux
raspberry-pi
shell
syslog
rsyslog
devops
rédigé le 17/08/19 par Behrouze
A proposCheat SheetsOutilsVidéos