rsyslog: ¿Diferentes registros para diferentes direcciones IP?

rsyslog: ¿Diferentes registros para diferentes direcciones IP?

Nuestra red tiene dispositivos dispersos por todas partes. Me gustaría hacer algo como:

grupo1 { 192.168.1.1-192.168.1.20, 192.168.1.50 } grupo2 { 192.168.1.21-192.168.1.40, 192.168.1.66 }

si desde el grupo 1 haz esto

si desde pool2 haz eso

De esa manera podría hacer que los registros de Mac parezcan registros de Mac, los registros de Linux parezcan registros de Linux, los registros de Cisco parezcan registros de Cisco, etc. Simplemente no he podido encontrar nada lo suficientemente específico buscando en Google.

Respuesta1

Si tienes una versión decentemente reciente dersyslog(Los paquetes de la última versión se pueden encontrar en su sitio web.) entonces deberías poder usar una matriz para comparar, como se explicaaquí. Algo como:

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

Aunque desde eldocumentación de estructuras de controlparece que debería ser más como:

if $variable in [array]

Si tiene un rango grande, debería poder completar una variable local con una estructura foreach como esa. Puede encontrar más información sobre secuencias de comandos si busca en los documentos "RainerScript"

Respuesta2

Esto funciona para mí:

# 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
}

Hay otras variables que puede usar en lugar de fromhost-ip; consulte los documentos a los que Radu enlaza para obtener más información.

Radu tiene razón en que necesita un rsyslog reciente para lograr esto.

Si está atascado en RHEL6 o una de sus reconstrucciones, hay un paquete rsyslog7 del sistema operativo que puede usar en lugar del rsyslog predeterminado (antiguo). La versión predeterminada no admite esta sintaxis, pero la versión 7 sí.

información relacionada