GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Instrumentación de contenedores con el Elastic Stack

TheElastic Stack puede monitorear una variedad de datos generados por contenedores Docker. En esta guía, configurará un Linode para analizar y visualizar registros y métricas de contenedores utilizando herramientas como Kibana, Beats y Elasticsearch. Una vez que haya terminado, podrá configurar su sistema para recopilar datos para contenedores adicionales automáticamente.

Antes de comenzar

  1. Si aún no lo ha hecho, cree una cuenta de Linode y una instancia de cómputo. Consulte nuestras guías Introducción a Linode y Creación de una instancia informática.

  2. Siga nuestra guía de configuración y protección de una instancia informática para actualizar su sistema. También puede establecer la zona horaria, configurar su nombre de host, crear una cuenta de usuario limitada y fortalecer el acceso SSH.

  3. Siga nuestra Guía UFW para instalar y configurar un firewall (UFW) en su sistema basado en Ubuntu o Debian, o nuestra Guía FirewallD para sistemas basados ​​en rpm o CentOS. Después de configurar el firewall, asegúrese de que los puertos necesarios estén abiertos para continuar con las conexiones a través de SSH para el resto de esta guía:

    sudo ufw allow ssh
    
  4. Instale Docker en su Linode siguiendo la guía de instalación del proyecto Docker.

Nota Los servicios de esta guía se vinculan solo con el host local, lo que significa que no se puede acceder a ellos fuera de Linode desde hosts remotos. Esto garantiza que la API REST de Elasticsearch permanezca privada para localhost y no sea accesible de forma remota desde Internet. Si toma medidas más allá de esta guía para configurar aún más Elasticsearch y los componentes relacionados, asegúrese de que su firewall esté en su lugar y bloquee correctamente el tráfico a los nodos de Elasticsearch y Kibana desde Internet (puertos 9200 y 9300 para Elasticsearch y 5601 para Kibana) para mantenerlos. correctamente asegurado.

Instalar componentes de Elastic Stack

Antes de configurar su sistema para monitorear contenedores en ejecución, primero instale los componentes necesarios para recopilar y enviar registros y métricas a Elasticsearch.

Distribuciones basadas en Debian

Configurar el elástico apt repositorio e instalar los paquetes necesarios y sus dependencias.

  1. Instale la clave oficial de firma del paquete APT de Elastic:

    wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
    
  2. Instale el apt-transport-https paquete, que se requiere para recuperar deb paquetes servidos a través de HTTPS:

    sudo apt-get install apt-transport-https
    
  3. Agregue la información del repositorio APT a la lista de fuentes de su servidor:

    echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
    
  4. Actualizar la lista de paquetes disponibles:

    sudo apt-get update
    
  5. Antes de instalar Elasticsearch, el tiempo de ejecución de Java debe estar presente. En sistemas como Ubuntu 18.04 LTS, usando default-jre-headless paquete instala un tiempo de ejecución de Java compatible:

    sudo apt-get install default-jre-headless
    
  6. Instale Elasticsearch, Kibana, Filebeat y Metricbeat:

    sudo apt-get install elasticsearch kibana filebeat metricbeat
    

Distribuciones basadas en Redhat

Configurar las rpm repositorio para yum y herramientas de embalaje relacionadas.

  1. Confíe en la clave de firma de Elastic:

    sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
    
  2. Cree una configuración de repositorio de yum para usar el repositorio de Elastic yum:

    Archivo:/ etc/yum.repos.d/elasticsearch.repo
  3. Actualice el yum caché para garantizar que los nuevos paquetes estén disponibles:

    sudo yum update
    
  4. Antes de instalar Elasticsearch, el tiempo de ejecución de Java debe estar presente. En CentOS, por ejemplo, se puede instalar un tiempo de ejecución Java compatible usando un paquete OpenJDK sin interfaz gráfica:

    sudo yum install java-11-openjdk-headless
    
  5. Instale Elasticsearch, Kibana, Filebeat y Metricbeat:

    sudo yum install elasticsearch kibana filebeat metricbeat
    
  6. Configure el Elastic Stack

    Para descubrir y capturar correctamente las métricas de los contenedores, se debe configurar cada componente de la pila de Elastic.

    Búsqueda elástica

    En el archivo /etc/elasticsearch/jvm.options dos valores que comienzan con -Xm debe ser sin comentar. Esta configuración indica a la JVM que asigne una cantidad específica de memoria. El valor recomendado para esta configuración es el 50 % de la RAM disponible del sistema. Por ejemplo, en un sistema con 1G de RAM, esta configuración debería ser:

    Archivo:/ etc/elasticsearch/jvm.options
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    [elasticsearch-6.x]
    name=Elastic repository for 6.x packages
    baseurl=https://artifacts.elastic.co/packages/6.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md
        
    1. Antes de iniciar Elasticsearch, instale algunos complementos necesarios para procesar geoip y datos de agente de usuario.

      sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-user-agent
      sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-geoip
      
    2. Con esta configuración en su lugar, inicie elasticsearch servicio.

      sudo systemctl start elasticsearch
      
    3. Espere un breve período de tiempo para que se inicie Elasticsearch, luego verifique que Elasticsearch responda a través de la API REST:

      curl http://localhost:9200
      

      Debería ver un resultado similar al siguiente:

      {
        "name" : "iQEk_-M",
        "cluster_name" : "elasticsearch",
        "cluster_uuid" : "tQeLgbKrTNOp2AoqdmTItw",
        "version" : {
              "number" : "6.5.4",
              "build_flavor" : "default",
              "build_type" : "deb",
              "build_hash" : "d2ef93d",
              "build_date" : "2018-12-17T21:17:40.758843Z",
              "build_snapshot" : false,
              "lucene_version" : "7.5.0",
              "minimum_wire_compatibility_version" : "5.6.0",
              "minimum_index_compatibility_version" : "5.0.0"
        },
        "tagline" : "You Know, for Search"
      }
      

      Elasticsearch está listo para indexar documentos.

    Kibana

    La mayoría de las configuraciones predeterminadas de Kibana son adecuadas para los propósitos de esta guía. No son necesarios cambios de configuración; inicia el kibana servicio.

    sudo systemctl start kibana
    

    Filebeat

    Utilice la ventana acoplable docker entrada para habilitar Filebeat para capturar contenedores iniciados dinámicamente. Esto alivia la necesidad de especificar las rutas de los archivos de registro de Docker y, en su lugar, permite que Filebeat descubra los contenedores cuando se inician.

    1. Agregue lo siguiente cerca de la parte superior del archivo de configuración de Filebeat para instruir al filebeat daemon para capturar los registros del contenedor de Docker. Estas líneas deben ingresarse bajo la clave de configuración filebeat.inputs :

      Archivo:/ etc/filebeat/filebeat.yml
    1
    2
    
    -Xms512m
    -Xmx512m
  7. Descomente la siguiente línea y cambie su valor a true , que permitirá a Filebeat crear paneles de Kibana asociados para registros de contenedores capturados:

    Archivo:/ etc/filebeat/filebeat.yml
  8. 1
    2
    3
    4
    5
    6
    
    filebeat.inputs:
    - type: docker
      containers.ids:
      - '*'
      processors:
      - add_docker_metadata: ~
  9. Finalmente, agregue lo siguiente autodiscover configuración hasta el final de filebeat.yml archivo:

    Archivo:/ etc/filebeat/filebeat.yml
  10. 1
    
    setup.dashboards.enabled: true
  11. Habilite el nginx módulo, que se utilizará más adelante en este tutorial:

    sudo /usr/bin/filebeat modules enable nginx
    
  12. El resto del archivo de configuración indicará a Filebeat que envíe registros a la instancia de Elasticsearch que se ejecuta localmente, que se puede dejar sin cambios. Iniciar Filebeat:

    sudo systemctl start filebeat
    
  13. ritmométrico

    Al igual que Filebeat, configure Metricbeat de manera similar para descubrir dinámicamente contenedores en ejecución para monitorear.

    1. Metricbeat utiliza un módulo para recopilar métricas de contenedores. Ejecute el siguiente comando para habilitar docker y nginx módulos:

      sudo /usr/bin/metricbeat modules enable docker
      sudo /usr/bin/metricbeat modules enable nginx
      
    2. Descomente la siguiente línea y cambie su valor a true , que permitirá a Metricbeat crear paneles de Kibana asociados para registros de contenedores capturados:

      Archivo:/ etc/metricbeat/metricbeat.yml
    1
    2
    3
    4
    
    filebeat.autodiscover:
      providers:
        - type: docker
          hints.enabled: true
  14. El resto del archivo de configuración indicará a Metricbeat que envíe registros a la instancia de Elasticsearch que se ejecuta localmente, que se puede dejar sin cambios. Ahora se puede iniciar Metricbeat:

    sudo systemctl start metricbeat
    
  15. Visualización de registros y métricas de contenedores

    El siguiente ejemplo demuestra cómo Filebeat y Metricbeat capturan automáticamente los datos del contenedor a los que se puede acceder desde Kibana.

    1. Para comenzar, ejecute un contenedor nginx Docker simple en su Linode.

      sudo docker run --name nginx -P -d --label co.elastic.logs/module=nginx nginx
      
      • Este comando ejecutará el servidor web en segundo plano y expondrá el servicio HTTP de escucha en un número de puerto aleatorio.
      • La --label El argumento es una sugerencia para permitir que Filebeat analice automáticamente el formato de registro de ciertos tipos de contenedores, que en este caso es nginx.
    2. Para abrir una conexión segura a Kibana, abra un túnel SSH al puerto 5601 en su Linode.

      ssh -L 5601:localhost:5601 <[email protected]>
      
      • Reemplazar <[email protected]> con el nombre de usuario y la dirección IP de tu Linode.
      • Esto reenvía el puerto 5601 localmente al puerto 5601 en tu Linode.
      • Una guía completa para usar túneles SSH en una variedad de plataformas está disponible en nuestra guía Crear un túnel SSH para MySQL.
    3. Vaya a http://localhost:5601 en su navegador, que mostrará la siguiente página de destino inicial para Kibana.

    4. Haga clic en Administración enlace en la barra lateral inferior izquierda. Se mostrará la página siguiente. Luego, haga clic en Patrones de índice para ingresar a la página de configuración de Patrón de Índice.

    5. Los patrones de índice dictan cómo Kibana entiende los índices que están presentes en Elasticsearch. Para que algunas visualizaciones se muestren correctamente, primero se debe configurar un patrón de índice predeterminado. Seleccione filebeat-* en el lado izquierdo de la página para configurar el patrón de índice filebeat-*.

    6. Haz clic en el icono de estrella en la esquina superior derecha de la página para establecer este patrón de índice como predeterminado en Kibana.

      Kibana ahora está correctamente configurado con un patrón de índice predeterminado.

    7. Filebeat y Metricbeat están configurados para configurar Elasticsearch y Kibana automáticamente, de modo que los paneles y los patrones de índice se carguen y estén listos para usarse. Haga clic en Panel de control en la barra lateral izquierda, que muestra la siguiente página.

    8. En la barra de búsqueda, escriba "contenedor" para mostrar paneles rellenados previamente para los contenedores del sistema. Haga clic en Resumen de [Metricbeat Docker] enlace.

    9. La visión general de [Metricbeat Docker] Se cargará el panel de control, que muestra varios aspectos de las métricas de contenedores que se están ejecutando actualmente. El panel muestra una lista de contenedores en ejecución, el número total de contenedores en ejecución, en pausa y detenidos, así como métricas sobre el consumo de recursos del contenedor.

      Desplazándose hacia abajo, también muestra gráficos que indican el uso de recursos del contenedor a lo largo del tiempo, incluida la CPU, la memoria y la actividad de la red.

    10. Antes de pasar a otras visualizaciones de Kibana, genere algo de actividad de registro desde nginx enviando solicitudes HTTP al contenedor de escucha. Primero, encuentre qué puerto está escuchando el contenedor para solicitudes al usar docker comando:

      docker ps
      

      Debería ver un resultado similar al siguiente:

      CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
      3f0c6d284f1f        nginx               "nginx -g 'daemon of…"   23 minutes ago      Up 23 minutes       0.0.0.0:32769->80/tcp   nginx
      

      A partir de este resultado, sabemos que se puede acceder al servidor HTTP emitiendo solicitudes al puerto 32769, que se reenvía al puerto 80 en el contenedor. El puerto de su sistema puede ser diferente.

    11. Envía varias solicitudes a este puerto usando el curl comando, reemplazando <port> con el número encontrado en el paso anterior:

      for i in $(seq 1 10) ; do curl localhost:<port> ; done
      
    12. Ahora hay varios registros en Kibana para este contenedor. Haz clic en Descubrir en la barra lateral izquierda en Kibana. Muestra la siguiente pantalla.

      • El histograma cerca de la parte superior de la página indica el número total de registros de contenedores a lo largo del tiempo.
      • La tabla debajo del gráfico contiene el contenido de los registros individuales.
      • Al hacer clic en las flechas a la izquierda de la marca de tiempo de cada registro, se mostrará la información de cada registro capturado.
    13. Prueba a volver a emitir el for ... comando para enviar otros diez curl solicitudes al contenedor y observe cómo cambia el histograma de registro para reflejar los nuevos registros.

    14. Haz clic en Panel de control en la barra lateral izquierda, luego haga clic en él por segunda vez para ingresar a la pantalla de selección del tablero. Busque "nginx" en la barra de búsqueda.

    15. Haga clic en Registros de acceso y errores de [Filebeat Nginx] enlace, que mostrará un tablero con una cantidad de visualizaciones relacionadas con la actividad de nginx.

    Módulos Adicionales

    Este tutorial ha demostrado cómo Filebeat y Metricbeat pueden capturar automáticamente métricas y registros de contenedores sin la necesidad de configurar explícitamente rutas o configuraciones de archivos de registro. Además de los ejemplos de nginx presentados aquí, los enlaces adicionales proporcionados a continuación enumeran otros módulos que se pueden cargar en Filebeat y Metricbeat para otros servicios.

    Más información

    Es posible que desee consultar los siguientes recursos para obtener información adicional sobre este tema. Si bien estos se proporcionan con la esperanza de que sean útiles, tenga en cuenta que no podemos garantizar la precisión o la puntualidad de los materiales alojados externamente.

    • Módulos Filebeat
    • Módulos de Metricbeat
    • Monitoreo de contenedores elásticos
    • Referencia de la línea de comandos de Docker

    Docker
    1. Cómo instalar WordPress con Docker en Ubuntu

    2. Instale ModSecurity con Apache en un contenedor Docker

    3. ¿Cómo instalar la impresora con Ubuntu?

    4. Cómo instalar Docker e implementar una pila LAMP

    5. Cómo instalar Ghost en Debian con Nginx

    Instale WordPress con LEMP Stack en Ubuntu 20.04

    Instale phpMyAdmin con LAMP Stack en Ubuntu 18.04 LTS

    Cómo instalar LAMP Stack en CentOS 8

    Cómo instalar WordPress con LAMP Stack en Ubuntu 20.04

    Instale WordPress con LEMP Stack en Ubuntu 20.04

    Trabajar con Docker Containers desde la línea de comandos

      1
      
      setup.dashboards.enabled: true