Empêcher rsyslog de consigner les messages des hôtes distants dans local / var / log / syslog

8

J'utilise rsyslog pour enregistrer les journaux des hôtes distants sur un serveur de cette façon:

Serveur:

# Logfile for each host
$template DynaFile,"/var/log/rsyslog/%HOSTNAME%.log"
*.* -?DynaFile

Clients:

*.* @servername

Cela crée des fichiers journaux pour chaque hôte client des serveurs, /var/log/rsyslog/mais il enregistre également chaque message sur les serveurs /var/log/syslog. Donc ça devient vraiment ballonné. Comment puis-je l'empêcher afin qu'il /var/log/syslogne contienne que des messages du serveur lui-même?

Michael
la source
1
Vous voudrez examiner les filtres basés sur les propriétés, car HOSTNAME est l'un des champs syslog. Vous voudrez essentiellement le modifier afin qu'il ne sélectionne que ses propres journaux pour/var/log/syslog
Bratchley

Réponses:

2

Voici ce qui fonctionne pour moi:

## For accepting syslog info from remote hosts
$template TempAuth, "/var/log/infosys/%HOSTNAME%/%PROGRAMNAME%.log"
$template TempMsg,  "/var/log/infosys/%HOSTNAME%/%PROGRAMNAME%.log"

if ($fromhost-ip != "127.0.0.1" ) then ?TempAuth
& ~
if ($fromhost-ip != "127.0.0.1" ) then  ?TempMsg
& ~
Client
la source
Pourquoi y a-t-il une duplication entre TempAuth et TempMsg?
vdboor
0

J'y travaille beaucoup et je pense avoir trouvé une solution. J'encourage les autres à essayer cela et à rechercher des conséquences potentiellement néfastes. Je suggère que cela soit mis en œuvre sur les laboratoires / tests et les machines non critiques en premier.

$template PerHostLog,"/var/log/net-hosts/%fromhost-ip%/%fromhost-ip%.log"
$template RemoteHostFileFormat,"%TIMESTAMP% %fromhost-ip% %syslogfacility-text% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::space-cc,drop-last-lf%\n”
:inputname, isequal, "imudp" ?PerHostLog;RemoteHostFileFormat
:fromhost-ip , !isequal , "127.0.0.1" stop

Les 4 lignes ci-dessus se trouvent dans la section supérieure de mon fichier /etc/rsyslog.conf

Je regarde actuellement 2 fichiers journaux:
/var/log/net-hosts/10.1.1.1
et / var / log / syslog

pendant que je regarde les deux, je vois des journaux se remplir dans le fichier hôte distant, mais pas dans le syslog . J'ai redémarré apache et j'ai vu des entrées de journal dans syslog pour cette tâche.

parsecpython
la source
Merci pour les tests. Mais ça ne marche pas pour moi. Il enregistre toujours tout sur les serveurs / var / log / syslog
Michael
0

Vous devez vous assurer que vos nouvelles règles sont évaluées avant celle qui se connecte à / var / log / syslog.
Par exemple, sur Ubuntu Trusty (rsyslog 7.4.4) /etc/rsyslog.conf contient de
$IncludeConfig /etc/rsyslog.d/*.conf
sorte que les règles par défaut soient chargées depuis /etc/rsyslog.d/50-default.conf, celle pour / var / log / syslog incluse.

Dans ce cas, vous pouvez ajouter un nouveau fichier à charger avant celui-ci, tel que 00-remote.conf. Pour être complet, voici son contenu pour un système que je gère:

$template RemoteStore, "/var/log/remote/%HOSTNAME%/%timegenerated:1:10:date-rfc3339%"
:source,isequal,"NAS",-?RemoteStore
& ~
Joril
la source