Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Separar logs con rsyslog por host y por facilities y prioridades

441 views
Skip to first unread message

Mauro Antivero

unread,
May 20, 2014, 8:20:02 AM5/20/14
to
Estimados, gracias a la ayuda que me han dado he avanzado mucho con la
configuraci�n de rsyslog. Ya logro hacer que detecte los mensajes
provenientes de distintos hosts y que los guarde en directorios
separados por fecha y por host y que adem�s el registro (es decir el
texto que se escribe dentro del archivo de log) sea personalizado.
Perfecto hasta ah�.

Ahora lo que me falta es lograr separar los logs, adem�s de por host,
por facilities y prioridades, tal como se hace con los logs locales.
Pues bien, ya entiendo como configurar los logs locales por facilities y
prioridades, pero no me doy cuenta de como tiene que ser la estructura
de configuraci�n de rsyslog.conf para que adem�s de separar por nombre
de host me separe dentro de cada directorio correspondiente a cada host
seg�n las facilities y prioridades.

Pongo a continuaci�n un extracto de como es actualmente mi rsyslog.conf
para que lo vean y si de paso les sirve puedan tomar algo. Trat� de
escribirlo todo usando la nueva sintaxis, pero a lo mejor algo qued� en
el formato viejo (puesto que como ya hablamos ac� en otro hilo la
documentaci�n de que es viejo y que es nuevo en rsyslog es medio
desastrosa). Lo que hace b�sicamente es separa los logs por nombre de
host (salvo para una IP en particular, en cual caso detecto el mensaje
por IP de origen y luego lo guardo en un directorio predefinido) y
escribe un mensaje de log personalizado.

Como ver�n todos los mensajes de un determinado host se guardan dentro
de un solo archivo, "syslog.log". Mi intenci�n como les dec�a es separar
dentro de la
carpeta correspondiente lo que es auth de mail, dhcp, cron, etc., etc.,
tal como sucede con los logs locales.

Ac� va el estracto del archivo (puede tener alg�n error porque lo
modifiqu� ac� en el correo, pero la configuraci�n que tengo es funcional):

/**********************************************************************************************************************************************************************************/

#################
#### M�DULOS ####
#################

# Carga de m�dulos por defecto

Module(load = "imuxsock") # provides support for local system logging
Module(load = "imklog") # provides kernel logging support

# Se carga el m�dulo para recepci�n de logs por UDP y se "ata" al mismo
a la regla "remote", la cual har� que todos los logs remotos se escriban
dentro
# del directorio /var/log/rsyslog

Module(load = "imudp")
Input(type = "imudp" port = "XXX" ruleset = "remote")

###################
#### TEMPLATES ####
###################

# Templates para los directorios

template(name="HOSTS" type="string"
string="/var/log/rsyslog/%$year%/%$month%/%$day%/%hostname%/syslog.log")
template(name="CUSTOM" type="string"
string="/var/log/rsyslog/%$year%/%$month%/%$day%/CUSTOM/syslog.log")

# Templates para personalizar los registros (Fecha, hora, hostname, tag
y mensaje de log propiamente dicho)

template(name="CustomFormat_Hosts" type="string"
String="%$year%-%$month%-%$day% %$hour%:%$minute% %hostname% %syslogtag%
%msg%\n")
template(name="CustomFormat_CUSTOM" type="string"
string="%$year%-%$month%-%$day% %$hour%:%$minute% CUSTOM %syslogtag%
%msg%\n")

#############################
#### DIRECTIVAS GLOBALES ####
#############################

# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.

$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# Set the default permissions for all log files.

$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022

# Where to place spool and state files

$WorkDirectory /var/spool/rsyslog

# Include all config files in /etc/rsyslog.d/

$IncludeConfig /etc/rsyslog.d/*.conf

##################################
#### Reglas para logs remotos ####
##################################

# Se define la regla "remote", la cual se utilizar� para los logs
remotos. Salvo que se trate de una IP en particular
# se separa todo por nombre de host

ruleset(name="remote"){
if $fromhost-ip == 'aaa.bbb.ccc.ddd' then{
?CUSTOM;CustomFormat_CUSTOM
stop
}

else{
?HOSTS;CustomFormat_Hosts
stop
}
}

##################################
#### Reglas para logs locales ####
##################################

# First some standard log files. Log by facility.

auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log

# Logging for the mail system. Split it up so that it is easy to write
scripts to parse these files.

mail.info -/var/log/mail.info
mail.warn -/var/log/mail.warn
mail.err /var/log/mail.err

# Logging for INN news system.

news.crit /var/log/news/news.crit
news.err /var/log/news/news.err
news.notice -/var/log/news/news.notice


# Some "catch-all" log files.

*.=debug;\
auth,authpriv.none;\
news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages

# Emergencies are sent to everybody logged in.

*.emerg :omusrmsg:*

# NOTE: adjust the list below, or you'll go crazy if you have a
reasonably busy site..

daemon.*;mail.*;\
news.err;\
*.=debug;*.=info;\
*.=notice;*.=warn |/dev/xconsole

/**********************************************************************************************************************************************************************************/

Espero se entienda lo que quiero lograr. Les agradecer�a mucho su ayuda.

Saludos! Mauro


--
To UNSUBSCRIBE, email to debian-user-s...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listm...@lists.debian.org
Archive: https://lists.debian.org/537B470E...@gmail.com

Camaleón

unread,
May 20, 2014, 11:40:02 AM5/20/14
to
El Tue, 20 May 2014 09:14:06 -0300, Mauro Antivero escribió:

(...)

> Ahora lo que me falta es lograr separar los logs, además de por host,
> por facilities y prioridades, tal como se hace con los logs locales.
> Pues bien, ya entiendo como configurar los logs locales por facilities y
> prioridades, pero no me doy cuenta de como tiene que ser la estructura
> de configuración de rsyslog.conf para que además de separar por nombre
> de host me separe dentro de cada directorio correspondiente a cada host
> según las facilities y prioridades.

(...)

Según la documentación tienes algunas variables que puedes usar como
condición de filtrado:

***
http://www.rsyslog.com/doc/property_replacer.html

syslogfacility
the facility from the message - in numerical form

syslogfacility-text
the facility from the message - in text form

syslogseverity
severity from the message - in numerical form

syslogseverity-text
severity from the message - in text form

syslogpriority
an alias for syslogseverity - included for historical reasons (be
careful: it still is the severity, not PRI!)

syslogpriority-text
an alias for syslogseverity-text
***

Por lo que entiendo que podrás añadir dentro de tu conjunto de reglas
para los equipos remotos algo del tipo:

if $fromhost-ip == 'aaa.bbb.ccc.ddd' and $syslogfacility-text == "local7" then {
?CUSTOM;CustomFormat_CUSTOM;
[...]

Saludos,

--
Camaleón


--
To UNSUBSCRIBE, email to debian-user-s...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listm...@lists.debian.org
Archive: https://lists.debian.org/pan.2014.05...@gmail.com

Mauro Antivero

unread,
May 20, 2014, 1:40:02 PM5/20/14
to
El 20/05/14 12:30, Camaleón escribió:
Justamente estoy haciendo eso y funciona de maravillas (lo logré hacer
al rato de mandar el mensaje a la lista). Ahora se me ocurre que podría
modificar mis templates para que la ruta al archivo de log finalice con
%syslogtag%, de esta manera los logs serían algo similar a dhcpd.log,
named.log, snmp.log, etc., pero tengo que ver si no queda mucho lío.

Voy a probar y sino en todo caso hago un if por cada cosa que me
interese separar.

Saludos y muchísimas gracias!

Mauro.
>
> Saludos,
>


--
To UNSUBSCRIBE, email to debian-user-s...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listm...@lists.debian.org
Archive: https://lists.debian.org/537B92FE...@gmail.com

Mauro Antivero

unread,
May 20, 2014, 2:00:01 PM5/20/14
to
El 20/05/14 14:38, Mauro Antivero escribió:
Corrección, en lugar de usar %syslogtag% uso %programname%, con lo cual
obtengo un resultado más acorde a lo que quiero. Igual lo voy a dejar
unos días probando para ver que tal.

Saludos!

Mauro.
>
> Voy a probar y sino en todo caso hago un if por cada cosa que me
> interese separar.
>
> Saludos y muchísimas gracias!
>
> Mauro.
>>
>> Saludos,
>>
>


--
To UNSUBSCRIBE, email to debian-user-s...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listm...@lists.debian.org
Archive: https://lists.debian.org/537B969D...@gmail.com
0 new messages