J'ai un programme qui sort vers syslog avec un tag/nom de programme donné. J'aimerais pouvoir filtrer le trafic syslog de ce programme et l'envoyer à un serveur syslog distant, en laissant tous les autres trafics syslog locaux.
Je peux envoyer tout le trafic au serveur distant avec
*.* @remote_server
Comment puis-je le filtrer?
Les fichiers de configuration de Rsyslog se trouvent dans: /etc/rsyslog.d/*.conf
Rsyslog lit les fichiers de configuration de manière séquentielle. Il est donc important de nommer votre fichier de configuration afin que la configuration spécifique soit chargée avant toute autre opération. Donc, nommez votre fichier en commençant par les zéros en tête, c'est-à-dire 00-my-file.conf
. Il est préférable de créer un nouveau fichier afin que les mises à jour, etc., n'écrasent pas votre configuration locale.
Exemple:
if $programname == 'programname' and $msg contains 'a text string' and $syslogseverity <= '6' then /var/log/custom/bind.log
Ou si vous souhaitez simplement supprimer certaines entrées:
if $programname == 'programname' then ~
Dans votre cas: (UDP)
if $programname == 'programname' then @remote.syslog.server
& ~
ou (TCP)
if $programname == 'programname' then @@remote.syslog.server
& ~
Le & ~
signifie qu'il faut arrêter de traiter les entrées de correspondance (ligne précédente seulement!).
Quelques informations plus générales:
Assurez-vous également que les filtres sont sur la même ligne:
# Example: Log mail server control messages to mail-queue.log
if $hostname == 'titus'\
and $programname == 'smtp.queue.'\
and $syslogseverity <= '6' then /var/log/titus/mail-queue.log
& ~
Filtres utiles:
$hostname
$programname
$msg
$syslogseverity
Les opérateurs:
== (equals)
contains
and
or
Plus d'infos: http://wiki.rsyslog.com/index.php/Configuration_Samples
Nous pouvons aussi essayer cela. Cela fonctionne bien pour moi.
$template Incoming-logs,"/var/log/testing_docker/%PROGRAMNAME%.log"
if $programname startswith 'docker' then -?Incoming-logs
NOTE: Ici, la propriété du dossier testing_docker
devrait être donnée à l'utilisateur syslog. Suivez la commande ci-dessous pour définir les autorisations.
chown syslog:syslog testing_docker