http://xmodulo.com/open-source-log-monitoring-tools-linux.html
Certificat | LPIC-1 |
Examen: | 102 (torneu a la resta de temes) |
Fitxers: | LPI108.2_BitacolesDelSistema.pdf (LPI108.2_BitacolesDelSistema.odp) |
Objectius: | http://www.lpi.org/eng/certification/the_lpic_program/lpic_1/exam_102_detailed_objectives |
Dipòsit SVN: | https://svn.projectes.lafarga.cat/svn/lpi/Materials/Examen_102/108.2 |
Usuari: | anonymous |
Paraula de pas: | qualsevol paraula de pas |
108.2. Bitàcoles del sistema | |
---|---|
![]() |
|
![]() |
Àrees Clau de Coneixement: |
![]() |
La següent és una llista parcial de fitxers, termes i utilitats utilitzades: |
![]() |
Apunts: LPI 108.2. Bitàcoles del sistema |
Linux manté les bitàcoles (aka fitxers de log o de fitxers de registre o registre del sistema) que enregistren detalls claus sobre les operacions que es realitzen al sistema. El dimoni encarregat de gestionar els registres del sistema és syslogd (syslog daemon).
NOTA: Cal tenir en compte que algunes aplicacions poden tenir el seu propi sistema de log i per tant, no utilitzen syslog. Per posar un exemple Tomcat, té els seus propis fitxers de log com per exemple el catalina.out. També heu de saber que hi altres dimonis com syslog-ng o metalog
Amb syslog tant podem gestionar els registres del sistema local com podem configurar un servidor de log on les màquines d'una xarxa puguin centralitzar els seus fitxers de log.
Una de les tasques més importants de la gestió i manteniment de fitxers de registre és la capacitat de poder "rotar" les bitàcoles de forma que no consumeixin recursos del sistema en excés. L'operació de rotar un fitxer el que fa és que un cop un fitxer de log té una mida màxima (en número de línies o en bytes del fitxers), aquest fitxer s'elimina i es torna a començar o es fa una còpia del fitxer (normalment s'afegeix una extensió numèrica). Sovint també es comprimeixen els fitxers de log més antics i es realitzen operacions de neteja eliminant els fitxers de log més antics.
L'eina que s'encarrega de rotar fitxers és logrotate.
La majoria de sistemes Linux utilitzen el dimoni syslog per tal de gestionar el manteniments i ús dels logs del sistema d'una forma unificada.
NOTA: Algunes distribucions Linux com Ubuntu o Fedora ja fa cert temps (--acacha 08:52, 24 abr 2010 (UTC)) que utilitzen rsyslog
Per exemple a una Ubuntu 9.10:
$ dpkg -l | grep syslog ii rsyslog 4.2.0-2ubuntu5.1 enhanced multi-threaded syslogd
Els objectius de LPI però tracten sobre l'eina syslog tradicional. Cal indicar però que la base de totes dues eines és la mateixa i que el que s'arriba a explicar a quests articles es pot aplicar a totes dues eines.
Sovint syslog va unit a klogd que s'encarrega del logging dels missatges del nucli del sistema.
Poques vegades us trobareu un sistema on calgui instal·lar syslog a no ser que sigui un sistema molt primari (per exemple un sistema muntat amb debootstrap). En tot cas el paquet s'anomena syslogd:
$ sudo apt-get install syslogd
IMPORTANT: A Ubuntu el paquet és rsyslog!:
$ sudo apt-get install rsyslog
És un dels casos en que una instal·lació si ens fixem pot esborrar coses que ja tenim instal·lades per incompatibilitat:
$ sudo apt-get install syslogd S'està llegint la llista de paquets... Fet S'està construint l'arbre de dependències S'està llegint la informació de l'estat... Fet Nota: s'està seleccionant sysklogd en comptes de syslogd S'instal·laran els següents paquets extres: klogd sysklogd Es SUPRIMIRAN els paquets següents: rsyslog ubuntu-minimal ...
Els fitxers de configuració són:
$ dpkg -L rsyslog | grep etc /etc /etc/rsyslog.d /etc/logcheck /etc/logcheck/ignore.d.server /etc/logcheck/ignore.d.server/rsyslog /etc/rsyslog.conf /etc/logrotate.d /etc/logrotate.d/rsyslog /etc/init /etc/init/rsyslog.conf /etc/init/rsyslog-kmsg.conf /etc/init/dmesg.conf /etc/init.d /etc/init.d/rsyslog /etc/init.d/rsyslog-kmsg /etc/init.d/dmesg
La configuració de syslog permet utilitzar un grapat predefinit de fitxers de log a on s'enregistraran la majoria d'esdeveniments del sistema. D'aquesta manera diferents serveis del sistema arriben a utilitzar el mateix fitxer de log. Els fitxers de log es classifiquen per facilities
El fitxer principal de configuració és /etc/rsyslog.conf (si utilitzeu rsyslog) o /etc/syslog.conf (si utilitzeu el syslog tradicional). El format del fitxer és:
facility.priority action
On:
Es poden especificar múltiples facilitats separant-les per comes (,). El conjunt format per una "facility" més una acció (action) s'anomena selector (facility.action) . Un asterisk (*) va referència a totes les facilities.
Es poden fer comentaris dins el fitxer de configuració utilitzant el coixinet (#)
Quan un programa envia un missatge a syslog, el missatge inclou un codi de prioritat i aleshores syslog només guarda el missatge als fitxers de log si la prioritat del missatge enviat és superior o igual al llindar de prioritat mínim amb que configurem syslog. És a dir si indiquem una prioritat de error aleshores es mostraran els missatge amb prioritat:
error (o err) crit alert emerg (o panic)
NOTA: Les úniques excepcions són si utilitzem el símbol igual (=), que indica només mostrar els missatges amb certa prioritat (p. ex. =info només mostra missatges d'informació. Es pot utilitzar l'exclamació (!) per invertir el sentit de la igualtat)
Es poden indicar múltiples selectors (recordeu un selector= facility+action) separant-los per punt i coma (;).
Normalment les accions són nomes de fitxers de log, els quals segons l'estàndard FHS s'ha de guardar a la carpeta /var/log. Els fitxers que podeu trobar en aquesta carpeta difereixen entre distribucions però els més habituals són:
.NOTA: A vegades s'indiquen com a "fitxers" de log dispositius com /dev/console o /dev/xconsole. En aquest cas els missatges es mostren per la pantalla del sistema en consoles virtuals
També es pot enviar un selector a una màquina remota utilitzant el símbol arrova (@)
a list of usernames of individuals who should see the message if they’re logged in ??? For the last of these options, an asterisk (*) means all logged-in users.
Vegem alguns exemples:
mail.* /var/log/mail
Envia tots els missatges relacionats amb correu electrònic i de totes les prioritats al fitxer /var/log/mail. La majoria d'entrades s'assemblen a aquesta.
En canvi:
*.emerg *
Envia tots els missatges crítics a les consoles dels usuaris (consoles virtuals).
El següent exemple:
kern.* /var/log/kernel kern.crit @IP_MAQUINA_REMOTA kern.crit /dev/console
Envia tots els missatges de log del nucli a /var/log/kernel. A més els missatges crítics del nucli s'envien a una màquina_remota (la màquina remota s'ha de configurar per acceptar els missatges). Finalment, els missatges crítics es mostren per les consoles dels usuaris.
A una Ubuntu 9.10 trobareu:
$ cat /etc/rsyslog.conf | grep -v '^#\|^$\|^;' $ModLoad imuxsock # provides support for local system logging $ModLoad imklog # provides kernel logging support (previously done by rklogd) $KLogPath /var/run/rsyslog/kmsg $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $RepeatedMsgReduction on $FileOwner syslog $FileGroup adm $FileCreateMode 0640 $DirCreateMode 0755 $Umask 0022 $PrivDropToUser syslog $PrivDropToGroup syslog $IncludeConfig /etc/rsyslog.d/*.conf
Les primeres línies són configuracions globals. L'última:
$IncludeConfig /etc/rsyslog.d/*.conf
És a dir els fitxers de configuració els trobareu a la carpeta /etc/rsyslog.d/:
$ ls -la /etc/rsyslog.d total 24 drwxr-xr-x 2 root root 4096 2010-02-12 15:48 . drwxr-xr-x 177 root root 12288 2010-04-24 08:59 .. -rw-r--r-- 1 root root 1605 2009-10-15 06:27 50-default.conf -rw-r--r-- 1 root root 242 2009-09-22 15:52 postfix.conf
La configuració per defecte la trobareu a:
$ cat /etc/rsyslog.d/50-default.conf | grep -v '^#\|^$\|^;' auth,authpriv.* /var/log/auth.log *.*;auth,authpriv.none -/var/log/syslog 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 mail.info -/var/log/mail.info mail.warn -/var/log/mail.warn mail.err /var/log/mail.err news.crit /var/log/news/news.crit news.err /var/log/news/news.err news.notice -/var/log/news/news.notice *.=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 *.emerg * daemon.*;mail.*;\ news.err;\ *.=debug;*.=info;\ *.=notice;*.=warn |/dev/xconsole
Amb aquest sistema altres aplicacions (a l'exemple postfix) poden configurar rsyslog sense haver de modificar el fitxer principal de configuració.
NOTA: Tingueu en compte que cada aplicació tindrà el seu propi sistema per indicar quins missatges de log enviarà a syslog
Consulteu logger.
Consulteu logrotate.
Al client cal modificar el fitxer /etc/syslog.conf (o /etc/rsyslog.conf si utilitzeu rsyslog)
*.info @syslog.iesebre.com
Això indica que tots els missatges amb prioritat info o superior s'enviaran al servidor de log.
També cal tornar a iniciar syslog a la màquina client.
NOTA: Tingueu en compte qualsevol configuració de tallafocs que tingueu i que aquesta no us tanqui el port 514
Per defecte les eines de syslog com el syslog clàssic o rsyslog són capaces de rebre els missatges d'altres aplicacions en local utilitzant sockets Unix. També és possible activar un port al servidor de log per tal de rebre peticions remotes. El port és el 514:
$ cat /etc/services | grep syslog syslog 514/udp
Aleshores un client pot utilitzar el servidor de log per tal d'enregistras els seus esdeveniments de sistema. La comunicació entre client i servidor és fa amb TCP/UDP/IP.
NOTA: Cal tenir en compte que al cap hi ha la fi el que estem fent es comunicant dos processos (client que fa el log i servidor de log) entre ells. Per tant estem davant d'un cas d'IPC (Inter Process Communication, tant els sockets Unix com els sockets de xarxa són mètodes IPC)
Tal com mostra la següent ordre:
$ ps aux | grep syslog ... syslog 784 0.0 0.0 34328 1796 ? Sl 08:59 0:00 rsyslogd -c4
També ho podeu comprovar amb:
$ sudo /etc/init.d/rsyslog status Rather than invoking init scripts through /etc/init.d, use the service(8) utility, e.g. service rsyslog status Since the script you are attempting to invoke has been converted to an Upstart job, you may also use the status(8) utility, e.g. status rsyslog rsyslog start/running, process 784
Com utilitza upstart també podeu utilitzar:
$ sudo service rsyslog status rsyslog start/running, process 784
rsyslog és un dimoni o servei que s'executa en segon terme i de forma continuada, però que sigui un dimoni no vol dir que accepti peticions remotes (només escolta peticions a través de sockets Unix). Podeu comprovar que el port no està obert amb:
$ sudo nmap -sU -p 514 localhost Starting Nmap 5.00 ( http://nmap.org ) at 2010-04-24 17:35 CEST Warning: Hostname localhost resolves to 2 IPs. Using 127.0.0.1. Interesting ports on localhost (127.0.0.1): PORT STATE SERVICE 514/udp closed syslog Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds
Per tal d'activar les escoltes remotes cal descomentar les següents línies al fitxer /etc/rsyslog.conf:
# provides UDP syslog reception $ModLoad imudp $UDPServerRun 514
# provides TCP syslog reception $ModLoad imtcp $InputTCPServerRun 514
Ara cal aplicar els canvis al servidor:
$ sudo /etc/init.d/rsyslog restart Rather than invoking init scripts through /etc/init.d, use the service(8) utility, e.g. service rsyslog reload Since the script you are attempting to invoke has been converted to an Upstart job, you may also use the reload(8) utility, e.g. reload rsyslog
Com utilitza upstart cal:
$ sudo reload rsyslog
NOTA: Sembla que hi ha algun error amb reload ja que ha estat necessari aturar i tornar a encendre el servidor
Per comprovar que funciona:
$ sudo nmap -p 514 -sU localhost Starting Nmap 5.00 ( http://nmap.org ) at 2010-04-24 17:40 CEST Warning: Hostname localhost resolves to 2 IPs. Using 127.0.0.1. Interesting ports on localhost (127.0.0.1): PORT STATE SERVICE 514/udp open|filtered syslog
NOTA: Amb syslog tradicional syslog no és un servidor per defecte i s'ha d'executar amb l'opció -r i indicar la configuració a /etc/syslog.conf
Recursos:
Mandrake/Mandriva.
A /etc/sysconfig/syslog cal posar
SYSLOGD_OPTIONS="-r -m 0"
Les bitàcoles del sistema no serveixen de gaire si simplement es van acumulant al sistema i no es consulten mai. L'objectiu dels fitxer de log és identificar problemes durant l'execució de programes i són una font important per a la resol·lució de problemes (troubleshooting).
Algunes de les aplicacions que us poden ajudar a llegir fitxers de log:
grep eth0 /var/log/* locates all
El format típic és:
Apr 24 13:25:01 BSFHPCasa CRON[15124]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi) Apr 24 13:25:01 BSFHPCasa CRON[15125]: (root) CMD (if [ -x /etc/munin/plugins/apt_all ]; then /etc/munin/plugins/apt_all update 7200 12 >/dev/null; elif [ -x /etc/munin /plugins/apt ]; then /etc/munin/plugins/apt update 7200 12 >/dev/null; fi)
El primer que trobeu és una marca de temps (timestamp) de quan a succeït l'esdeveniment (per exemple: Apr 24 13:25:01 ). Consulteu l'ordre date i epoch per veure com podeu modificar les marques de temps entre diferents formats.
Després s'indica la maquina (a l'exemple BSFHPCasa) on ha succeït l'esdeveniment (recordeu que és possible rebre missatges de log d'altres màquines). Després s'indica l'aplicació que ha fet l'entrada i entre claudàtors s'indica el PID del procés que ha generat l'entrada al sistema.
Més endavant entre parèntesis teniu l'usuari que executava l'aplicació (munin, root) i finalment el contingut del missatge.
L'exemple mostra dues tasques periòdiques de cron creades per l'eina Munin.
Cal tenir en compte que si teniu una entrada no autoritzada al sistema és mol possible que l'atacant intenti esborrar les seves passes editant els fitxers de log. Si observeu que teniu fitxer de log amb "forats" (espais de temps sense entrades), això pot identificar una possible entrada no autoritzada al sistema (o algun altre problema).
L'ordre tail (tail en anglès vol dir cua) ens permet consultar el final un fitxer. S'utilitza per consultar les últimes entrades de les bitàcoles:
$ sudo tail /var/log/syslog ... Apr 24 09:17:15 BSFHPCasa postfix/qmgr[2250]: BE5F7408E3: removed Apr 24 09:20:01 BSFHPCasa CRON[4692]: (root) CMD (if [ -x /etc/munin/plugins/apt_all ]; then /etc/munin/plugins/apt_all update 7200 12 >/dev/null; elif [ -x /etc/munin /plugins/apt ]; then /etc/munin/plugins/apt update 7200 12 >/dev/null; fi ) Apr 24 09:20:01 BSFHPCasa CRON[4693]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
NOTA: Fixeu-vos en lús de sudo. En alguns sistemes els fitxers de log només són consultables per usuaris amb els permisos adequats.
Normalment s'utilitza l'opció -f (following) per tal de consultar en temps real i de forma continuada les últimes entrades del fitxer de log:
$ sudo tail -f /var/log/syslog
Si no teniu suficient amb veure les últimes 10 línies, podeu indicar més línies amb l'opció --line-numbers=n.
Així mateix en alguns casos també ens pot ser útils l'ordre head per tal de consultar el principi d'un fitxer
NOTA: L'ordre head té paràmetres molt similars a tail
És una aplicació que permet monitoritzar les bitàcoles del sistema.
El podeu instal·lar amb:
$ sudo apt-get install logcheck
Un cop instal·lar se li ha de dir quins fitxers voleu monitoritzar:
$ sudo joe /etc/logcheck/logcheck.logfiles # these files will be checked by logcheck # This has been tuned towards a default syslog install /var/log/syslog /var/log/auth.log
Funciona executant tasques períodiques amb cron:
$ sudo dpkg -L logcheck | grep cron /etc/cron.d /etc/cron.d/logcheck
S'executa cada dos minuts:
$ cat /etc/cron.d/logcheck # /etc/cron.d/logcheck: crontab entries for the logcheck package PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root @reboot logcheck if [ -x /usr/sbin/logcheck ]; then nice -n10 /usr/sbin/logcheck -R; fi 2 * * * * logcheck if [ -x /usr/sbin/logcheck ]; then nice -n10 /usr/sbin/logcheck; fi # EOF
L'executable és:
$ sudo dpkg -L logcheck | grep bin /usr/sbin /usr/sbin/logcheck
I els fitxers de configuració són:
$ sudo dpkg -L logcheck | grep etc ... /etc/logcheck/ignore.d.paranoid /etc/logcheck/ignore.d.workstation /etc/logcheck/ignore.d.server /etc/logcheck/cracking.d /etc/logcheck/cracking.ignore.d /etc/logcheck/violations.d /etc/logcheck/violations.ignore.d /etc/logcheck/logcheck.logfiles /etc/logcheck/logcheck.conf
El fitxer principal de configuració és:
/etc/logcheck/logcheck.conf
La majoria de línies són comentaris o línies en blanc, si les eliminem amb grep:
$ sudo cat /etc/logcheck/logcheck.conf | grep -v '^#\|^$\|^;' REPORTLEVEL="server" SENDMAILTO="logcheck" MAILASATTACH=0 FQDN=1 TMP="/tmp"
Hi ha tres nivells a l'hora de definir la quantitat de missatges que informarà l'eina:
Com podeu veure els missatges s'envien per correu al l'usuari logcheck. Podeu llegir el correu amb l'ordre mail:
$ sudo mail -u logcheck
Recursos:
Swatch (Simple WATCHer) és una aplicació escrita en Perl que monitoritza els fitxers de log i realitza alguna acció segons uns criteris que pot definir l'administrador del sistema.
Per exemple imagineu-vos que volem alertar a l'administrador (a l'exemple l'usuari sergi) del sistema de possibles intents incorrecte d'entrar al sistema per SSH amb el seu compte d'usuari:
$ tail -f /var/log/auth.log Apr 24 09:58:46 baywatcher sshd[17812]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.0.46 user=sergi Apr 24 09:58:48 baywatcher sshd[17812]: Failed password for sergi from 192.168.0.46 port 57128 ssh2
Creeu un fitxer on definirem les condicions:
$ sudo -s # cd # joe swatch.conf
watchfor /Failed password for sergi/ echo bold bell 3 mail
Si troba la línia aleshores mostrarà un missatge per la terminal en negreta i farà sonar el beep del sistema 3 cops i enviarà un correu a l'usuari que executa swatch. Per buscar línies :
# swatch --config-file=swatch.conf --examine=/var/log/auth.log
Per activar-lo:
# swatch --config-file=swatch.conf --tail-file=/var/log/auth.log
NOTA: Fixeu-vos que no se us proporciona cap dimoni ni servei permanent. A [1] podeu trobar un exemple de com crear el dimoni
Consulteu també el manual:
$ man swatch
Recursos:
Consulteu Nagios.
El trobareu a Sistema -> Administració -> Visualitzador de registres. També el podeu executar directament amb:
$ gksu gnome-system-log
És el paquet que substitueix al syslog clàssic a distribucions com Ubuntu o Fedora. Segons la definició del paquet:
$ apt-cache show rsyslog Description: enhanced multi-threaded syslogd Rsyslog is an enhanced syslogd supporting, amongst others: * reliable syslog over TCP and SSL/TLS * on-demand disk buffering * email alerting * writing to MySQL or PostgreSQL databases (via separate output plugins) * permitted sender lists * filtering on any part of the syslog message * on-the-wire message compression * fine grained output format control * backup log destinations
Conté la documentació de rsyslog. Trobareu la documentació a:
/usr/share/doc/rsyslog-doc
Hi ha documentació en format web:
$ firefox /usr/share/doc/rsyslog-doc/html/index.html
I un fitxer amb exemples a:
/usr/share/doc/rsyslog-doc/examples/sample.conf
Consulteu LPI_108.2._Bitàcoles_del_sistema#Configuraci.C3.B3
Consulteu LPI_108.2._Bitàcoles_del_sistema#Configuraci.C3.B3
TODO
TODO
És el dimoni que executa syslog. Consulteu syslog.
Treballa conjuntament amb syslog i s'utilitza per gestionar els missatges de log del nucli del sistema operatiu.
La majoria de missatges de log són generats de forma automàtica per servies i dimonis del sistema (tots els llenguatges de programació tenen llibreries que faciliten les tasques de logging). Amb l'eina logger podeu enviar un missatge de forma manual. La sintaxi és:
logger [-isd] [-f file] [-p pri] [-t tag] [-u socket] [message ...]
On:
Si no s'indica el missatge s'espera de l'entrada estàndard, per aturar a una nova línia cal prémer Ctrl+D.
Per exemple:
$ logger Aturant el sistema
$ sudo tail -f /var/log/messages ... Apr 24 13:47:08 BSFHPCasa sergi: Aturant el sistema
o el que és el mateix:
$ logger Aturant el sistema <-- Ctrl-D
O un exemple més complet:
$ sudo logger -i -s -p user.notice -t TAG Aturant el sistema
$ sudo tail -f /var/log/messages ... Apr 24 13:54:41 BSFHPCasa TAG[16431]: Aturant el sistema
Consulteu també el manual:
$ man logger
Recursos:
NOTA: Consulteu també Creació_de_paquets_Debian#dh_installlogrotate
És el sistema que s'encarrega de gestionar durant quan temps i de quina manera emmagatzemem els fitxers de log del sistema.
Cal tenir en compte que syslog no ofereix cap control sobre la mida dels fitxers de log. Aquí es quan interbé el paquet logrotate que segurament ja teniu instal·lat al vostre sistema:
$ dpkg -l | grep rotate ii logrotate 3.7.8-4ubuntu1 Log rotation utility
Si no fos per log rotate els fitxers de lo podrien créixer de forma descontrolada fins al punt d'acabar-se tota la memòria disponible del sistema.
Si observeu:
$ ls -lah /var/log/syslog* -rw-r----- 1 syslog adm 31K 2010-04-24 14:00 /var/log/syslog -rw-r----- 1 syslog adm 259K 2010-04-24 09:09 /var/log/syslog.1 -rw-r----- 1 syslog adm 23K 2010-04-23 07:38 /var/log/syslog.2.gz -rw-r----- 1 syslog adm 21K 2010-04-21 05:33 /var/log/syslog.3.gz -rw-r----- 1 syslog adm 23K 2010-04-20 11:29 /var/log/syslog.4.gz -rw-r----- 1 syslog adm 5,6K 2010-04-19 07:57 /var/log/syslog.5.gz -rw-r----- 1 syslog adm 25K 2010-04-18 06:55 /var/log/syslog.6.gz -rw-r----- 1 syslog adm 22K 2010-04-17 06:29 /var/log/syslog.7.gz
Vegeu com el fitxer de log més recent (segons la data) és /var/log/syslog. El següent fitxer és /var/log/syslog.1 que si...:
$ head --lines=1 /var/log/syslog.1 Apr 23 07:38:48 BSFHPCasa rsyslogd: [origin software="rsyslogd" swVersion="4.2.0" x-pid="1223" x-info="http://www.rsyslog.com"] rsyslogd was HUPed, type 'lightweight'.
$ tail --lines=1 /var/log/syslog.1 Apr 24 09:09:16 BSFHPCasa postfix/qmgr[2250]: F001342FB3: removed
...que inclou la informació del fitxer de log des del 23 d'abril a les 07:38 al 24 d'abril a les 09:09. La resta de fitxers contenen entrades enca mes antigues i estan comprimides amb gzip.
Per tal que això funcioni cal:
Si observeu els fitxer instal·lats per logrotate:
$ dpkg -L logrotate ... /usr/sbin/logrotate ... /usr/share/man/man8/logrotate.8.gz ... /usr/share/doc ... /var/lib/logrotate /etc /etc/logrotate.d /etc/logrotate.conf /etc/cron.daily /etc/cron.daily/logrotate
Veureu que les tasques de rotar fitxers es realitzen de forma periòdica cada dia segons el fitxer /etc/cron.daily/logrotate. Fitxeu-vos que s'utilitza anacron i per tant els fitxers es roten com a mínim un com al dia (si la màquina està encesa) i si fa més de un dia que no es rota (màquines que no estan enceses permanentment) aleshores es força una rotació. Segons cron:
$ cat /etc/crontab # m h dom mon dow user command ... 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) ...
Cada dia la rotació es fa a les 6:25 o al iniciar la màquina si fa més d'un dia que no es rota i a les 6:25 no estava encès el sistema.
El que s'executa ho trobareu a:
/etc/cron.daily/logrotate
El fitxer principal de configuració és:
$ cat /etc/logrotate.conf # see "man logrotate" for details # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # uncomment this if you want your log files compressed #compress # packages drop log rotation information into this directory include /etc/logrotate.d # no packages own wtmp, or btmp -- we'll rotate them here /var/log/wtmp { missingok monthly create 0664 root utmp rotate 1 } /var/log/btmp { missingok monthly create 0660 root utmp rotate 1 } # system-specific logs may be configured here
El fitxer s'entén força bé per si mateix i més encara amb les explicacions que trobem als comentaris del fitxer. Al principi hi ha les configuracions globals i després s'indiquen configuracions especifiques per als fitxers /var/log/wtmp i /var/log/btmp. Es pot editar el fitxer directament però no és recomanable.
Es poden fer configuracions a mida a la carpeta:
$ ls /etc/logrotate.d/ apache2 consolekit munin-node speech-dispatcher apport cups mysql-server squid3 apt dpkg pm-utils unattended-upgrades aptitude jockey-common ppp winbind checkbox kdm rsyslog wpa_action clamav-freshclam munin samba wpa_supplicant
Com vegeu les aplicacions si volen rotar a mida ho indiquen instal·lant un fitxer de configuració en aquesta carpeta. El fitxer que realment indica les rotacions per defecte a ubuntu 9.10 és:
$ cat /etc/logrotate.d/rsyslog /var/log/syslog { rotate 7 daily missingok notifempty delaycompress compress postrotate reload rsyslog >/dev/null 2>&1 || true endscript } /var/log/mail.info /var/log/mail.warn /var/log/mail.err /var/log/mail.log /var/log/daemon.log /var/log/kern.log /var/log/auth.log /var/log/user.log /var/log/lpr.log /var/log/cron.log /var/log/debug /var/log/messages { rotate 4 weekly missingok notifempty compress delaycompress sharedscripts postrotate reload rsyslog >/dev/null 2>&1 || true endscript }
On:
La compressió de fitxers de log es fa per defecte amb gzip, es pot canviar amb l'opció compresscmd.
Els fitxers es poden rotar per data o per mida del fitxer de log.
Podeu provar només una rotació especifica amb:
$ sudo su # sh # /usr/sbin/logrotate -v /etc/logrotate.d/GoogleAppsDirSync
On el fitxer /etc/logrotate.d/GoogleAppsDirSync és un exemple de fitxer de rotate per a un fitxer de log específic (vegeu l'aplicació GADS):
/home/sergi/GoogleAppsDirSync/sync_ins_ebre_ldap100.log { daily missingok rotate 7 compress copytruncate notifempty create 640 sergi sergi }
O fins i tot forçar la rotació:
# /usr/sbin/logrotate -f -v /etc/logrotate.d/GoogleAppsDirSync
O podeu provar tot logrotate amb:
$ /usr/sbin/logrotate -v /etc/logrotate.conf
Per a més informació podeu consultar:
$ man logrotate