Evite que rsyslog registre mensajes de hosts remotos en local / var / log / syslog

8

Utilizo rsyslog para guardar registros de hosts remotos en un servidor de esta manera:

Servidor:

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

Clientela:

*.* @servername

Esto crea archivos de registro para cada host cliente en los servidores, /var/log/rsyslog/pero también registra cada mensaje en los servidores /var/log/syslog. Entonces se hincha mucho. ¿Cómo puedo evitarlo para que /var/log/syslogsolo contenga mensajes del propio servidor?

Miguel
fuente
1
Querrá buscar filtros basados en propiedades ya que HOSTNAME es uno de los campos de syslog. Básicamente querrás cambiarlo para que solo seleccione sus propios registros para/var/log/syslog
Bratchley

Respuestas:

2

Esto es lo que funciona para mí:

## 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
& ~
Invitado
fuente
¿Por qué hay una duplicación entre TempAuth y TempMsg?
vdboor
0

He estado trabajando mucho en esto y creo que he encontrado una solución. Animo a otros a probar esto y buscar posibles consecuencias adversas. Sugiero que esto se implemente primero en laboratorio / pruebas y máquinas no críticas.

$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

Las 4 líneas anteriores se encuentran en la sección superior de mi archivo /etc/rsyslog.conf

Actualmente estoy viendo 2 archivos de registro:
/var/log/net-hosts/10.1.1.1
y / var / log / syslog

mientras veo ambos, veo registros llenarse en el archivo de host remoto, pero no en el syslog . Reinicié Apache y vi entradas de registro en syslog para esta tarea.

parsecpython
fuente
Gracias por probar Pero no me funciona. Todavía registra todo en los servidores / var / log / syslog
Michael
0

Debe asegurarse de que sus nuevas reglas se evalúen antes que la que se registra en / var / log / syslog.
Por ejemplo, en Ubuntu Trusty (rsyslog 7.4.4) /etc/rsyslog.conf contiene,
$IncludeConfig /etc/rsyslog.d/*.conf
por lo que se cargan las reglas predeterminadas /etc/rsyslog.d/50-default.conf, incluida la de / var / log / syslog.

En este caso, puede agregar un nuevo archivo para cargar antes de ese, como 00-remote.conf. Para completar, aquí está su contenido para un sistema que estoy administrando:

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