monitorizacion
TRANSCRIPT
Monitorización
Miguel Ángel Nieto <[email protected]>Irontec – Internet y Sistemas sobre GNU/Linux
Irontec – Curso Monitorización
2
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
Irontec – Curso Monitorización
3
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!”
Irontec – Curso Monitorización
4
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● local0 → local7
Irontec – Curso Monitorización
5
Logs de sistema
● Levels– debug– info– notice– warning, warn– error, err– crit– alert– emerg, panic
Irontec – Curso Monitorización
6
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
Irontec – Curso Monitorización
7
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 :-)
Irontec – Curso Monitorización
8
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
Irontec – Curso Monitorización
9
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!
Irontec – Curso Monitorización
10
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
Irontec – Curso Monitorización
11
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...
Irontec – Curso Monitorización
12
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!
Irontec – Curso Monitorización
13
FREE
● FREE
Irontec – Curso Monitorización
14
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.
Irontec – Curso Monitorización
15
TOP
● TOP
Irontec – Curso Monitorización
16
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 ?
Irontec – Curso Monitorización
17
HTOP
● HTOP
Irontec – Curso Monitorización
18
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
Irontec – Curso Monitorización
19
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)
Irontec – Curso Monitorización
20
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
Irontec – Curso Monitorización
21
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
Irontec – Curso Monitorización
22
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!
Irontec – Curso Monitorización
23
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
Irontec – Curso Monitorización
24
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.
Irontec – Curso Monitorización
25
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
Irontec – Curso Monitorización
26
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– ...
Irontec – Curso Monitorización
27
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...
Irontec – Curso Monitorización
28
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
Irontec – Curso Monitorización
29
ApacheTOP
● El TOP de Apache :-)
Irontec – Curso Monitorización
30
MOD_STATUS
● Módulo de Apache para comprobar el estado del servicio
Irontec – Curso Monitorización
31
Awstats
● Otra forma de ver los logs :)
Irontec – Curso Monitorización
32
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– ....
Irontec – Curso Monitorización
33
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.
Irontec – Curso Monitorización
34
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.
Irontec – Curso Monitorización
35
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
Irontec – Curso Monitorización
36
MyTOP
● El TOP de MySQL :-)
Irontec – Curso Monitorización
37
Mailgraph
Irontec – Curso Monitorización
38
Queuegraph
Irontec – Curso Monitorización
39
Couriergraph
Irontec – Curso Monitorización
40
Bindgraph
Irontec – Curso Monitorización
41
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 :)
Irontec – Curso Monitorización
42
Mailwatch
Irontec – Curso Monitorización
43
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 :)
Irontec – Curso Monitorización
44
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
Irontec – Curso Monitorización
45
NAGIOS
● Imaginemos un CPD con 50 servidores y 100 servicios
● ¿Si se cae el ADSL, cuantos avisos recibiremos?
Irontec – Curso Monitorización
46
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)
Irontec – Curso Monitorización
47
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)
Irontec – Curso Monitorización
48
NAGIOS
● Así se definiría un HOST en Nagios:define host{host_name xen.irontec.comalias xenaddress 10.10.0.13check_command check_host_alivemax_check_attempts 5check_period 24x7contact_groups Supervisorscontacts Administrador Irontecnotification_interval 60notification_period 24x7notification_options d,u}
Irontec – Curso Monitorización
49
NAGIOS
● Así se definiría un Servicio en Nagios:define service{host_name xen.irontec.comservice_description pingcheck_command check_host_alivemax_check_attempts 1normal_check_interval 60retry_check_interval 5check_period 24x7notification_interval 60notification_period 24x7notification_options w,ucontact_groups Supervisors}
Irontec – Curso Monitorización
50
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$
}
Irontec – Curso Monitorización
51
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.
Irontec – Curso Monitorización
52
CENTREON
Irontec – Curso Monitorización
53
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