[TP] Instalación de Filebeat


Para este TP, procederemos a la instalación de Filebeat con Docker

Lo que vas a aprender en este TP :
  • Instalar Filebeat
  • Identificar los archivos y directorios importantes
  • Uso de los módulos
  • Uso avanzado de etiquetas (labels)
  • Desplegar un registro Harbor
  • Importar una imagen en un registro
  • Buscar vulnerabilidades en una imagen
  • Configurar la sobreescritura de un archivo docker compose
  • Uso avanzado de etiquetas (labels) (Implementación en el Proyecto 2)

Introducción


Lo que vas a aprender en esta sección :
  • Instalar Filebeat
  • Identificar los archivos y directorios importantes
  • Uso de los módulos
  • Uso avanzado de etiquetas (labels)

Procederemos a la instalación de Filebeat utilizando la tecnología Docker.
  1. Procedimiento
    Debe proporcionar el enlace para encontrar todos los procedimientos de instalación de Filebeat, así como el necesario para instalarlo en un SO tipo Linux.

Docker

Procederemos a instalar Filebeat sobre Docker con un archivo docker compose.
  1. Las carpetas
    Debe proporcionar la lista de carpetas necesarias para el correcto funcionamiento de Filebeat en un entorno Docker.
  2. Modo SWARM
    Debe configurar el clúster de Docker con el modo SWARM activado. La máquina 'manager' debe ser el administrador del clúster y las máquinas 'workerX' deben ser los trabajadores (workers) del clúster. Como las máquinas tienen varias direcciones IP, usaremos la IP 192.168.56.2 como dirección de gestión del plano de control.
    RECORDATORIO: En todas las máquinas creadas por Vagrant hay una carpeta /vagrant que corresponde al montaje de la carpeta donde se encuentra el archivo Vagrantfile: por tanto, el contenido de la carpeta 6_projet. Puede usar esta carpeta para compartir archivos entre las máquinas. Por ejemplo, el archivo que contiene los tokens para unirse al clúster. Evidentemente, en Producción, habrá que usar una solución más segura
    Debe proporcionar el comando de Docker que permitirá guardar el token para unirse al clúster como trabajador en /vagrant/swarm-token-worker.
  3. Red compartida
    Debe crear las siguientes redes
    • common-proxy: para la comunicación entre los contenedores a través del proxy. Se usará completamente en el siguiente TP con el uso de Traefik.
    • common-observability: para la comunicación entre los contenedores de observabilidad
    Haremos un despliegue mixto para manipular la comunicación entre los subproyectos desplegados con el modo SWARM y aquellos sin el modo SWARM. Por tanto, hay que configurar el parámetro adecuado en la red 'common-proxy' al momento de crearla.

Subproyecto 1


Lo que vas a aprender en esta sección :
  • Desplegar un registro Harbor
  • Importar una imagen en un registro
  • Buscar vulnerabilidades en una imagen
  • Configurar la sobreescritura de un archivo docker compose
  • Uso avanzado de etiquetas (labels) (Implementación en el Proyecto 2)

Crearemos un registro Docker con Harbor en la máquina manager. Lo ejecutaremos en el dominio registry.tp.elearning.rousseltm.fr. Para este primer proyecto, lo implementaremos en HTTP en el puerto 5000 (puerto por defecto de los registros Docker en HTTP).
RECORDATORIO: El sitio oficial de Harbor https://goharbor.io/ y puede revisar el video de presentación de Harbor en esta dirección: Presentación y despliegue de Harbor
  1. Despliegue
    Debe instalar Harbor con el servicio trivy en el puerto 5000. Si todo es correcto, debería poder acceder desde la máquina anfitriona a Harbor en la dirección
    http://registry.tp.elearning.rousseltm.fr:5000
    INFORMACIÓN: En la carpeta 6_projet, tiene una carpeta llamada 'projects' cuyo contenido se montará automáticamente en /opt/projects en todas las máquinas virtuales. Así que puede usarla para gestionar los archivos de sus subproyectos. Recomendamos 1 carpeta por subproyecto.
  2. Personalización
    El script install.sh generó un archivo docker-compose.yml, por lo que si queremos modificar parámetros tendremos que editar este archivo. Pero perderemos todas nuestras modificaciones con cada ejecución del script.

    Debe proponer una solución para evitar esto sabiendo que deseamos que el contenedor 'proxy' se conecte a la red 'common-proxy' y que tenga la etiqueta (label) dt.owner (Explicación de esta etiqueta de Dynatrace) con el valor 'equipe1'. En la misma línea, añada una etiqueta para indicar a Filebeat que no tenga en cuenta sus registros (logs).

    Inicialmente, lo desplegaremos simplemente con 'docker compose' para probar, y luego en forma de stack (pila) 'docker stack'.

    ATENCIÓN: La sobreescritura (override) también debe ser tenida en cuenta por el script install.sh

Subproyecto 2

  1. Build de la imagen
    Debe crear un Dockerfile para construir una imagen para la aplicación GO a continuación, que se llamará simple-app y tendrá la etiqueta 1.0: Esta aplicación debe generar un binario '/app/simple-app' y usar '/app' como directorio de trabajo.
  2. Adición de la imagen al registro Harbor
    Debe enviar esta imagen al proyecto (Explicación sobre el concepto de proyecto en Harbor) 'library' en Harbor. Elegimos 'library' porque es el proyecto Público predeterminado. Así, la imagen podrá ser usada en otros proyectos (Ver TP siguiente). Como recordatorio tras su instalación, Harbor está disponible en la dirección
    http://registry.tp.elearning.rousseltm.fr:5000
  3. Escaneo de vulnerabilidades
    Debe escanear la imagen importada para comprobar si tiene vulnerabilidades frente a los fallos CVE.
  4. Despliegue Docker
    La configuración a construir debe satisfacer estas necesidades:
    • Aplicación 2-tier: go y redis
    • Los servicios solo deben ejecutarse en los trabajadores (workers). Esta configuración debe ser externalizada para poder compartirla con otras aplicaciones en la misma situación.
    • Los servicios deben usar las últimas versiones (en producción use versiones fijas) de las imágenes oficiales y la aplicación GO usar la imagen construida previamente y disponible en Harbor.
    • 1 instancia de cada servicio
    • El servicio GO debe exportar la variable de entorno APP='APP1'
    • El servicio GO debe exportar la variable de entorno TASK_SLOT en la que debe colocar el número de réplica del contenedor (Las plantillas (templates)).
    • El servicio de la aplicación go debe estar conectado a la red 'common-proxy'
  5. Reparto de carga (Load balancing)
    Debe comprobar que cuando llama a la URL de la aplicación (http://tp.elearning.rousseltm.fr) realmente devuelve esta página y que los campos resaltados cambian cuando se actualiza la página, y que se alterna bien entre los dos contenedores:

Subproyecto 3

Subproyecto de observabilidad que consta de Prometheus, Grafana, Node exporter y cAdvisor. Este subproyecto es el de observabilidad y, por tanto, nos permitirá tener visibilidad sobre todo nuestro proyecto.
  1. Despliegue Docker
    La configuración a construir debe satisfacer estas necesidades:
    • Hacer accesible Grafana en el puerto 3000
    • Hacer accesible Prometheus en el puerto 9090
  2. Configuración de los servicios
    La configuración a construir debe satisfacer estas necesidades:
    • Importar automáticamente en Grafana la fuente de datos (datasource) de Prometheus y Elasticsearch
    • Importar los paneles (dashboards) con el ID: 609
    • Recopilar las métricas de Traefik
    • Recopilar las métricas de todos los nodos del clúster
    • Recopilar las métricas de todos los contenedores

Nivel de dificultad: (2/5)

Articles recommandés

Grafana Alloy: Perfilado Continuo con Pyroscope

Descubra cómo configurar el perfilado continuo (Continuous Profiling) en sus ...

Glossaire de la formation

Observabilidad

La capacidad de conocer el estado interno de un sistema a partir de los datos que emite.Estos datos se clasifican en 3 pilares: logs (registros)métric...

Beats

Agentes ligeros instalados en servidores para recopilar diversos tipos de datos (logs con Filebeat, métricas con Metricbeat) y enviarlos a Elasticsear...

Agente ligero

Programa de recopilación de datos instalado en un sistema host, diseñado para consumir un mínimo de recursos (CPU, RAM). Ejemplo: Filebeat, Promtail.

Agente pesado

Programa de recopilación con numerosas funciones locales (procesamiento, filtrado, almacenamiento en búfer) que consume más recursos del sistema. Ejem...

Access Log (Registro de acceso)

Archivo de registro que guarda las solicitudes procesadas por un servidor web (Apache, Nginx, Lighttpd, etc.). Permite rastrear la actividad del servi...

Client IP (IP del Cliente)

La dirección IP del usuario que realiza la solicitud hacia el servidor web. Cuando un usuario pasa por un Load Balancer o un proxy (ej: Cloudflare), l...

Timestamp (Marca de tiempo)

La fecha y la hora exactas en las que el servidor recibió la solicitud.Configuración: %t en Apache, $time_local o $time_iso8601 en Nginx.

Request (Solicitud)

La línea de solicitud inicial del cliente. Generalmente incluye el método HTTP (ej: GET), la URL solicitada y la versión del protocolo HTTP.Configurac...

Status Code (Código de estado)

El código de estado HTTP final devuelto por el servidor al cliente (ej: 200 para un éxito, 404 para recurso no encontrado).Configuración: %>s en Apach...

Size (Tamaño)

El volumen de datos devuelto al cliente, medido en bytes (generalmente sin los encabezados HTTP).Configuración: %b u %O en Apache, $body_bytes_sent en...

Referrer (Referente)

La URL de la página web desde la que el cliente hizo clic o siguió un enlace para acceder al recurso actual.Configuración: %{Referer}i en Apache, $htt...

User-Agent

La información de identificación proporcionada por el cliente sobre su navegador, su sistema operativo y su dispositivo. Su estructura estándar a menu...

Response Time (Tiempo de respuesta)

El tiempo total que tarda el servidor en procesar la solicitud y devolver la respuesta al cliente.Configuración: %D (microsegundos) o %T (segundos) en...