[TP] Instalación de Filebeat
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 :Procederemos a la instalación de Filebeat utilizando la tecnología Docker.
- Instalar Filebeat
- Identificar los archivos y directorios importantes
- Uso de los módulos
- Uso avanzado de etiquetas (labels)
-
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.-
Las carpetas
Debe proporcionar la lista de carpetas necesarias para el correcto funcionamiento de Filebeat en un entorno Docker. -
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. -
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
Subproyecto 1
Lo que vas a aprender en esta sección :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).
- 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)
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
-
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ónhttp://registry.tp.elearning.rousseltm.fr:5000INFORMACIÓ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.
-
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
-
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: -
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ónhttp://registry.tp.elearning.rousseltm.fr:5000 -
Escaneo de vulnerabilidades
Debe escanear la imagen importada para comprobar si tiene vulnerabilidades frente a los fallos CVE. -
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'
-
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.-
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
-
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
Articles recommandés
Descubra cómo configurar el perfilado continuo (Continuous Profiling) en sus ...
Glossaire de la formation
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...
Agentes ligeros instalados en servidores para recopilar diversos tipos de datos (logs con Filebeat, métricas con Metricbeat) y enviarlos a Elasticsear...
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.
Programa de recopilación con numerosas funciones locales (procesamiento, filtrado, almacenamiento en búfer) que consume más recursos del sistema. Ejem...
Archivo de registro que guarda las solicitudes procesadas por un servidor web (Apache, Nginx, Lighttpd, etc.). Permite rastrear la actividad del servi...
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...
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.
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...
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...
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...
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...
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...
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...