Taller de Observabilidad Help

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

Arquitectura del clúster

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.

  1. Abre el archivo observability-lab/resources/prometheus.yml en tu editor favorito.

  2. Editaremos la sección scrape_configs del archivo:

    - job_name: "node_exporter" static_configs: - targets: ["node-exporter:9100"] - job_name: "cadvisor" static_configs: - targets: ["cadvisor:8080"]
  3. Como cada uno de nuestros observados ejecutará un node-exporter y un cadvisor, 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, observado2 y observadoX con las direcciones IP de tus observados.

  4. Guarda el archivo y sal de tu editor.

  5. Reinicia el contenedor de Prometheus:

    docker restart prometheus
  6. Abre la interfaz web de Prometheus en http://localhost:9090.

    Deberías ver los targets de node_exporter y cadvisor en la página de Targets. 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.

  1. Abre el archivo observability-lab/resources/promtail.yml en tu editor favorito.

  2. Editaremos la sección clients del archivo:

    clients: - url: http://localhost:3100/loki/api/v1/push
  3. Reemplaza localhost con la dirección IP de tu observador.

  4. Guarda el archivo y sal de tu editor.

  5. Reinicia el contenedor de promtail:

    docker restart promtail
  6. Como observado, ya no necesitaremos los servicios de Grafana, Loki, Prometheus y Blackbox. Los detendremos:

    docker stop grafana loki prometheus blackbox
  7. Ahora 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.

Last modified: 31 January 2024