Community Comunidad Servidores Tutorial

Aprende a monitorizar la Maquinaria X con herramientas básicas

noviembre 30, 2018

Aprende a monitorizar la Maquinaria X con herramientas básicas

This post is also available in : Inglés

Maquinaria X: servidor web alterno y su monitorización artesanal

Nginx está presente en al menos el 22% de los dominios (en mayo de 2018), destacando en el segundo lugar por su capacidad de lidiar con diez mil o más conexiones (que no peticiones), por lo que es preferido para ciertos tipos de tarea. Ahora bien, si ya tenemos todo cubierto en la monitorización profesional con Pandora FMS, ¿qué nos falta por aprender? Pues como dice el refrán anglosajón “el diablo está en los detalles” y en esta era en la que todo viene empaquetado y listo para usar siempre es bueno diseccionar e ir al hueso, a la médula de todo. No pretendemos convertiros en profesionales con una serie de artículos (eso tarda como 10 años por vuestra cuenta y al menos 5 si asistís a una universidad) pero aquí lo presentaremos sin mayor complicación para que tengáis una información básica al respecto.

Instalación de la Maquinaria X, Nginx

Ejemplarizaremos con un servidor Ubuntu 18 en una red de área local virtual, al cual con derechos de administrador actualizaremos sus repositorios para su posterior instalación:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install nginx
sudo nginx –t

Maquinaria X
sudo apt-get install nginx

Así de fácil, o podemos instalarlo para Pandora FMS sobre CentOS o para cualquier otra plataforma GNU/Linux. En la última línea de comandos anterior permite comprobar su funcionamiento y conocer dónde está ubicado el registro de eventos y sucesos o simplemente “logs”.

Maquinaria X
sudo nginx -t

Esencialmente hay tres clases de métricas a recoger (aquí solo veremos lo básico, access.log):

  • Métricas de actividad básica.
  • Métricas de errores (error.log).
  • Métricas de desempeño (Pandora FMS Enterprise).

En cuanto al formato de estos registros, los tres principales servidores web (Apache, Nginx y Microsoft IIS) utilizan la normativa del mismo Apache y con un comando simple podremos visualizar -y monitorizar en tiempo real- qué ocurre en nuestros equipos (esto es lo que llamamos artesanal):

sudo tail -f /var/log/nginx/access.log

Maquinaria X
sudo tail -f /var/log/nginx/access.log

ngxtop

Ya este momento quisiéramos tener instalado Pandora FMS en una pantalla extensa y con maravillosos gráficos de la consola web, pero no nos dejéis llevar por la tentación. Sigamos con nuestra ventana terminal y dejemos atrás las herramientas GNU / Linux que todo administrador conoce y comencemos con una nueva, basada en lenguaje Python: ngxtop.

Si el nombre os suena conocido, pues sí, es la contracción de Nginx y el legendario comando top y forma parte del repositorio especial del lenguaje Python. El lenguaje como tal viene incluido en el 99% de las distribuciones GNU/Linux, pero dada la cantidad de material escrito para ese entorno lo más sensato es instalar un gestor de paquetes llamado pip (ngxtop también la podremos instalar desde el código fuente con git clone):

Maquinaria X
ngxtop info

Una vez instalado podremos echar mano de ngxtop y verificar si quedó instalado con la orden “ngxtop info” (ver figura anterior). Podremos visualizar cuáles son las direcciones IP (agrupadas) que más demanda de solicitudes hacen y los ficheros exactos solicitados, todo esto en tiempo real:

Maquinaria X
ngxtop top remote_addr
Maquinaria X
ngxtop -n 20

Combinando condiciones

En programación una variable representa una cifra o cadena de texto que cambia a nuestra voluntad o por eventos y en ngxtop tenemos las siguientes:
http_referer: la dirección IP que tenga asignada el servidor web en ese momento.

  • http_user_agent: nombre del navegador web que visita nuestra página.
  • remote_addr: dirección IP del visitante.
  • status: estado de cada una de las peticiones (cabeceras HTTP).
  • body_bytes_sent: bytes enviados.

Lo interesante es que podremos combinar los parámetros que le pasemos a ngxtop, por ejemplo el siguiente caso:

ngxtop --no-follow -i 'status == 200' print http_user_agent

Con el parámetro “-i” filtramos las peticiones a ficheros que fueron exitosas. El comando “print” se encarga de mostrarnos el nombre de los navegadores web. El parámetro “–no-follow” sirve para mirar el pasado, lo que está registrado. Con este paso entramos en modo de monitorización:

Maquinaria X
ngxtop –no-follow -i ‘status == 200’ print http_user_agent | grep Kindle

Como vemos en la figura anterior, la clara ventaja del uso de la terminal es el poder combinar múltiples herramientas: con ngxtop y el comando grep somos capaces de detectar si un dispositivo tal, como un Kindle, ha visitado alguna de nuestras páginas web.

Para los parámetros básicos contamos con:

  • “-t”: para cambiar el número de segundos, por defecto dos, para refrescar la información.
  • “-d”: muestra líneas de depuración de código.
  • “–version”: muestra la versión instalada.
  • “-h”: ayuda, exhibe el resto de los parámetros disponibles.
  • top, avg, sum: permite realizar operaciones de máximo valor, promedio y suma sobre los bytes enviados.

Con los últimos comandos podemos calcular el número de bytes enviados por nuestro servidor:

ngxtop --no-follow sum body_bytes_sent

O discriminar cuántos bytes fueron consultas de elementos válidos y cuántos bytes de ficheros que no tenemos en nuestro servidor:

Maquinaria X
Bytes totales enviados y discriminados según su estado de cabecera HTTP

Si vuestro servidor web se encuentra detrás de un balanceador de carga o proxy inverso (como puede ser otro servidor nginx) deberemos agregar la siguiente línea “real_ip_header X-Forwarded-For;” en el fichero de configuración “/etc/nginx/conf.d/default.conf” para poder recibir la dirección IP verdadera de nuestros visitantes; luego deberemos reiniciar el servicio con “/etc/init.d/nginx restart”. Si queréis ampliar vuestros conocimientos hacia el campo de la informática forense os recomendamos estudiar la herramienta LORG, la cual necesita lenguaje PHP para su funcionamiento.

Extendiendo el uso hasta Apache

Como os comentamos, al utilizar nginx la misma estructura de registro, podremos utilizar ngxtop para monitorizar un servidor Apache al especificar de dónde obtendrá los datos para convertirlo en información:

tail -follow /var/log/apache2/access.log | ngxtop -f common

  • tail: el comando que nos entrega las diez últimas líneas de un fichero de texto.
  • -follow: le indica a tail que “siga” el archivo, es decir, que si le son agregados datos procese dichas líneas.
  • /var/log/apache2/access.log: ubicación del archivo de registros del servidor web Apache .
  • “|”: comando “tubería” que “pasa” el resultado del comando tail al próximo comando, en este caso nxgtop.
  • -f: especifica el formato utilizado en el registro, en este caso el formato común, “common“.

Más allá de nginx y NGINX

Como os dijimos, esto es apenas un aperitivo de las capacidades de esta aplicación, Nginx. Otras características incluyen el funcionar como proxy inverso, tanto web como para correo electrónico, y su monitorización tiene otras aristas. Si necesitáis monitorizar no solo a la Maquinaria X, sino cualesquiera otros dispositivos conectados a Internet, ¡con toda certeza tenéis que contactarnos!


    Written by:



    Leave a comment

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.