Optimizando los recursos de nuestro cluster
Hasta ahora, hemos estado trabajando con un solo nodo. En este tutorial, crearemos un clúster de nodos. Utilizar un solo nodo puede ser útil con fines de prueba y desarrollo, pero queremos comprender cómo estas herramientas pueden ser utilizadas en una infraestructura de producción.
Las herramientas que estamos utilizando para observar nuestro servidor pueden añadir cierta carga, perjudicando el rendimiento del trabajo que realmente queramos realizar. Por lo tanto, es importante diseñar una arquitectura que nos permita observar nuestra infraestructura sin afectar (demasiado) al rendimiento.
Prometheus, Grafana y Loki son herramientas que pueden gestionar entradas y salidas de datos desde y hacia diferentes fuentes. Por lo tanto, podemos utilizarlas para observar un clúster de nodos desde una sola instancia de Grafana, Prometheus y Loki.
A continuación se propone una arquitectura que nos permitirá observar un clúster de nodos desde una sola instancia de Grafana, Prometheus y Loki.
Arquitectura Observador-Observado
Tendremos dos tipos de nodos:
1 Observador
X Observados

En el nodo Observador
El host observador será el que albergará Grafana, Loki y Prometheus.
Prometheus es un scraper, lo que significa que será responsable de recopilar métricas de los observados. Por lo tanto, necesitamos configurarlo para que sepa dónde encontrar a los observados.
Abre el archivo
observability-lab/resources/prometheus.ymlen tu editor favorito.Editaremos la sección
scrape_configsdel archivo:- job_name: "node_exporter" static_configs: - targets: ["node-exporter:9100"] - job_name: "cadvisor" static_configs: - targets: ["cadvisor:8080"]Como cada uno de nuestros observados ejecutará un
node-exportery uncadvisor, necesitaremos agregarlos a la lista de destinos:- job_name: "node_exporter" static_configs: - targets: ["node-exporter:9100", "observado1:9100", "observado2:9100", "observadoX:9100"] - job_name: "cadvisor" static_configs: - targets: ["cadvisor:8080", "observado1:8080", "observado2:8080", "observadoX:8080"]Reemplaza
observado1,observado2yobservadoXcon las direcciones IP de tus observados.Guarda el archivo y sal de tu editor.
Reinicia el contenedor de Prometheus:
docker restart prometheusAbre la interfaz web de Prometheus en
http://localhost:9090.Deberías ver los targets de
node_exporterycadvisoren la página deTargets. Si no los ves, espera unos segundos y actualiza la página, el scrapping puede tardar unos segundos.
En los nodos Observados
Los hosts observados serán observados por el observador. Ejecutarán los servicios node-exporter, cadvisor y promtail.
Necesitaremos configurar promtail para enviar registros al observador, ya que promtail es el agente que se encargará de enviar registros a Loki.
Abre el archivo
observability-lab/resources/promtail.ymlen tu editor favorito.Editaremos la sección
clientsdel archivo:clients: - url: http://localhost:3100/loki/api/v1/pushReemplaza
localhostcon la dirección IP de tu observador.Guarda el archivo y sal de tu editor.
Reinicia el contenedor de
promtail:docker restart promtailComo observado, ya no necesitaremos los servicios de Grafana, Loki, Prometheus y Blackbox. Los detendremos:
docker stop grafana loki prometheus blackboxAhora estaríamos listos para desplegar nuestra aplicación en los hosts observados.
Lo que has aprendido
Llegados a este punto, deberías entender cómo un clúster de nodos puede ser observado por una sola instancia de Grafana. Esta es la arquitectura que se utiliza comúnmente en entornos de producción.