monitorizacion

53
Monitorización Miguel Ángel Nieto <[email protected]> Irontec – Internet y Sistemas sobre GNU/Linux

Upload: irontec-internet-y-sistemas-sobre-gnulinux

Post on 12-Jun-2015

7.755 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Monitorizacion

Monitorización

Miguel Ángel Nieto <[email protected]>Irontec – Internet y Sistemas sobre GNU/Linux

Page 2: Monitorizacion

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

Page 3: Monitorizacion

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!”

Page 4: Monitorizacion

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

Page 5: Monitorizacion

Irontec – Curso Monitorización

5

Logs de sistema

● Levels– debug– info– notice– warning, warn– error, err– crit– alert– emerg, panic

Page 6: Monitorizacion

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

Page 7: Monitorizacion

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

Page 8: Monitorizacion

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

Page 9: Monitorizacion

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!

Page 10: Monitorizacion

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

Page 11: Monitorizacion

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

Page 12: Monitorizacion

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!

Page 13: Monitorizacion

Irontec – Curso Monitorización

13

FREE

● FREE

Page 14: Monitorizacion

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.

Page 15: Monitorizacion

Irontec – Curso Monitorización

15

TOP

● TOP

Page 16: Monitorizacion

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 ?

Page 17: Monitorizacion

Irontec – Curso Monitorización

17

HTOP

● HTOP

Page 18: Monitorizacion

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

Page 19: Monitorizacion

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)

Page 20: Monitorizacion

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

Page 21: Monitorizacion

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

Page 22: Monitorizacion

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!

Page 23: Monitorizacion

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

Page 24: Monitorizacion

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.

Page 25: Monitorizacion

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

Page 26: Monitorizacion

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

Page 27: Monitorizacion

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

Page 28: Monitorizacion

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

Page 29: Monitorizacion

Irontec – Curso Monitorización

29

ApacheTOP

● El TOP de Apache :-)

Page 30: Monitorizacion

Irontec – Curso Monitorización

30

MOD_STATUS

● Módulo de Apache para comprobar el estado del servicio

Page 31: Monitorizacion

Irontec – Curso Monitorización

31

Awstats

● Otra forma de ver los logs :)

Page 32: Monitorizacion

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

Page 33: Monitorizacion

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.

Page 34: Monitorizacion

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.

Page 35: Monitorizacion

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

Page 36: Monitorizacion

Irontec – Curso Monitorización

36

MyTOP

● El TOP de MySQL :-)

Page 37: Monitorizacion

Irontec – Curso Monitorización

37

Mailgraph

Page 38: Monitorizacion

Irontec – Curso Monitorización

38

Queuegraph

Page 39: Monitorizacion

Irontec – Curso Monitorización

39

Couriergraph

Page 40: Monitorizacion

Irontec – Curso Monitorización

40

Bindgraph

Page 41: Monitorizacion

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

Page 42: Monitorizacion

Irontec – Curso Monitorización

42

Mailwatch

Page 43: Monitorizacion

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

Page 44: Monitorizacion

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

Page 45: Monitorizacion

Irontec – Curso Monitorización

45

NAGIOS

● Imaginemos un CPD con 50 servidores y 100 servicios

● ¿Si se cae el ADSL, cuantos avisos recibiremos?

Page 46: Monitorizacion

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)

Page 47: Monitorizacion

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)

Page 48: Monitorizacion

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}

Page 49: Monitorizacion

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}

Page 50: Monitorizacion

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$

}

Page 51: Monitorizacion

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.

Page 52: Monitorizacion

Irontec – Curso Monitorización

52

CENTREON

Page 53: Monitorizacion

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