Verhindern Sie, dass rsyslog Remote-Hosts-Nachrichten in local / var / log / syslog protokolliert

8

Ich verwende rsyslog, um Protokolle von Remote-Hosts auf folgende Weise auf einem Server zu speichern:

Server:

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

Kunden:

*.* @servername

Dadurch werden Protokolldateien für jeden Client-Host auf Servern erstellt, /var/log/rsyslog/aber jede Nachricht wird auch auf den Servern protokolliert /var/log/syslog. So wird es wirklich aufgebläht. Wie kann ich verhindern, dass /var/log/syslognur Nachrichten vom Server selbst enthalten sind?

Michael
quelle
1
Sie sollten sich mit eigenschaftsbasierten Filtern befassen , da HOSTNAME eines der Syslog-Felder ist. Sie sollten es grundsätzlich so ändern, dass es nur seine eigenen Protokolle für/var/log/syslog
Bratchley

Antworten:

2

Folgendes funktioniert bei mir:

## 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
& ~
Gast
quelle
Warum gibt es eine Verdoppelung zwischen TempAuth und TempMsg?
vdboor
0

Ich habe viel daran gearbeitet und ich denke, ich habe eine Lösung gefunden. Ich ermutige andere, dies zu versuchen und nach potenziell nachteiligen Folgen zu suchen. Ich schlage vor, dies zuerst auf Labor- / Test- und nicht kritischen Maschinen zu implementieren.

$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

Die obigen 4 Zeilen befinden sich im obersten Abschnitt meiner Datei /etc/rsyslog.conf

Ich beobachte derzeit zwei Protokolldateien:
/var/log/net-hosts/10.1.1.1
und / var / log / syslog,

während ich beide beobachte. Ich sehe, dass Protokolle in die Remote-Host-Datei eingefügt werden, jedoch nicht im Syslog . Ich habe Apache neu gestartet und Protokolleinträge in Syslog für diese Aufgabe gesehen.

Parsecpython
quelle
Danke fürs Testen. Aber bei mir funktioniert es nicht. Es protokolliert immer noch alles auf den Servern / var / log / syslog
Michael
0

Sie müssen sicherstellen, dass Ihre neuen Regeln ausgewertet werden, bevor Sie sich bei / var / log / syslog anmelden.
Zum Beispiel unter Ubuntu Trusty (rsyslog 7.4.4) enthält /etc/rsyslog.conf,
$IncludeConfig /etc/rsyslog.d/*.conf
sodass die Standardregeln geladen werden /etc/rsyslog.d/50-default.conf, einschließlich der für / var / log / syslog.

In diesem Fall können Sie eine neue Datei hinzufügen, die vor dieser geladen werden soll, z 00-remote.conf. Der Vollständigkeit halber ist hier der Inhalt für ein System, das ich verwalte:

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