IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

http://xmodulo.com/open-source-log-monitoring-tools-linux.html

Linux Professional Institute Certificate. LPIC-1

Lpic1 large.gif
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

Objectius del tema

108.2. Bitàcoles del sistema
Objective.jpg
060317 Icon - Theory of Knowledge v01 pdc.jpg

Àrees Clau de Coneixement:

Icon list.jpg

La següent és una llista parcial de fitxers, termes i utilitats utilitzades:

Text-editor.svg

Apunts: LPI 108.2. Bitàcoles del sistema

Plantilla per prendre apunts

syslog

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.

Instal·lació

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
...

Fitxers

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

Configuració

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:

  • Facility: és una paraula clau que identifica el tipus de programa o eina que ha generat el missatge de log. Valors possibles:
  • authpriv o auth o security: Utilitzat per les aplicacions que gestionen les autoritzacions del sistema (PAM, login, su, sudo, etc...). Auth i security són obsoletes (deprecated), és a dir, en futures versions es pot deixar d'utilitzar i per tant no és recomanable utilitzar-lo.
  • cron: Utilitzat per eines de gestió automàtica de tasques com cron o anacron
  • daemon: Calaix de sastre. Els servidors que no entren en cap altre facility sovint utilitzen daemon.
  • kern: Missatges del nucli. Vegeu també ksylogd i dmesg.
  • lpr: Missatges relacionats amb la gestió de la impressió al sistema. Consulteu CUPS
  • mail: Servidors de correu i eines de processament de correu. Consulteu LPI 108.3. Mail Tranfer Agent (MTA). Conceptes bàsics
  • mark: Reservat per a l'ús intern de syslog.
  • news: Eines com servidors de notícies.
  • syslog: Missatges generats de forma interna per syslog
  • user: El poden utilitzar les aplicacions d'usuari del sistema per a missatges a mida.
  • uucp: Subsistema UUCP (Unix-Unix copy).
  • local0 a local7: Reservat per a usos específics.
  • Priority: Indica la importància del missatge. Valors possibles (ordenats de menys a més importància):
  • debug: Mostra la màxima informació possible i només s'utilitza quan s'està provant una aplicació. No és recomanable activar-ho en un sistema en explotació ja que pot afectar al rendiment del sistema.
  • info: Missatges d'informació.
  • notice: Són missatges que no són necessàriament errors però que s'haurien de tenir en compte.
  • warning o warn: Avisos importants que tot i no ser errors poden tenir algun tipus de repercusió . warn encara s'accepta però és obsolet.
  • error o err: Missatges d'error . err és Deprecated.
  • crit: Missatges d'error importants com errors de maquinari.
  • alert: Missatges crítics d'error que s'haurien de solucionar immediatament
  • emerg o panic: Missatges molts greus que normalment impliquen que la màquina deixarà de funcionar immediatament o ja ha deixat de funcionar. Mostra els missatges més importants que són els missatges relacionats amb errors molt greus. Pànic encara s'accepta però és obsolet.
  • action: és un fitxer o màquina remota

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:

  • messages
  • ...

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

Enviar missatges de log de forma manual

Consulteu logger.

Rotar logs

Consulteu logrotate.

Enviar els fitxers de log a un servidor remot

Configuració del client

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

Configuració del servidor

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 

per a UDP o per a TCP:

# 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:

Syslog tradicional

Mandrake/Mandriva.

A /etc/sysconfig/syslog cal posar

SYSLOGD_OPTIONS="-r -m 0" 

Consultar les bitàcoles del sistema

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:

  • Paginadors com more o less,
  • grep per a filtra missatges de fitxers de log o buscar text a tots els fitxers de log.
  • Mostrar l'inici i el final dels fitxers amb eines com head o tail.
  • Eines de monitorització com logcheck o swatch

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).

tail

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

Monitorització de fitxers de log

logcheck

É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:

  • Paranoid: Només recomanable per a servidors amb (pocs) serveis crítics on la seguretat és molt important.
  • Server: Opció de nivell mig. És l'opció per defecte i la recomanada en servidors.
  • Estació de treball: L'opció que mostra menys missatges. És l'opció recomanada en estacions de treball.

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

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:

Nagios

Consulteu Nagios.

Aplicacions gràfiques

gnome-system-log

El trobareu a Sistema -> Administració -> Visualitzador de registres. També el podeu executar directament amb:

$ gksu gnome-system-log

Paquets

rsyslog

É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

rsyslog-doc

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


Fitxers de configuració

syslog.conf

Consulteu LPI_108.2._Bitàcoles_del_sistema#Configuraci.C3.B3

rsyslog.conf

Consulteu LPI_108.2._Bitàcoles_del_sistema#Configuraci.C3.B3

Altres aplicacions de registre de sistema

syslog-ng

TODO

metalog

TODO

Ordres

syslogd

És el dimoni que executa syslog. Consulteu syslog.

klogd

Treballa conjuntament amb syslog i s'utilitza per gestionar els missatges de log del nucli del sistema operatiu.

logger

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:

  • -i: Mostra el PID al fitxer de log.
  • -s: Permet que els missatges es mostrin al fitxer de log i també a les sortides estàndard.
  • -d: El missatge s'envia per datagrames i no pas per una connexió en streaming.
  • f (file): Permet enviar tot un fitxer al log.
  • -p (priority): Permet indicar la prioritat del missatge,cal indicar-la com un selector (facility.priority). La prioritat per defecte és user.notice.
  • -t (tag): Permet indicar un tag extra.
  • -u: Es pot utilitzar un socket per tal d'enviar les dades al fitxer de log.
  • message: El missatge a mostrar.

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:

logrotate

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:

  • Crear un nou fitxer
  • Desplaçar tots els anteriors
  • Esborrar els més antic dels antics fitxers de log
  • Comprimir els fitxers més antics.

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:

  • rotate: és el nombre de fitxers a mantenir
  • compress: Es comprimeixen els fitxers antics (per defecte a partir del .2)
  • missingok: Si falta el primer fitxer s'utilitza el segon.

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

Altres sistemes operatius

AirOS

routerOS

Vegeu també

Enllaços externs