Diferencia entre revisiones de «Estado del Sistema»
Línea 270: | Línea 270: | ||
== Referencias == | == Referencias == | ||
− | Créditos: Marcos Rodríguez | + | Créditos: Victor Alem y Marcos Rodríguez |
http://ocw.uoc.edu/informatica-tecnologia-y-multimedia/administracion-avanzada-del-sistema-operativo-gnu-linux/materiales/ | http://ocw.uoc.edu/informatica-tecnologia-y-multimedia/administracion-avanzada-del-sistema-operativo-gnu-linux/materiales/ |
Revisión del 00:13 17 nov 2011
Objetivos
- Obtener información del estado del sistema.
- Configurar un analizador del logs para recibir reportes diarios de estado del sistema.
Software
- "Logwatch": analizador de estado del sistema.
Comandos y Archivos útiles
- Examinar estado del sistema:
Comandos: dmesg, uptime, last
Logs: en /var/log;
principales: messages, kern, syslog, auth.log, user.log, daemon.log, debug;
todos pueden ser importantes según lo que se esté buscando.
Para ver en tiempo real qué está pasando: tail -f /var/log/<nombre archivo de log>, redirige al terminal los mensajes de log, se van viendo a medida que aparecen, Ctrl-C para terminar el tail -f.
- Uso de memoria. Comandos: top, free, vmstat.
Directorios: /proc, /sys; man proc, no hay man para sys.
Log diario automático: paquete logwatch, requiere ajustar en cron la ejecución diaria y la lista de destinatarios (direcciones de correo electrónico de usuarios administradores; requiere un sistema de correo instalado y funcionando, exim).
- El sistema de log:
Sistema anterior: syslogd, configuración en /etc/syslog.conf
Sistema actual: rsyslogd
- rsyslogd - reliable and extended syslogd
- rsyslog.conf - rsyslogd(8) configuration file
Rotación de logs:
Comando: logrotate
Archivos:
- /var/lib/logrotate.status Default state file.
- /etc/logrotate.conf Configuration options.
Procedimiento
Estado del sistema
En el arranque de un sistema GNU/Linux se produce un volcado de información interesante acerca de las caractrística de la máquina, dispositivos, arranque de servicios, etc y se menciona además los problemas que aparecen.
Herramientas para acceder a esta información:
- Comando dmesg: da los mensajes del último arranque del kernel.
- Comando uptime: indica cuanto tiempo hace que el sistema está activo.
- Fichero /var/log/messages: log general del sistema, contiene mensajes del kernel y otros daemons, existen varios archivos de log en /var/log.
- Sistema /proc: pseudo sistema de ficheros (procfs) que utiliza el kernel para almacenar información de procesos y de sistema.
- Sistema /sys: pseudo sistema de ficheros (sysfs), contiene información de los dispositivos y controladores.
Logs del sistema
La mayor parte de los logs, se generan en el directorio /var/log. Algunas aplicaciones pueden cambiar este comportamiento.
Existe un daemon particular del sistema llamado Syslogd. Este daemon se encarga de recibir los mensajes del kernel y de otros daemons de servicios y envía la información al fichero /var/log/messages. Éste es el fichero por defecto, pero es configurable (en el fichero /etc/syslog.conf) para lograr generar otros ficheros con información particular, ya sea diferenciando la fuente o el tipo de log (error, advertencias, etc)
Una herramienta útil es utilizar la opción -f del comando tail para que se vaya desplegando en la teminal las modificaciones que se producen en un fichero. Por ejemplo, si queremos saber que está pasando con el correo podemos utilizar los comandos:
$ tail -f /var/log/mail.info $ tail -f /var/log/mail.err $ tail -f /var/log/mail.warn
Otros comandos relacionados:
Comando last: analiza log de entradas/salidas del sistema de los usuarios. Comando lastlog: última vez que los usuarios han sido vistos en el sistema (/var/log/lastlog). Comando logwatch.
Memoria
Para examinar la información sobre memoria veremos varios métodos y comandos útiles:
Fichero /etc/fstab: aparece la partición swap (si es que existe). Con fdisk averiguamos su tamaño o consultando /proc/swaps. Comando ps -axu: permite conocer que procesos tenemos con los porcentajes de memoria usada, CPU, etc. Comando top: versión dinámica de ps. Comando free: estado global de la memoria fisica y virtual. Comando vmstat: estado de la memoria virtual y el uso que se le dá. Algunos paquetes como dstat permite recoger datos de diferentes parámetros (memoria, swap y otros) a intervalos de tiempo (similar a top).
Instalación de Logwatch
$ apt-get install logwatch
Logwatch guarda la información por defecto en el directorio /usr/share/logwatch/default.conf/ , pero este directorio no es necesario modificarlo ya que logwatch también se fija en /etc/logwatch/ y sobrescribe la configuración por defecto. Por lo tanto, directamente creamos el siguiente archivo: /etc/logwatch/conf/logwatch.conf en este vamos a hacer nuestras modificaciones personales, si queremos nuevamente la configuración por defecto, basta con borrar este archivo. Ejemplo de /etc/logwatch/conf/logwatch.conf :
# archivo /etc/logwatch/conf/logwatch.conf # ################################ # Para que logwatch nos mande un reporte por mail Output = mail # Con esto elegimos el formato del reporte (text, html...) Format = html # Dirección de destino del reporte MailTo = tu_correo@tu_servidor.com # Remitente del reporte MailFrom = logwatch # Dia que quiero el reporte (Yesterday, Today, all) Range = Yesterday # De que servicios quiero recibir reportes Service = all
Bueno, con esto hacemos que cada vez que ejecutemos el comando "logwatch" recibamos un mail con el reporte. Para recibir diariamente sin tener que ingresar a la máquina vamos a editar el archivo /etc/cron.daily/00logwatch y agregamos la siguiente línea:
/usr/sbin/logwatch --mailto tu_correo@tu_servidor.com
Guardamos los cambios y listo, recibiremos todos los días un reporte de logwatch.
NOTA IMPORTANTE: hay que tener un agente de correo configurado y funcionando.
Ejemplo de un informe del logwatch
* LOGWATCH Summary * Denyhosts * pam_unix * Postfix * Connections (secure-log) * SSHD * Sudo (secure-log) * Disk Space
LOGWATCH Summary
Logwatch Version: 7.3.6 (05/19/07) Processing Initiated: Tue Nov 8 06:25:03 2011 Date Range Processed: yesterday ( 2011-Nov-07 ) Period is day. Detail Level of Output: 0 Type of Output/Format: mail / html Logfiles for Host: polonio
Denyhosts
new denied hosts:
211.238.153.158
pam_unix
login:
Authentication Failures: carlitox (): 1 Time(s) unknown (): 1 Time(s) Invalid Users: Unknown Account: 1 Time(s)
sshd:
Authentication Failures: root (211.238.153.158): 5 Time(s) unknown (211.238.153.158): 1 Time(s) Invalid Users: Unknown Account: 1 Time(s)
Postfix
7.895K Bytes accepted 8,084 7.354K Bytes sent via SMTP 7,530 554 Bytes delivered 554
........ ...................................................
2 Accepted 100.00%
--------------------------------------------------
2 Total 100.00%
........ ...................................................
2 Connections 1 Connections lost (inbound) 2 Disconnections 2 Removed from queue 1 Delivered 1 Sent via SMTP
Connections (secure-log)
- Unmatched Entries**
login: FAILED LOGIN (1) on '/dev/tty1' FOR 'carlitox', Authentication failure: 1 Time(s) login: FAILED LOGIN (2) on '/dev/tty1' FOR 'UNKNOWN', Authentication failure: 1 Time(s)
SSHD
SSHD Started: 4 Time(s)
Failed logins from:
211.238.153.158: 5 times
Illegal users from:
211.238.153.158: 1 time
Refused incoming connections:
211.238.153.158 (211.238.153.158): 5836 Time(s)
Sudo (secure-log)
................................................................................
carlitox => root
/sbin/reboot - 2 Times.
Disk Space
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 12G 349M 11G 4% /
none 1.9G 256K 1.9G 1% /dev
/dev/sda5 4.6G 271M 4.1G 7% /var
/dev/sda6 4.6G 564M 3.8G 13% /usr
/dev/sda7 938M 19M 873M 3% /tmp
/dev/sda8 4.6G 138M 4.3G 4% /home
Logwatch Ended at Tue Nov 8 06:25:04 2011
Notas adicionales
- Configuración de Postfix para que envíe correo
En el archivo de configuración /etc/postfix/main.cf hay que completar con la siguiente información:
myorigin = tu_dominio.com mydomain = $myorigin myhostname = nombre_de_maquina.$mydomain mydestination = $mydomain, $myhostname, localhost.$mydomain, localhost relayhost = # Cuando no tiene nada este campo, es la propia máquina quien envía inet_interfaces = all home_mailbox = Mail/ # Hay que crear este directorio
Comandos útiles:
$ /etc/init.d/postfix start $ /etc/init.d/postfix stop $ /etc/init.d/postfix restart
Logs útiles:
/var/log/mail.info /var/log/mail.err /var/log/mail.warn
Referencias
Créditos: Victor Alem y Marcos Rodríguez