[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Generación dinámica de archivo de log con rsyslog



2014-05-08 17:19 GMT+00:00 Mauro Antivero <mauro.antivero@gmail.com>:
> Estimados, estoy tratando de hacer que rsyslog me escriba determinados logs
> en distintos directorios según la fecha. El siguiente es un ejemplo que
> funciona, pero no hace lo que quiero (osea, en este caso se guarda todo en
> un mismo archivo en /var/log/rsyslog/rsyslog.log):
>
> ruleset(name="remote"){
>     if $fromhost-ip == '192.168.0.5' then {
>         action(type="omfile" file="/var/log/rsyslog/syslog.log")
>         stop
>         }
>
> Y lo que quiero en realidad es algo de este tipo:
>
> ruleset(name="remote"){
>     if $fromhost-ip == '192.168.0.5' then {
>         action(type="omfile" file="/var/log/rsyslog/año/mes/día/syslog.log")
>         stop
>         }
>
> Pero no logro hacerlo andar. Intenté con las propiedades, pero no he podido.
> Usando el formato de sintaxis viejo si he podido, pero no es aconsejable
> usar dicha sintaxis. Lo que si funciona es lo siguiente:
>
> template(name="CustomFormat_Hosts" type="string"
> String="%$year%-%$month%-%$day% %$hour%:%$minute% %hostname% %syslogtag%
> %msg%\n")
>
> ruleset(name="remote"){
>     if $fromhost-ip == '192.168.0.5' then {
>         ?CMTS;CustomFormat_Hosts
>         stop
>         }
>
> En este caso como ven uso las propiedades pero en el string generado con el
> template. Luego en la regla configuro que todos los mensajes de log que
> vengan del host 192.168.0.5 sean guardados en una estructura como la que yo
> deseo.

Bueno, el tema documentación en rsyslog solo tiene un calificativo:
desastroso. Pero, es superable :)). A ver, de entrada está mezclando
sintaxis antigua con sintaxis nueva.

De entrada, ¿que versión rsyslog estás utilizando? Por solo tienes dos opciones:

a) Configurar todo con sintaxis antigua.
b) Configurar todo con sintaxis nueva.

Ahora mismo lo has mezclado todo. Yo nunca he tratado de hacer lo que
estás intentando (básicamente porque sería infumable gestionar en
archivos planos el alto volumen de logs que debo gestionar), pero te
pongo un ejemplo de como utilizar los templates en sintaxis nueva
(versiones 6.x en adelante):


#### Templates definitions ####

$template idp01_rfc5424fmt,"suricata idp01 %fromhost-ip% %msg%\n"


if $syslogtag == 'idp01' then {
        action(type="omfwd" protocol="tcp" target="172.17.22.1"
port="10514" template="suricata01_rfc5424fmt"
                queue.filename="suricata01fwd"
                queue.maxdiskspace="10g"
                queue.saveonshutdown="on"
                queue.type="linkedlist"
                queue.maxfilesize="5m"
                action.resumeretrycount="-1")
        stop
}

Como ves, la forma de utilizar el template difiere mucho de como la
has configurado. Prueba a ajustarla. Creo que la definición del propio
template es correcta. Por cierto, ¿estás seguro que quieres crear
directorios de hora y minuto?. Yo no lo haría porque dependiendo del
volumen, ya puedes tener un disco muy muy rápido en escritura. Piensa
que rsyslog está pensado para trabajar con +100K EPS ... O sea que
puede llevar a tu disco de cabeza :))

Saludos.


Reply to: