rsyslog – Unterschiedliche Protokolle für unterschiedliche IP-Adressen?

rsyslog – Unterschiedliche Protokolle für unterschiedliche IP-Adressen?

In unserem Netzwerk sind die Geräte überall verstreut. Ich würde gerne so etwas machen wie:

Pool1 { 192.168.1.1-192.168.1.20, 192.168.1.50 } Pool2 { 192.168.1.21-192.168.1.40, 192.168.1.66 }

wenn aus Pool1, dann mach das

wenn aus Pool2, dann mach das

Auf diese Weise könnte ich dafür sorgen, dass Protokolle von Macs wie Mac-Protokolle aussehen, Linux-Protokolle wie Linux-Protokolle, Cisco-Protokolle wie Cisco-Protokolle usw. Ich konnte beim Googeln einfach nichts finden, das spezifisch genug wäre.

Antwort1

Wenn Sie eine einigermaßen aktuelle Version vonrsyslog(Pakete der neuesten Version finden Sie auf ihrer Website), dann sollten Sie in der Lage sein, ein Array zum Vergleich zu verwenden, wie erklärtHier. Etwas wie:

if $fromhost-ip == [ "192.168.1.1", "192.168.1.2"... ] then {
  action(...do this...)
}

Obwohl aus derDokumentation der Kontrollstrukturenes scheint, es sollte eher so lauten:

if $variable in [array]

Wenn Sie einen großen Bereich haben, sollten Sie in der Lage sein, eine lokale Variable mit einer solchen foreach-Struktur zu füllen. Weitere Informationen zum Scripting finden Sie, wenn Sie in den Dokumenten nach „RainerScript“ suchen.

Antwort2

Das funktioniert bei mir:

# accept logging for remote hosts on a per-ip-address basis
$template DirectoryPerHost,"/var/log/REMOTEHOSTS/%fromhost-ip%/%syslogfacility-text%.log"
if ( ( $fromhost-ip != "127.0.0.1" ) and (  $fromhost-ip != "::1" ) ) then  {
    ?DirectoryPerHost
} else {
    whatever you want to do with local log files here
}

Anstelle von „fromhost-ip“ können Sie auch andere Variablen verwenden. Weitere Informationen finden Sie in den von Radu verlinkten Dokumenten.

Radu hat Recht, dass Sie hierfür ein aktuelles Rsyslog benötigen.

Wenn Sie bei RHEL6 oder einem seiner Rebuilds nicht weiterkommen, gibt es ein rsyslog7-Paket vom Betriebssystem, das Sie anstelle des standardmäßigen (alten) rsyslog verwenden können. Die Standardversion unterstützt diese Syntax nicht, v7 jedoch schon.

verwandte Informationen