2. Irontec – Curso Monitorización
Logs de sistema
● Todos (o casi todos) los servicios almacenan sus
logs en /var/log/
● Al tratarse de ficheros de texto es facil trabajar con
ellos con los comandos básicos de consola (grep,
cat, tail, awk, sed, etc.)
● A veces si los logs crecen muy rápido, es necesario
una herramienta más visual para tener una visión
mas global
● Syslog y Rsyslog son los demonios encargados de
este trabajo
2
3. Irontec – Curso Monitorización
Logs de sistema
● En Debian Etch (4.0) el demonio por defecto era
syslog
● Ahora, en la nueva versión estable Debian Lenny
(5.0) es rsyslog
● Rsyslog tiene muchas más características y muy
modular (filtros, plugins, integración con bases de
datos, etc.)
● Para logear algo, tan sencillo como:
– logger “estoy logeando!”
3
4. Irontec – Curso Monitorización
Logs de sistema
● A la hora de configurar syslog hay dos datos a
seleccionar:
– Facility
● auth, security
● authpriv
● cron
● daemon
● ftp
● kern
● lpr
● mail
● mark (sólo para uso interno)
● news
● sys-log
● user
● uucp 4
5. Irontec – Curso Monitorización
Logs de sistema
● Levels
– debug
– info
– notice
– warning, warn
– error, err
– crit
– alert
– emerg, panic
5
6. Irontec – Curso Monitorización
Logs de sistema
● Cuando los logs crecen mucho es necesario
“rotarlos”
● Algunos servicios (como versiones antiguas de
apache) fallan cuando el tamaño del log es de más
de 2 gigas
● El demonio logrotate crea un nuevo fichero de log
vacio y el antiguo lo renombra y comprime
● /etc/logrotate.conf
6
7. Irontec – Curso Monitorización
Logs de sistema
● Nos creamos un script que escriba “hola” en
/var/log/milog.log
● Debemos crear una rotación de forma que cada 10
megas el fichero se rote
● Los logs antiguos debe comprimirlo
● Suerte :-)
7
8. Irontec – Curso Monitorización
Recursos del sistema
● Las distribuciones de GNU/Linux incluyen unos
comandos básicos para gestionar los recursos de la
máquina
● Los recursos más importantes serán:
– CPU
– Disco Duro
– Memoria RAM
– SWAP
● Los recursos no son ilimitados, hay que tenerlos
controlados en todo momento
8
9. Irontec – Curso Monitorización
Recursos del sistema
● Todo equipo informático tiene su límite de capacidad
● Cuando dicho límite se alcanza, hay que pensar en
otras soluciones como balanceos de carga
● Aprenderemos a gestionar y mantener bajo control
cada recurso del sistema
● Si tenemos una alerta, ¡localizaremos la causa y
acabaremos con ella!
9
10. Irontec – Curso Monitorización
Recursos del sistema
● Si un equipo consume todos los recursos, el sistema
puede dejar de funcionar y ser innacesible
● ¿Causas?
– Un ataque de denegación de servicio
– Error de programación en la aplicación, con memory
leaks o bucles infinitos
– Mala planificación, tenemos mas carga de trabajo de la
que se pensó en un principio
● Lo primero es saber localizar la causa
● Para ello nos servirán las herramientas que vamos a
ver a lo largo del curso
10
11. Irontec – Curso Monitorización
Recursos del sistema
● Usaremos tres tipos de herramientas
– Benchmark de los servicios
– Logeo de los servicios y almacenamiento de un registro
histórico
– Analisis bajo petición
● Y no en ese orden precisamente...
11
12. Irontec – Curso Monitorización
Comandos básicos
● Existen una serie de comandos básicos que
tenemos en cualquier distribución de GNU/Linux (y
en casi cualquier UNIX) que nos ayudarán a ver el
estado de los recursos en tiempo real
● Gracias a estas herramientas tendremos controlado
el uso de Cpu, Ram, Carga de red, etc.
● Vamos a ver desde los más básicos hasta los más
completos
● ¡Hay miles!
12
14. Irontec – Curso Monitorización
FREE
● Linux ocupa siempre toda la memoria RAM
disponible. Si tenemos 3 gigas libres, ¡mejor usarlos!
● Por eso, generalmente la salida del comando será
“free 0”
● Lo que hace en realidad no es ocuparla, si no
utilizarla de Cache. La me memoria RAM es
muchisimo más rápida que el Disco Duro.
● ¡Nunca deberíamos tener Swap en uso! Mientras
eso sea así todo va bien.
14
16. Irontec – Curso Monitorización
TOP
● Top nos permite ver en tiempo real los procesos que
están corriendo en el sistema
● Podemos matarlos, cambiar el nice, ordenar las
columnas, quitar o añadir columnas, etc.
● Si lo que queremos es saber que proceso es el que
más memoria ocupa, debemos ordenar la columna
de uso de memoria, de mayor a menor
● Tenemos una chuleta de ayuda pulsando ?
16
18. Irontec – Curso Monitorización
HTOP
● HTOP es básicamente lo mismo que TOP, pero
mejorado
● Su uso es mucho más sencillo
● Tenemos gráficas de uso de CPU
● Es muy personalizable
18
19. Irontec – Curso Monitorización
Uso de CPU
● A la hora de medir uso de CPU se distinguen
distintos tipos de uso:
– User: uso de cpu consumido por las aplicaciones a nivel
de usuario
– Nice: uso de cpu consumido por las aplicaciones a nivel
de usuario con nice
– System: uso de cpu consumido a nivel de sistema
(kernel)
– Wait: tiempo de cpu que ha estado esperando durante
las cargas I/O del sistema (interrupciones)
– Idle: tiempo de cpu que ha estado esperando sin
cargas I/O (en cristiano, descansado)
19
20. Irontec – Curso Monitorización
Systat
● Systat es un paquete que incluye varias
herramientas más para comprobar los recursos del
sistema
– Iostat: uso de CPU y estádistica I/O de discos
– Mpstat: estadísticas globales y por procesador
– Pidstat: estadísticas de procesos
– Sar: almacena la actividad del sistema
– Sadf: muestra los datos de Sar en distintos formatos
20
21. Irontec – Curso Monitorización
SAR
● Con SAR podemos almacenar la carga del sistema
(tanto de red, como cpu o memoria) y almacenarlo
en un fichero binario
● Dicho fichero binario puede leerse con SADF y
convertirlo en un .csv
● Vamos a guardar los datos de CPU de un minuto y a
continuación crear una gráfica con una herramienta
de hoja de cálculo
21
22. Irontec – Curso Monitorización
Benchmark
● Son herramientas que nos permitirán poner bajo una
alta carga nuestros servicios y ver así como
responde la máquina
● Estas herramientas deben lanzarse contra máquinas
nuestras y a poder ser que no estén en producción
● ¡Si se lanza contra una máquina externa podría
verse como un ataque DOS!
22
23. Irontec – Curso Monitorización
AB
● Apache provee una herramienta para el testeo de
rendimiento, Apache Benchmark (ab).
● Nos permite simular miles de accesos
● Las opciones más importantes son:
● -n número de conexiones a realizar
● -c número de conexiónes concurrentes
● -k usar keepalive
23
24. Irontec – Curso Monitorización
AB
ab -n 1000 -c 10 http://127.0.0.1/
● Realiza 1000 conexiones, 10 concurrentes a la URL
indicada:
Concurrency Level: 10
Time taken for tests: 0.331 seconds
Complete requests: 1000
Failed requests: 0
● Comparad los datos haciendo solicitudes normales y
con keep alive.
● Poned valores exagerados y comprobad como se
consumen los recursos del sistema.
24
25. Irontec – Curso Monitorización
Postal
● Postal nos permitirá enviar miles de correos
aleatorios contra una o varias cuentas de nuestro
servidor
debian5:~# postal
Usage: postal [-m maximum-message-size] [-M minimum-message-size] [-t threads]
[-c messages-per-connection] [-r messages-per-minute] [-a]
[-b [no]netscape] [-p port] [-[z|Z] debug-file]
[-s ssl-percentage]
[-l local-address] [-f sender-file]
smtp-server user-list-filename
Postal Version: 0.70
25
26. Irontec – Curso Monitorización
Iperf
● Es una aplicación cliente/servidor para comprobar el
rendimiento de la red entre dos equipos
● El servidor se queda escuchando en el puerto 5001
● El cliente se conecta y envia datos, dando por
resultado el tiempo que ha necesitado y la velocidad
empleada
● Se puede modificar muchos aspectos del test:
– MTU máximo
– Tamaño del buffer
– Lanzar múltiples conexiones en paralelo
– ...
26
27. Irontec – Curso Monitorización
Monitorización de servicios
● HTTP (Apache, Lighttp), Mysql, Postfix...
● Son servicios muy dependientes de la memoria
RAM y la lectura de disco duro
● Si se quedan sin RAM, usará Swap. Irá lento y las
conexiónes se encolarán, consumiendo más y más
y más...
27
28. Irontec – Curso Monitorización
Monitorización de servicios
● Existen fenómenos llamados “Efectos Slashdot” o
aquí más conocidos como “Efecto meneame”
● Cuando una web alojada en tus servidores es
enlazada en una web con un tráfico infinitamente
superior al tuyo, te provocarán una Denegación de
Servicio (no siempre tiene que ser con mala
intención)
● Estas herramientas nos ayudarán a ver el estado del
servicio y comprobar el origen del problema
28
29. Irontec – Curso Monitorización
ApacheTOP
● El TOP de Apache :-)
29
30. Irontec – Curso Monitorización
MOD_STATUS
● Módulo de Apache para comprobar el estado del
servicio
30
31. Irontec – Curso Monitorización
Awstats
● Otra forma de ver los logs :)
31
32. Irontec – Curso Monitorización
Awstats
● Awstats es un script en perl que lee nuestros logs y
nos genera gráficas de accesos.
● Entre la información que se muetra está:
– Visitas por día, mes, semana...
– Ips de origen
– URL de origen desde la que nos visitan
– Navegador utilizado
– País de procedencia del visitante
– Documentos más vistos
– Palabras usadas en los motores de busqueda
– Sistema operativo
– ....
32
33. Irontec – Curso Monitorización
Awstats
● La instalación se puede hacer desde apt.
apt-get install awstats
● El fichero de configuración se encuentra en
/etc/awstats/awstats.conf
● El CGI se encuentra en
/usr/lib/cgi-bin/awstats.pl
● Las estadisticas se actualizan cada 10 minutos
mediante una tarea programada.
33
34. Irontec – Curso Monitorización
Awstats
● Es posible configurar estadísticas para distintos
dominios.
● Soporta muchos tipos de logs y es configurable. El
soporte para los logs de Apache funciona por
defecto.
● Si hemos modificado los logs de Apache para tener
unos personalizados, será necesario configurar
Awstats para que conozca el formato de los logs.
34
35. Irontec – Curso Monitorización
Awstats
● Tenemos que instalar awstats y configurarlo para
ver los logs de acceso a nuestro blog.
● Para tener algo que ver, necesitamos generar
visitas...
● Awstats será accesible desde
http://miblog.com/cgi-bin/awstats.pl
35
36. Irontec – Curso Monitorización
MyTOP
● El TOP de MySQL :-)
36
41. Irontec – Curso Monitorización
Bindgraph
● En primer lugar es necesario logear las peticiones
DNS. Un ejemplo:
http://paulocolomes.blogspot.com/2007/05/configuracin-de-un-servidor-dns-con.html
● El script para controlar el demonio encargado de
leer los logs y crear las gráficas se encuentra en:
– /etc/init.d/bindgraph
● Tendremos que hacernos un script para crear
peticiones DNS :)
41
43. Irontec – Curso Monitorización
NAGIOS
● Es un sistema Open Source de monitorización de
sistemas, redes, hardware, etc.
● Es muy muy completo, por lo que su configuración
es ligeramente complicada
● Existen interfaces Web como Centreon que nos
ayudan a configurarlo a base de clicks de ratón
● Si algo se cae, nos llega un email :)
43
44. Irontec – Curso Monitorización
NAGIOS
● El funcionamiento básico es:
– Definimos un HOST
– Definimos un servicio y lo asociamos al HOST
– Añadimos un contacto al HOST
– Añadimos un contacto al servicio
● Si un servicio no responde, se comprueba el HOST
– Si el HOST no responde, se avisa al contacto del HOST
– Si el HOST responde es el servicio el que se ha caido,
se avisa al contacto del Servicio
● Existen combinaciones mucho más complejas, pero
el funcionamiento más básico es el indicado
44
45. Irontec – Curso Monitorización
NAGIOS
● Imaginemos un CPD con 50 servidores y 100
servicios
● ¿Si se cae el ADSL, cuantos avisos recibiremos?
45
46. Irontec – Curso Monitorización
NAGIOS
● Tenemos Parent Host y Child Host para definir las
jerarquias
● De la misma forma, tenemos Parent Service y Child
Service
● En el ejemplo anterior, creamos un Host que
compruebe el ADSL (con un servicio asociado que
puede ser un ping)
● Si el ADSL se cae, recibimos un aviso, no 50 (todos
los hosts sin conexión)
46
47. Irontec – Curso Monitorización
NAGIOS
● Para conectarnos a un host remoto se suelen usar
dos sistemas principalmente:
– NRPE: Un demonio que habrá que instalar en los
servidores monitorizados. Recibe las peticiones de
Nagios y ejecuta un script devolviendo un valor.
– SSH: Se conecta mediante SSH y ejecuta un comando
que devuelve un valor. Para este funcionamiento es
necesario que Nagios acceda a todos los servidores
por clave pública.
– NCSA: Los hosts monitorizados envian los datos de los
chequeos a Nagios (chequeos pasivos)
47
48. Irontec – Curso Monitorización
NAGIOS
● Así se definiría un HOST en Nagios:
define host{
host_name xen.irontec.com
alias xen
address 10.10.0.13
check_command check_host_alive
max_check_attempts 5
check_period 24x7
contact_groups Supervisors
contacts Administrador Irontec
notification_interval 60
notification_period 24x7
notification_options d,u
}
48
49. Irontec – Curso Monitorización
NAGIOS
● Así se definiría un Servicio en Nagios:
define service{
host_name xen.irontec.com
service_description ping
check_command check_host_alive
max_check_attempts 1
normal_check_interval 60
retry_check_interval 5
check_period 24x7
notification_interval 60
notification_period 24x7
notification_options w,u
contact_groups Supervisors
}
49
50. Irontec – Curso Monitorización
NAGIOS
● ¿Comandos check_ping?
● Los servicios llevan asociado un comando, que será
el encargado de comprobar un servicio.
– check_ping
– check_tcp
– check_http
– check_pop3
define command{
command_name check_centreon_ping
command_line $USER1$/check_centreon_ping -H
$HOSTADDRESS$ -n $ARG1$ -w $ARG2$ -c $ARG3$
}
50
51. Irontec – Curso Monitorización
CENTREON
● Si no quieres pelearte con los ficheros de Nagios,
existen interfaces Web que nos pueden ayudar
http://www.centreon.com
● Permite definir contactos, hosts, servicios,
comandos, etc. a golpe de click
● Tenemos gráficas, reportes, estadísticas, etc.
51
53. Irontec – Curso Monitorización
Instalar OREON y CENTREON
● Existe un manual en la propia página web de
centreon:
http://en.doc.centreon.com/Setup:Debian/Ubuntu
● Explica como instalar Nagios y Centreon :)
● El objetivo será instalarlo en nuestro equipos y
monitorizar los equipos de los compañeros
53