domingo, 1 de mayo de 2011

FreeBSD: newsyslog

Bien el mundo BSD tiene un programa para rotar sus logs de nombre:newsyslog.

Cada que instalamos por ejemplo a FreeBSD se instala en /etc ya que es una aplicacion base, y nos da una configuracion como esta:

/var/log/all.log 600 7 * @T00 J
/var/log/amd.log 644 7 100 * J
/var/log/auth.log 600 7 100 * JC
/var/log/console.log 600 5 100 * J
/var/log/cron 600 3 100 * JC
/var/log/daily.log 640 7 * @T00 JN
/var/log/debug.log 600 7 100 * JC
/var/log/kerberos.log 600 7 100 * J
/var/log/lpd-errs 644 7 100 * JC
/var/log/maillog 640 7 * @T00 JC
/var/log/messages 644 5 100 * JC
/var/log/monthly.log 640 12 * $M1D0 JN
/var/log/pflog 600 3 100 * JB /var/run/pflogd.pid
/var/log/ppp.log root:network 640 3 100 * JC
/var/log/security 600 10 100 * JC
/var/log/sendmail.st 640 10 * 168 B
/var/log/weekly.log 640 5 1 $W6D0 JN
/var/log/wtmp 644 3 * @01T05 B
/var/log/xferlog 600 7 100 * JC

Si ustedes revisan algunos parametros han cambiado para mi, pero algunos continuan igual.
Lo que deseo es agregar dos ya que el programa no instala ningun script que rote sus logs, por ejemplo clamavis.

Por ello agrego lo siguiente:

/var/log/clamav/freshclam.log clamav:clamav 640 10 * @T00 J
/var/log/clamav/clamd.log clamav:clamav 640 10 * @T00 J

El man page de newsyslog.conf dice lo siguiente:

logfile name owner:group mode count size when flag

Vamos a romperlo:

logfile name--> /var/log/clamav/freshclam.log
owner:group-->clamav:clamav
NOTA:si uno no agrega este parametro se pone por default root:wheel.
mode--> 640
count-->10
size -->*
Nota: cuando colocamos un "*" significa que no importa el tamaño, cuando llegue su momento el sistema lo va a rotar.
when --> T00
Aqui es donde le indicamos a que horas del dia lo va hacer, aqui es a las 12:00AM
flag --> J
Aqui le indicamos por ejemplo si deseamos que cuando lo rote lo comprima J = bzip.

Tenemos 2 maneras de trabajar, cuando le indicamos en el 6to campo un "*", entonces el espera que le indiquemos aque horas lo va hacer, como en mi caso u otra cosa puede ser que le indiquemos que a cierto tamaño el tiene que rotarlo asi:

/var/log/clamav/clamd.log clamav:clamav 640 30 250 * Z

Cada que pase el tamaño de 256Kb el lo va a rotar, ademas va a usar 30 archivos y a cada archivo lo va a comprimir usando gzip, entonces tendremos 30 archivos ejemplo:

clamd.0.bzip
clamd.1.bzip
clamd.2.bzip
clamd.3.bzip
etc...

Ahora, que pasa con el parametro "when" o cuando en español?

Ese parametro esta sabroso, ya que usa el formato "ISO 8601" para el tiempo, segun el man page dice que debe empezar con @:

$D0 rotar cada noche a las 12:00AM igual a @T00.
$D23 Todos los dias a las 23:00PM igual que @T23.
$W0D23 Cada semana en domingo a las 23:00PM. Dia de la semana 0 = domingo.
$W5D16 Rotar cada semana el viernes a las 16:00PM.
$M1D0 El 1er dia de cada mes a las 12:00AM igual a @01T00.
$M5D6 El 5to dia de cada mes a las 06:00AM igual que @05T06.

Entonces ya con esto ustedes podran modificar a su antojo, si no me preguntan, animo.

Solo recordar que cada que modifican a newsylog.conf deben re-iniciarlo.

/etc/rc.d/newsyslog restart.