El 25/07/16 a las 16:11, Luis Enrique
Araneda escribió:
Encantado, pero mirá, como es un tema muyyyy largo (podés hacer de todo con rsyslog, está genial realmente) te voy a decir lo que para mi fue lo más complicado, y es como guardar los mensajes en directorios separados por fecha y host y luego como definir el formato de mensaje a guardar. Después cualquier otra duda que tengas me podés preguntar. Mirá, lo primero es detectar el host del cual provienen los mensajes y después definir el directorio y el formato del mensaje como vos querés que se guarde. Un ejemplo a continuación: if $fromhost-ip == '172.30.0.50' then{ ?Nodo_PA_AP;CustomFormat_Nodo_PA_AP stop } else{ ?PROGRAMNAME;CustomFormat_PROGRAMNAME stop } Complicado? Para nadamirá: $fromhost-ip == '172.30.0.50' then <--- Obvio, si la IP del host es 172.30.0.50 entonces hago lo que dice a continuación ?Nodo_PA_AP;CustomFormat_Nodo_PA_AP <--- Dividámoslo en dos partes Nodo_PA_AP <--- Template que define el nombre del directorio CustomFormat_Nodo_PA_AP <--- Template que define el formato del mensaje a guardar stop <--- Necesario para "salir" del if y seguir procesando los mensajes según la configuración que siga else <--- Por supuesto, para cualquier otra IP que no sea la especificada ?PROGRAMNAME;CustomFormat_PROGRAMNAME <--- Templates genéricos stop <--- Necesario para "salir" del else Y los templates son los siguientes: template(name="Nodo_PA_AP" type="string" string="/srv/Logs/%$year%/%$month%/%$day%/Nodo_PA/AP430/AP430.log") Donde se van a guardar los logs que vengan de la IP 172.30.0.50 template(name="CustomFormat_Nodo_PA_AP" type="string" string="%$year%-%$month%-%$day% %$hour%:%$minute% %hostname% %syslogtag% %msg%\n") Formato del mensaje guardado en el archivo "AP430.log" template(name="PROGRAMNAME" type="string" string="/srv/Logs/%$year%/%$month%/%$day%/%hostname:1:1:uppercase%%hostname:2:$%/%programname%.log") Donde se van a guardar los logs del resto de los hosts template(name="CustomFormat_PROGRAMNAME" type="string" String="%$year%-%$month%-%$day% %$hour%:%$minute% %hostname:1:1:uppercase%%hostname:2:$% %syslogtag% %msg%\n") Formato del mensaje Parece complicado pero no lo es tanto. Lo que está entre % son lo que se llaman "properties" de rsyslog, que para entenderlas mejor mirate esto (están muy buenas): http://www.rsyslog.com/doc/master/configuration/properties.html Y lo que dice "%hostname:1:1:uppercase%%hostname:2:$%" es el "propierty replacer" aplicado a la propiedad "hostname". Lo que estoy haciendo ahí es poner la primera letra de cada nombre de host en mayúsculas :D, así de simple. Hay muuuuuuucho más para hablar, pero con eso te dije lo que considero más importante. Un detalle, mucho cuidado porque hay dando vueltas muuuuuucha (hoy se me tildó la "u") documentación de la v5.x, la cual posee una sintaxis completamente distinta. De yapa si usás Debian 7 o anteriores la versión por defecto de rsyslog es la 5.x, por lo que tenés que agregar un repositorio e instalar la versión nueva (8.x) desde ahí (es muy simple y en la misma página de rsyslog te dice como). Para que te des una idea del potencial podés hacer que rsyslog escriba directamente en una DB, ideal por ejemplo para un servidor DHCP, ya que también podés "desmembrar" el log DHCP y obtener los OFFER, REQUEST, ACK, etc. e ir guardando todo si hace falta, como verás es muy potente. Espero te sirva, cualquier cosa me preguntás, eso si, si no respondo a la lista avisame por privado, ya que a veces pasan varios días que no puedo ver la lista y no veo los mensajes. Saludos y éxitos! Mauro.
|