Monitorizacion servidor

20
Escuela Técnica Superior de Ingeniería Universidad de Huelva Memoria de Prácticas A DMINISTRACIÓN DE S ERVIDORES Grado en Ingeniería Informática Autor: José Manuel Díaz González 27 de octubre de 2015

description

Monitorizacion servidor linux

Transcript of Monitorizacion servidor

Page 1: Monitorizacion servidor

Escuela Técnica Superior de Ingeniería

Universidad de Huelva

Memoria de Prácticas

ADMINISTRACIÓN DE SERVIDORES

Grado en Ingeniería Informática

Autor: José Manuel Díaz González

27 de octubre de 2015

Page 2: Monitorizacion servidor

Resumen

1. Monitorización de los distintos recursos del sistema: Uso de distintos co-mandos para la monitorización del estado del sistema.

Palabras clave: vmstat,ps,gcc,monitorización,recursos

Page 3: Monitorizacion servidor

Índice general

1. PRÁCTICA DE MONITORIZACIÓN. TOPIC 200 41.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.1.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2. Procedimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.3. Conclusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181.4. Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2

Page 4: Monitorizacion servidor

Índice de figuras

1.1. Creación equipo para Centos . . . . . . . . . . . . . . . . . . . . . . 61.2. Iniciando instalación Centos . . . . . . . . . . . . . . . . . . . . . . 71.3. Instalando Centos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.4. Centos iniciado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.5. Configuración red NAT . . . . . . . . . . . . . . . . . . . . . . . . . . 91.6. Configuración reenvio de puertos . . . . . . . . . . . . . . . . . . . 101.7. Asignacion de nombre (ethX) a MAC . . . . . . . . . . . . . . . . . . 101.8. Asignacion de nombre (ethX) a MAC 2 . . . . . . . . . . . . . . . . . 111.9. Levantamiento de la NIC . . . . . . . . . . . . . . . . . . . . . . . . 111.10.Configuración levantamiento automático NIC . . . . . . . . . . . . 111.11.Conexión ssh (maquina anfitriona y virtualizada) . . . . . . . . . . 121.12.Ejecución vmstat (Monitorización 512Mb RAM) . . . . . . . . . . . 131.13.Ejecución vmstat (Monitorización 1Gb RAM) . . . . . . . . . . . . 131.14.Ejecución comando free . . . . . . . . . . . . . . . . . . . . . . . . . 141.15.Ejecución comando ps -ef . . . . . . . . . . . . . . . . . . . . . . . . 141.16.Ejecución comando w . . . . . . . . . . . . . . . . . . . . . . . . . . 141.17.Ejecución comando top . . . . . . . . . . . . . . . . . . . . . . . . . 151.18.Ejecución comando netstat . . . . . . . . . . . . . . . . . . . . . . . 151.19.Ejecución comando df . . . . . . . . . . . . . . . . . . . . . . . . . . 151.20.Ejecución de programa y monitorización de recursos . . . . . . . . 161.21.Ejecución de programa y monitorización de recursos . . . . . . . . 161.22.Ejecución de programa y visualización de proceso zombie. . . . . 17

3

Page 5: Monitorizacion servidor

Capítulo 1

PRÁCTICA DE MONITORIZACIÓN.TOPIC 200

1.1. Introducción

Este capitulo se centra en los distintos métodos (herramientas y comandos)que podemos emplear para obtener una vista de la utilización que hace nuestrosistema de sus recursos internos (memoria, cpu, discos duros...).Definción de un pie de página1

1.1.1. Objetivos

El objetivo de esta prácticas es que el alumno se familiarice con los diferen-tes comandos existente para monitorizar los recursos de un servidor. Para ellorequiere cumplementar cada uno de los siguientes aspectos.

1. Conseguir crear una máquina virtual basada en virtualbox que contegaun sistema centos 6.3 mínimo.

2. Conseguir una conexión de tipo NAT con redirección de puertos.

3. Conocer el uso de comandos para monitorizar el comportamiento delsistema y actuar en función de dichos estados. Como varían las monitorizacio-nes conforme varían los requisitos.

4. Compilar y ejecutar el siguiente programa y monitorizar los recursos cada5 segundos.

1Esto es un pie de página

4

Page 6: Monitorizacion servidor

Capítulo 1. PRÁCTICA DE MONITORIZACIÓN. TOPIC 200 1.1. Introducción

#include <stdio.h>#include <stdlib.h>

int main(){char str[] = "This is tutorialspoint.com";

FILE *fd = fopen("prueba.txt","w");int i,j;

for (i=0; i < 30000 ; i++)for (j=0; j < 30000 ; j++)

fwrite(str , 1 , sizeof(str) , fd);

fclose(fd);

return 0;}

5. Usando el comando ps comprobar como afecta al sistema la ejecucióndel siguiente código.

#include <stdlib.h>#include <sys/types.h>#include <unistd.h>

int main (){

pid_t child_pid;

child_pid = fork ();if (child_pid > 0) {

sleep (60);}else {

exit (0);}return 0;

}

5

Page 7: Monitorizacion servidor

1.2. Procedimiento Capítulo 1. PRÁCTICA DE MONITORIZACIÓN. TOPIC 200

1.2. Procedimiento

1. El primer requisito que necesitamos es una aplicación, donde virtualizarel sistema operativo, en este caso he usado VirtualBox 4.3. Dentro de esta apli-cación se ha virtualizado el SO Centos 6.4 minimal i386, el cual es una versiónde linux servidora reducida. Para realizar la virtualización lo primero que debohacer es preparar la máquina en VirtualBox en la cual vamos a instalar el SO.Esta máquina la he preparado con las siguientes características:- Linux- Red-Hat X86- RAM 512 Mb- HDD 8Gb (Dinámico)

Figura 1.1: Creación equipo para Centos

6

Page 8: Monitorizacion servidor

Capítulo 1. PRÁCTICA DE MONITORIZACIÓN. TOPIC 200 1.2. Procedimiento

Una vez definida la máquina con los requisitos, para instalar Centos proce-demos a su instalación. Para ello arrancamos la máquina indicando el disposi-tivo desde el que se desea que arranque la primera vez (en mi caso un archivoISO que contiene el SO).Luego, se abrirá un menú que nos permitirá realizar la instalación de Centosentre otras opciones. Imágen a continuación.

Figura 1.2: Iniciando instalación Centos

En el caso de que seleccionemos la instalación, como es mi caso, esta dará co-mienzo haciendo las preguntas y comprobaciones típicas que se hacen a la ho-ra de instalar un sistema operativo. (Selección y comprobación de disco, siste-ma de ficheros a usar, idioma, modelo de teclado...) Uno de los pasos importan-tes a la hora de configurar estos parámetos es recordar la clave que asignemosal usuario root.Una vez que nos a solicitado la configuración que le asignará al SO, dará co-mienzo la instalación con dichos parámetos

Figura 1.3: Instalando Centos

A continuación, una vez instalado el SO, nos pedirá que se reinicie el sistema,

7

Page 9: Monitorizacion servidor

1.2. Procedimiento Capítulo 1. PRÁCTICA DE MONITORIZACIÓN. TOPIC 200

de manera que cuando este vuelve a arrancar ya nos muestra el SO, donde unavez logueados podremos empezar a utilarlo.

Figura 1.4: Centos iniciado

8

Page 10: Monitorizacion servidor

Capítulo 1. PRÁCTICA DE MONITORIZACIÓN. TOPIC 200 1.2. Procedimiento

2. Una vez conseguido el paso anterior vamos a configurar una red NAT conredirección de puertos. Esto permitirá que nuestro sistema virtualizado tengasalida a internet. En cuanto a la redirección de puerto, será algo que configure-mos en la configuración de VirtualBox.

Para ello debemos acceder a la configuración de nuestra máquina dentro delVirtualBox, una vez aquí tenemos que acceder al apartado de red, para así in-dicar la configuración de red que usará nuestra instalación. En la imagen quese muestra a continuación tendremos que preparar la interfaz de red para laconexión por NAT.

Figura 1.5: Configuración red NAT

Además de indicar que la configuración a usar será NAT, también tendre-mos que configurar la redirección de puertos. Esto nos permite enlazar puertosde la máquina anfitriona con la máquina virtual. De esta forma podemos asig-nar el uso de un puerto, por ejemplo el puerto 22, de la máquina anfitriona conun puerto de la máquina virtual 2222. Así podremos usar ssh entre la máquinaanfitriona y la máquina virtual. Esta configuración mencionada se muestra enla siguiente imágen.

Para comprobar que toda la configuración de la red funciona correctamentepodemos iniciar el sistema virtualizado y comprobar que tenga conectividad ainternet.Conforme arrancamos el sistema Centos e intentamos hacer un ping vemos

9

Page 11: Monitorizacion servidor

1.2. Procedimiento Capítulo 1. PRÁCTICA DE MONITORIZACIÓN. TOPIC 200

Figura 1.6: Configuración reenvio de puertos

que no se produce un error y este no funciona, esto es debido a que no estálevantada la interfaz de red. Para proceder a levantarla usamos el comando ifupethX. "X"será el número de nuestra interfaz de red, este será incrementado cadavez que reiniciemos la MAC de nuestra NIC (tarjeta de red) ya que Centos ladetectará como si se tratara de una nueva NIC. En la imagen que se muestra acontinuación observamos un error al intentar levantar la NIC, esto es debido alo que acabamos de mencionar del reinicio de MAC.

Para conseguir solucionar ese error y así lograr levantar la NIC de nuestramáquina debemos, en primer lugar saber el valor de la X de ehtX que le co-rresponde a nuestra NIC. Para ello podemos usar el comando que se muestra acontinuación para consultar la tabla de NIC.

Figura 1.7: Asignacion de nombre (ethX) a MAC

A continuación, en la imagen 1.8 se puede apreciar como se le asigna unnombre a una MAC de la interfaz de red, de forma que observando en este ar-chivo el valor de la MAC podemos saber el nombre que tiene nuestra interfazde red en nuestro sistema Centos.

Ahora una vez que sabemos el nombre exacto de la NIC que tiene instaladanuestro sistema, podemos proceder a levantarla usando como ya menciona-mos anteriormente el comando ifup ethX. En la imagen 1.9 se muestra la eje-cución correspondiente del comando para proceder a levantar la interfaz.

10

Page 12: Monitorizacion servidor

Capítulo 1. PRÁCTICA DE MONITORIZACIÓN. TOPIC 200 1.2. Procedimiento

Figura 1.8: Asignacion de nombre (ethX) a MAC 2

Figura 1.9: Levantamiento de la NIC

Para evitar tener que levantar la NIC cada vez que se arranque el sistemapodemos hacerlo configurando el archivo de carga de nuestro sistema. Paraello vamos configurar el archivo ifcfg-ethx. Este archivo se encuentra en el path/etc/sysconfig/network-scripts. La X de ethx corresponde con el valor que le haasignado nuestro sistema a nuestra NIC. Para configurar el levantamiento au-tomático solo tenemos que abrir el archivo de configuración correspondientea nuestra tarjeta y modificar el parámetro ONBOOT=yes como se muestra en lafigura 1.10 que se muestra a continuación.

Figura 1.10: Configuración levantamiento automático NIC

Como último apartado de este punto, para probar que todo funciona co-rrectamente hemos realizado una conexión shh desde la máquina anfitrionahacia la máquina servidora, de esta forma estamos comprobando que a par-te de que tenga conexión que se haya realizado correctamente el reenvio depuertos. La imágen 1.11 muestra el proceso para realizar una conexión ssh en-

11

Page 13: Monitorizacion servidor

1.2. Procedimiento Capítulo 1. PRÁCTICA DE MONITORIZACIÓN. TOPIC 200

tre ambas máquinas. La opción -p que aparece en el comando ssh nos permiteindicarle el puerto de reenvio entre ambas máquinas.

Figura 1.11: Conexión ssh (maquina anfitriona y virtualizada)

12

Page 14: Monitorizacion servidor

Capítulo 1. PRÁCTICA DE MONITORIZACIÓN. TOPIC 200 1.2. Procedimiento

3. Una vez que los puntos anteriores han funcionado, se ha consultado va-rios parámetros de monitorización del sistema. Esto nos permite saber el esta-do actual de los recursos que disponemos en nuestra máquina con el objetivode solucionar un problema o poder evirtarlo mediante la modificación de algu-na configuración o en su caso realizando alguna mejora HW.Se ha usado el comando vmstat para monitorizar los recursos del sistema, yaque este muestra numerosas métricas de los recursos del sistema en tiemporeal (colas de procesos, información de memoria, nº de bloques R/W...). En laimagen siguiente podemos apreciar la información del sistema que nos devuel-ve este comando.

Figura 1.12: Ejecución vmstat (Monitorización 512Mb RAM)

Si detenemos nuestra máquina y simulamos una mejora de RAM, al volver aarrancar la máquina y lanzar de nuevo este comando, podemos apreciar que loscambios realizados se han llevado a cabo correctamente. Este es el contenidoque muestra la imagen que se muestra a continuación.

Figura 1.13: Ejecución vmstat (Monitorización 1Gb RAM)

Hay que mencionar que la información de este comando es actual sobre elmomento en el que se ejecuta, pero esta información variará en cada instante,por eso, vmstat nos permite ejecutarlo con un parametro x (vmstat x) en el queindicamos sucesivas ejecuciones de este comando cada x segundos.

Existen otros comandos que también nos permite obtener una monitorizaciónsobre los recursos del sistema como pueden ser:

13

Page 15: Monitorizacion servidor

1.2. Procedimiento Capítulo 1. PRÁCTICA DE MONITORIZACIÓN. TOPIC 200

Comando free: Muestra información de la memoria.

Figura 1.14: Ejecución comando free

Comando ps: Muestra procesos del sistema. Usando los parámetros -efjhnos muestra información sobre las relaciones padres/hijos.

Figura 1.15: Ejecución comando ps -ef

Comando w: Muestra información sobre los usuarios conectados y susprocesos.

Figura 1.16: Ejecución comando w

Comando top: Muestra información constantemente actualizada de losprocesos.

14

Page 16: Monitorizacion servidor

Capítulo 1. PRÁCTICA DE MONITORIZACIÓN. TOPIC 200 1.2. Procedimiento

Figura 1.17: Ejecución comando top

Comando netstat: Muestra información del estado de la red.

Figura 1.18: Ejecución comando netstat

Comando df: Muestra información del estado de los discos duros.

Figura 1.19: Ejecución comando df

4. Para poder ejecutar el programa he tenido que crearlo dentro de la má-quina y compilarlo. Para realizar la compilación he usado el comando gcc -obucle bucle.c, esto me genera el ejecutable con el código mostrado en el enun-ciado.Ahora si analizamos o ejecutamos el código del programa en cuestión, pode-mos observar que lo que hace es escribir en el disco en el fichero prueba.txt.Podemos comprobar con el comando vmstat los bloques escritos.La siguiente imagen muestra el estado del sistema (vmstat) antes de lanzar la

15

Page 17: Monitorizacion servidor

1.2. Procedimiento Capítulo 1. PRÁCTICA DE MONITORIZACIÓN. TOPIC 200

ejecución del programa que acabamos de compilar y unos segundos despuesvolvemos a lanzar vmstat. Observando la imagen podemos comprobar comoestá aumentando el número de bloquees escritos en el sistema. Esta informa-ción se encuentra bajo el encabezado io concretamente bajo bo.

Figura 1.20: Ejecución de programa y monitorización de recursos

Este cambio en el uso de los recursos del sistema, también podemos ob-servarlo usando el comando iostat, siguiendo el mismo procedimiento que seha seguido con el comando vmstat (lanzandolo antes y un tiempo después deejecutar el programa compilado). La imagen que se muestra a continuaciónmuestra la información de dicho comando.

Figura 1.21: Ejecución de programa y monitorización de recursos

16

Page 18: Monitorizacion servidor

Capítulo 1. PRÁCTICA DE MONITORIZACIÓN. TOPIC 200 1.2. Procedimiento

5. El código de este programa lo que hace es crear un proceso hijo, el proce-so hijo muere, pero el padre no ha hecho wait(). El proceso hijo queda zombiehasta que el proceso padre muere ya que los procesos zombis no se puedenmatar.Si usamos el comando ps -efjH podemos ver los procesos hijos que ha creadocada proceso(imagén siguiente).

Figura 1.22: Ejecución de programa y visualización de proceso zombie.

17

Page 19: Monitorizacion servidor

1.3. Conclusión Capítulo 1. PRÁCTICA DE MONITORIZACIÓN. TOPIC 200

1.3. Conclusión

Comandos bastante importante para la monitorización de los recursos denuestro servidor. Importancia de estos para una buena administración del sis-tema.

18

Page 20: Monitorizacion servidor

Capítulo 1. PRÁCTICA DE MONITORIZACIÓN. TOPIC 200 1.4. Bibliografía

1.4. Bibliografía

1. http://ocw.um.es/gat/contenidos/ldaniel/ipu_docs/latex/tema6.html/

2. http://www.linuxtotal.com.mx/?cont=info_admon_010/

19