La réponse à votre première question est:
Oui, tout appel à syslog () bloque. Peut-être pour une très courte période, mais c'est toujours un appel synchrone impliquant un descripteur de fichier. Voir man 3 syslog
pour plus de détails.
À moins que vos serveurs n'utilisent des architectures et des primitives asynchrones, il y aura toujours un certain verrouillage. Thsi peut être atténué, mais pas éliminé, par exemple en utilisant un fil de séparation pour la journalisation. Pour les deux autres questions, je ne sais pas vraiment, mais l'inspection du code source rsyslogd (ainsi que celui de la famille de fonctions syslog ()) est le seul moyen de le savoir.
Plus généralement, si vous déplacez la journalisation vers un serveur externe via le protocole UDP: 514 "network syslog protocol", vous apportez les possibilités de créer des verrous à presque zéro. Avec l' inconvénient de la perte possible d'une partie de l'exploitation forestière lors de charges élevées.
Tout d'abord , dans les serveurs "d'origine", vous devez vous assurer que toute la journalisation se produit via syslog. Par exemple, dans Apache2, vous devez spécifier:
ErrorLog "syslog:daemon"
Pour les autres serveurs, veuillez vous référer à la page de manuel appropriée. Si vous ne pouvez pas vous en assurer, veuillez garder à l'esprit que la connexion aux systèmes de fichiers peut créer
Deuxièmement , dans la configuration rsyslogd d'origine, vous demandez de diriger tout le trafic syslog pour l'installation que vous choisissez ("démon" dans cet exemple) vers un ou plusieurs serveurs syslog externes. Dans le fichier de configuration rsyslog, vous pouvez spécifier:
daemon.* @192.168.128.1
daemon.* @192.168.254.1
d'avoir deux copies des journaux à envoyer à deux serveurs différents en même temps.
Troisièmement , dans le ou les serveurs de destination, vous activez la réception du message syslog sur UDP: 514. Il se trouve dans le fichier de configuration (destination) rsyslogd et est normalement désactivé par defualt (il suffirait de supprimer les # principaux:
$ModLoad imudp
$UDPServerRun 514
Quatrièmement , facultatif mais fortement recommandé, j'activerais également des horodatages haute résolution:
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
De plus, cette option est normalement désactivée par défaut (pourquoi sur Terre?).