Monitoreo de métricas en tiempo real y con historial [3ra Parte]

En esta tercera entrega analizaremos como guardar nuestras metricas y tener un historico de las mismas. Para ello usaremos Prometheus y grafana.

ÍNDICE

¿Qué es lo que se quiere?

Netdata.

¿Qué es Netdata?

Implementación y configuración de Netdata.

Prerrequisitos de instalación de Netdata sin internet.

Instalación de Netdata.

Configuración de Netdata-master.

Configurando Netdata-slave.

Proxy inverso para autenticación de Netdata.

HTTPS con certificado SSL auto-firmado para Nginx.

Configurando Nginx para usar SSL.

Creando un Fragmento de Configuración Apuntando a la Llave y Certificado SSL.

Creando una Porción de Configuración con Fuertes Opciones de Encriptación.

Ajustando la Configuración de Nginx para usar SSL.

Script anticrash para Netdata.

Prometheus.

¿Qué es Prometheus?.

Implementación y configuración de Prometheus.

Configurando Prometheus.

Iniciando Prometheus.

Comprobando resultados en servidor Prometheus.

Grafana.

¿Qué es Grafana?.

Implementación y configuración de Grafana.

Iniciando Grafana.

Integrando Prometheus con Grafana.

UFW

¿Qué es Prometheus?.

Prometheus es un sistema de monitoreo y herramientas de alertas de código. Sus principales características son:

  • Un modelo de datos multidimensional con series de tiempos de datos identificados por nombres de métrica y por pares de valor/llave.
  • Usa PromQL, un lenguaje de encuesta flexible para influenciar esta dimensionalidad.
  • No depende de un almacenamiento distribuido; los servidores encuestados son autónomos.
  • Las series de tiempo de colección de datos sucede vía “pull model” sobre HTTP.
  • Los objetivos o “tarjets” son descubiertos por un servicio de descubrimiento o por configuración estática.
  • Soporta múltiples modos de graficación y “dashboarding”.

Este documento propone la integración de Netdata y Prometheus. Se aprovecharán las métricas en tiempo real de Netdata y se almacenarán en Prometheus, que servirá para el tener un “record” o historial de estas métricas.

Implementación y configuración de Prometheus.

En servidor “prometheus”:

Paquetes necesarios:

Creando usuario y grupo de sistema para Prometheus:

Para verificar esto, ingresamos la siguiente línea:

Debe devolver algo como esto:

Creando los directorios de configuración:

Asignando los propietarios a los directorios creados:

Desde un host con acceso a internet, descargamos el programa de prometheus, desde el siguiente enlace:

  • https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gz

Una vez copiado al directorio “/opt”, extraemos el paquete:

Copie los dos ficheros «prometheus» y «promtool» que están dentro de la carpeta del paquete descomprimido y ubicarlos en «/usr/local/bin/»:

Asignando los propietarios a los ficheros copiados en su nuevo destino

Copie los directorios «consoles/» y «console_libraries/» al directorio “/etc/prometheus”:

Asignamos el propietario de los directorios anteriores:

Configurando Prometheus.

Ahora que tenemos todos los ficheros de configuración requeridos en su lugar, procedemos a configurar Prometheus. Su fichero de configuración por defecto está localizado en el directorio creado tras extraerse su paquete de instalación por compilado. Desde que estamos haciendo una instalación básica, copiaremos ese fichero y lo modificaremos:

Editamos el fichero de configuración de ejemplo:

Borramos todo y ajustamos el fichero de configuración, de manera que los “scrapes” tengan definidos los “targets” del netdata de cada uno de ellos. Prometheus encuestará las métricas de cada una de sus bases de datos propias, y no sólo la del netdata-master, por lo que debería permitirse su acceso vía iptables.

Establecemos el propietario del fichero de configuración:

Iniciando Prometheus.

La configuración básica de Prometheus está finalizada. Para iniciar el programa con la configuración básica, corremos la siguiente línea:

El programa habrá iniciado, cuando devuelva algo como lo siguiente:

Accedemos a la página de estados de Prometheus, para verificar si el servidor web inició correctamente:

http://prometheus.empresa.midominio.cu:9090

Detenemos el servicio momentáneamente con la combinación de teclas “Ctrl+C”. Luego creamos el servicio Prometheus en systemd para que inicie con el sistema:

Agregamos lo siguiente:

Recargamos la configuración del demonio systemd:

Habilitamos e iniciamos el servicio Prometheus para que corra con el inicio del sistema:

Debe devolver, algo como lo siguiente:

Iniciamos el servicio:

Verificamos el estado del servicio:

Reiniciamos el servidor:

Después que inicie el servidor, verificamos si Prometheus inició con el sistema:

Comprobando resultados en servidor Prometheus.

Nos autenticamos en la web del Prometheus y verificamos el estado de los «targets». El procedimiento se describe en imágenes a continuación:

Si todo está bien, los objetivos deberían poder aparecer en estado «UP». Los estados que salgan en “DOWN”, se debe a que no se han configurado aun, en este caso sucede en este caso, con “grafana-scrape” (el servidor de grafana), el cual al momento de esta captura, aún no se encontraba configurado:

Para verificar que el servidor de Prometheus recibe las métricas de sus objetivos, que apuntan a Netdata, debe correr el siguiente comando:

Si se quiere ver alguna métrica en particular, basta con pararse en la ventana principal de Prometheus y seleccionar la opción «- insert metric at cursos -«, para que se listen todas las métricas posibles. A continuación, un ejemplo para la métrica «node_memory_MemAvailable_bytes» (ver imagen), la tecleamos y ejecutamos con la opción «Execute»:

Para ver una gráfica de la métrica, click en la pestaña «Graph» para esa métrica:

Hasta aquí hemos configurado satisfactoriamente un servidor de Prometheus para albergar las métricas de Netadata.

¿Qué es Grafana?.

Grafana es un software libre basado en licencia de Apache 2.0, ​ que permite la visualización y el formato de datos métricos. Permite crear cuadros de mando y gráficos a partir de múltiples fuentes, incluidas bases de datos de series de tiempo. Entre sus características principales se encuentran:

  • Grafana es multiplataforma sin ninguna dependencia y también se puede implementar con Docker. Está escrito en lenguaje Go y tiene un HTTP API completo.
  • Grafana evita que los usuarios sobrescriban accidentalmente un panel de control. Existe una protección similar cuando se crea un nuevo panel de control cuyo nombre ya existe.

La herramienta ofrece la posibilidad de configurar alertas.

Implementación y configuración de Grafana.

En servidor “grafana”:

Instalando Grafana usando el empaquetado “.deb” descargado y ubicado en “/opt”:

Iniciando Grafana.

Recargar systemd, iniciar y habilitar grafana para que corra al inicio del sistema:

Debe devolver, algo como esto:

Iniciamos Grafana:

Accedemos a la WebGUI de Grafana:

http://grafana.empresa.midominio.cu:3000

Las credenciales de autenticación por defecto, son las siguientes:

  • user: admin
  • passwd: admin

Definimos una nueva contraseña para la gestión del sitio y proseguimos:

Una vez autenticados nos recibe el menú principal de Grafana:

Con esto echo ya tenemos instalado Grafana en nuestro sistema.

Integrando Prometheus con Grafana.

Una vez que se haya configurado la colecta de métricas con Prometheus, sería muy provechoso integrar esas métricas coleccionadas con Grafana, para tener una visualización más intuitiva de los datos, gracias a sus bellos “dashboards”.

Agregamos la fuente de los datos, que en este caso será Prometheus, que a su vez obtiene las métricas de Netdata de cada host linux (incluyéndose él mismo), a través del propio netdata-master:

“Configuration > Datasources > Add data source”

De las fuentes de datos disponibles para Grafana, seleccionamos Prometheus:

Al seleccionar Prometheus como fuente de datos, se abrirá la configuración correspondiente. Las imágenes siguientes describen el procedimiento de configuración:

NOTA: Debe poner como nombre a esta fuente de datos “Prometheus-1”, para que más adelante funcione el “dashboard” personalizado que se va a utilizar.

Ahora podríamos crear nuestros propios “dashboards” para la visualización de los datos o bien importar cualquiera que ya haya sido creado por la comunidad. Para más información, llegarse al siguiente enlace:

https://grafana.com/dashboards

Un ejemplo podría ser “my_netdata_v1.25.0_rev1.json”, una revisión echa por el autor de este tutorial, que se basa en el “netdata_rev1.json”, compatible con versiones anteriores a la v1.25.0 de Netdata y con errores para mostrar los paneles, según la variable del “job” especificado por Prometheus, en el “query” de la métrica. Esta revisión puede descargarla del siguiente enlace:

https://github.com/Franco-Sparrow/franco-repos/raw/master/my_netdata_v1.25.0_rev1.zip

Esta plantilla ha sido importada y usada en este ejemplo para visualizar todas las métricas colectadas, usando Prometheus y Netdata. Las siguientes imágenes muestran el recorrido para importar el “dashboard”:

A continuación, se muestra una imagen con un fragmento de los paneles del “dashboard”, ya arreglado para mostrar solo los gráficos del “job” seleccionado:

Es posible que haya algunos gráficos que no se muestren correctamente, al no tener datos que mostrar. Esto de sebe a que posiblemente dichos “charts” cambiaron y ya no se llaman igual, o fueron modificados completamente y la lógica de programación del dashboard no es compatible.

UFW

Uncomplicated Firewall (UFW) es un cortafuegos diseñado para ser de fácil uso desarrollado por Ubuntu. Utiliza la línea de comandos para configurar las iptables usando un pequeño número de comandos simples.

  • Para todos los hosts

Configuraremos las siguientes reglas en UFW, según los puertos de los servicios que serán usados en nuestro webhosting.

Políticas predeterminadas:

Permitir todas las conexiones que provengan del propio localhost:

Políticas referentes a gestión remota por SSH, sólo para los administradores:

  • Políticas para netdata-master relacionadas con Netdata

Permitir acceso al Netdata, solo para administradores de red y servidores:

  • Políticas para los netdata-slave relacionadas con Netdata

Permitir acceso al Netdata, solo para administradores de red y netdata-master:

Deben agregarse las reglas referentes a los demás servicios que corran en estos servidores. En este caso, sólo se especificaron las reglas referentes a Netdata.

  • Para todos los hosts

Finalmente habilitamos el cortafuegos:

Nos debe devolver lo siguiente e indicamos la respuesta, si estamos conectados por SSH:

Debe devolver lo siguiente:

Para ver el listado de reglas numeradas:

Para ver el listado de reglas más detallado:

Hasta Aqui este extenso tutorial, espero les ayude en sus tareas diarias

alex out

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 4.8 / 5. Recuento de votos: 5

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Sobre Alexander Rivas Alpizar 61 artículos
Administrador de Redes EMPRESTUR Cienfuegos

Sé el primero en comentar

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*