Je réponds à ma propre question.
swatch a peut-être fonctionné, mais je n'ai pas réussi à faire fonctionner le module Sys :: Syslog de perl sur l'hôte, et / usr / bin / logger installé sur l'hôte ne prend pas en charge la journalisation sur le serveur distant (util-linux-ng- 2.17.2).
Donc, la première chose que j'ai faite a été de télécharger le code source d'util-linux-2.20.1 pour lequel le programme d'enregistrement prend en charge la journalisation à distance. Lors des tests, il est devenu évident qu'une limite était imposée au nombre de caractères autorisés sur la ligne de journal. En fouillant dans le code source, j'ai trouvé une limite de 400 caractères codée en dur. (Si vous ne me croyez pas, exécutez "strings / usr / bin / logger | grep 400" sur n'importe quel système Linux).
Cette limite n'est pas acceptable pour la journalisation de type apache (y compris nodejs), j'ai donc modifié le code et augmenté la limite à 4096. Pendant que j'y étais, j'ai également ajouté une nouvelle option de ligne de commande qui permet d'insérer une option chaîne de texte au début de chaque ligne de journal. Je l'ai fait parce que les journaux nodejs n'incluent pas le nom d'hôte comme on pourrait le voir dans apache.
À ce stade, j'ai pu exécuter un script shell avec "tail -F -n 0 [logfile] | ./modified_logger ...." et cela a fonctionné. Mais j'avais quelques inquiétudes à propos de l'exécution de cela depuis supervise (daemontools) ou même en arrière-plan, car si l'un ou l'autre côté du tuyau se termine, il y a un risque que tout le tuyau se termine. J'avais également des inquiétudes (bien que non testées) sur les performances.
J'ai donc décidé de combiner la fonctionnalité de queue avec la fonctionnalité d'enregistreur dans un seul fichier binaire exécutable qui contournerait la nécessité d'utiliser des canaux Unix ou des programmes externes. J'ai fait cela en piratant tail.c de gnu coreutils et en incorporant ce dont j'ai besoin dans le programme d'enregistrement modifié.
Le résultat est un nouveau binaire (taille 117k) que j'appelle "filelogger" et qui surveille en permanence un ou plusieurs fichiers et enregistre chaque nouvelle ligne dans un syslog local ou distant, via UDP ou TCP. Il fonctionne comme un charme. J'ai pu faire une petite analyse comparative et il enregistre environ 17000 lignes (1,8 Mo) en environ 3 secondes sur des sous-réseaux avec un vlan et quelques commutateurs physiques entre eux, sur un serveur distant exécutant syslog-ng.
pour exécuter le programme, vous faites quelque chose comme ceci (soit au premier plan, en arrière-plan ou supervisé avec daemontools):
./filelogger -t 'access' -d -p local1.info -n [hôte de connexion distant] -u / tmp / ignoré -a $ (nom d'hôte) / tmp / monfichier1 / tmp / monfichier2 ...
/ tmp / monfichier1 et / tmp / monfichier2 sont les fichiers surveillés.
Le "-a" est la nouvelle option que j'ai ajoutée. Dans ce cas, j'insère le nom d'hôte local au début de chaque ligne de journal.
Ces solutions étaient exactement le type de solution que je cherchais lorsque j'ai posé la question et, comme il s'est avéré, elles n'existaient pas avant que je ne les fasse moi-même. :)