One place for hosting & domains

      Elasticsearch

      Cómo instalar Elasticsearch, Logstash y Kibana (Elastic Stack) en Ubuntu 20.04


      Introducción

      Elastic Stack, previamente conocida como la pila ELK, es una colección de software de código abierto producido por Elastic que le permite buscar, analizar, y visualizar registros generados desde cualquier fuente y en cualquier formato, una práctica conocida como registro centralizado. El registro centralizado puede ser muy útil al intentar identificar problemas en sus servidores o aplicaciones, ya que le permite realizar búsquedas en todos sus registros desde un solo sitio. También es útil porque le permite identificar problemas que abarcan varios servidores vinculando sus registros durante un período de tiempo específico.

      Elastic Stack cuenta con cuatro componentes principales:

      • Elasticsearch: motor de búsqueda de RESTfuldistribuido que almacena todos los datos recopilados.
      • Logstash: componente de procesamiento de datos de Elastic Stack que envía datos entrantes a Elasticsearch.
      • Kibana: interfaz web para buscar y visualizar registros.
      • Beats: transportadores de datos ligeros de uso único que pueden enviar datos de cientos o miles de máquinas a Logstash o Elasticsearch.

      A través de este tutorial, instalará Elastic Stack en un servidor de Ubuntu 20.04. Aprenderá a instalar todos los componentes de Elastic Stack, incluido Filebeat, un Beat que se usa para reenviar y centralizar registros y archivos, y los configurará para recopilar y visualizar registros del sistema. Además, debido a que Kibana normalmente está solo disponible en el localhost, usaremos Nginx para hacer un proxy de modo que el acceso sea posible a través de un navegador web. Instalaremos todos estos componentes en un único servidor al que nos referiremos como nuestro servidor de pila de Elastic.

      Nota: Al instalar Elastic Stack, debe usar la misma versión en toda la pila. En este tutorial, instalaremos las últimas versiones de toda la pila que, al redactarse el presente artículo, eran Elasticsearch 7.7.1, Kibana 7.7.1, Logstash 7.7.1 y Filebeat 7.7.1.

      Requisitos previos

      Para completar este tutorial, necesitará lo siguiente:

      Además, debido a que Elastic Stack se usa para acceder a información valiosa sobre su servidor a la que no quiere que accedan usuarios no autorizados, es importante que mantenga su servidor protegido instalando un certificado TLS o SSL. Esto es opcional, pero se recomienda enfáticamente.

      Sin embargo, ya que eventualmente realizará cambios en su bloque de servidor de Nginx a lo largo de esta guía, es probable que tenga más sentido completar la guía de Let´s Encrypt sobre Ubuntu 20.04 al final del segundo paso de este tutorial. Teniendo eso en cuenta, si planea configurar Let´s Encrypt en su servidor, necesitará lo siguiente antes de hacerlo:

      • Un nombre de dominio totalmente apto (FQDN). Para este tutorial, se utilizará your_domain en todo momento. Puede adquirir un nombre de dominio en Namecheap, obtener uno gratuito en Freenom o utilizar un registrador de dominios de su elección.
      • Los dos registros DNS que se indican a continuación se han configurado para su servidor. Puede utilizar esta introducción al DNS de DigitalOcean para obtener más información sobre cómo agregarlos.

        • Un registro A con your_domain orientado a la dirección IP pública de su servidor.
        • Un registro A con www.your_domain orientado a la dirección IP pública de su servidor.

      Paso 1: Instalar y configurar Elasticsearch

      Los componentes de Elasticsearch no están disponibles en los repositorios de paquetes predeterminados de Ubuntu. Sin embargo, pueden instalarse con APT una vez que agregue la lista de fuentes de paquetes de Elastic.

      Todos los paquetes de Elasticsearch están firmados con la clave de firma de Elasticsearch para proteger su sistema contra la suplantación de paquetes. Su administrador de paquetes considerará confiables los paquetes autenticados con la clave. En este paso, importará la clave GPG pública de Elasticsearch y agregará la lista de fuentes de paquetes de Elastic para instalar Elasticsearch.

      Para comenzar, utilice cURL, la herramienta de línea de comandos para transferir datos con URL, para importar la clave GPG pública de Elasticsearch a APT. Tenga en cuenta que estamos usando los argumentos -fsSL para silenciar todos los progresos y posibles errores (excepto los de errores del servidor) y para permitir a cURL hacer una solicitud en una ubicación nueva si se redirige.  Canalice el resultado del comando cURL al programa apt-key, que añade la clave GPG pública a APT.

      • curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

      A continuación, agregue la lista de fuentes de Elastic al directorio sources.list.d, donde APT buscará nuevas fuentes:

      • echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

      A continuación, actualice sus listas de paquetes para que APT lea la nueva fuente de Elastic:

      Luego, instale Elasticsearch con este comando:

      • sudo apt install elasticsearch

      Ahora, Elasticsearch está instalada y lista para usarse. Utilice su editor de texto preferido para editar el archivo de configuración principal de Elasticsearch, elasticsearch.yml. En este caso, utilizaremos nano:

      • sudo nano /etc/elasticsearch/elasticsearch.yml

      Nota: El archivo de configuración de Elasticsearch se encuentra en formato YAML, lo que significa que debemos mantener el formato de sangrías. Asegúrese de no añadir espacios adicionales al editar este archivo.

      El archivo elasticsearch.yml ofrece opciones de configuración para su clúster, nodo, rutas, memoria, red, detección y puerta de enlace. La mayoría de estas opciones están preconfiguradas en el archivo, pero las puede cambiar según sus necesidades. Para los fines de nuestra demostración de una configuración de un solo servidor, modificaremos únicamente la configuración del host de red.

      Elasticsearch escucha el tráfico de todos los lugares en el puerto 9200. Es conveniente restringir el acceso externo a su instancia de Elasticsearch para evitar que terceros lean sus datos o cierren su clúster de Elasticsearch a través de su API REST.  Para restringir el acceso y, por lo tanto, aumentar la seguridad, busque la línea que especifica network.host, elimine los comentarios y reemplace su valor por localhost para que tenga el siguiente aspecto:

      /etc/elasticsearch/elasticsearch.yml

      . . .
      # ---------------------------------- Network -----------------------------------
      #
      # Set the bind address to a specific IP (IPv4 or IPv6):
      #
      network.host: localhost
      . . .
      

      Hemos especificado localhost para que Elasticsearch escuche en todas las interfaces y las IP vinculadas. Si desea que escuche únicamente en una interfaz específica, puede especificar su IP en lugar de localhost. Guarde y cierre elasticsearch.yml. Si utiliza nano, puede hacerlo pulsando CTRL+X, seguido de Y y, luego, ENTER.

      Estos son los ajustes mínimos con los que puede comenzar para usar Elasticsearch. Ahora, puede iniciar Elasticsearch por primera vez.

      Inicie el servicio de Elasticsearch con systemctl. Elasticsearch tardará unos minutos en iniciarse. Espere, de lo contrario, es posible que reciba errores de que no se puede conectar.

      • sudo systemctl start elasticsearch

      Luego, ejecute el siguiente comando para permitir que Elasticsearch se cargue cada vez que su servidor se inicia:

      • sudo systemctl enable elasticsearch

      Puede comprobar si su servicio de Elasticsearch se está ejecutando enviando una solicitud HTTP:

      • curl -X GET "localhost:9200"

      Visualizará una respuesta que mostrará información básica sobre su nodo local, similar a la siguiente:

      Output

      { "name" : "Elasticsearch", "cluster_name" : "elasticsearch", "cluster_uuid" : "qqhFHPigQ9e2lk-a7AvLNQ", "version" : { "number" : "7.7.1", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f", "build_date" : "2020-03-26T06:34:37.794943Z", "build_snapshot" : false, "lucene_version" : "8.5.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }

      Ahora que Elasticsearch está configurado y activo, instalaremos Kibana, el siguiente componente de Elastic Stack.

      Paso 2: Instalar y configurar el panel de Kibana

      De acuerdo con la documentación oficial, deberá instalar Kibana solo después de instalar Elasticsearch. La instalación en este orden garantiza que los componentes de los que depende cada producto estén correctamente implementados.

      Debido a que ya agregó la fuente de paquetes de Elastic en el paso anterior, puede instalar los componentes restantes de Elastic Stack usando apt:

      A continuación, habilite e inicie el servicio de Kibana:

      • sudo systemctl enable kibana
      • sudo systemctl start kibana

      Debido a que Kibana está configurado para escuchar solo en localhost, debemos configurar un proxy inverso para permitir el acceso externo a este. Utilizaremos Nginx para este propósito, que ya debería estar instalado en su servidor.

      Primero, utilice el comando openssl para crear un usuario administrativo de Kibana que usará para acceder a la interfaz web de Kibana. Como ejemplo, nombraremos esta cuenta kibanaadmin, pero, para garantizar una mayor seguridad, le recomendamos elegir un nombre no estándar para su usuario que sea difícil de adivinar.

      Con el siguiente comando se crearán el usuario y la contraseña administrativa de Kibana, y se almacenarán en el archivo htpasswd.users. Configurará Nginx para que requiera este nombre de usuario y contraseña, y lea este archivo de manera momentánea:

      • echo "kibanaadmin:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users

      Introduzca y confirme una contraseña cuando se le solicite. Recuerde este dato de inicio de sesión o tome nota de él, ya que lo necesitará para acceder a la interfaz web de Kibana.

      A continuación, crearemos un archivo de bloque de servidor de Nginx. Como ejemplo, nos referiremos a este archivo como your_domain, aunque podría resultarle más útil darle al suyo un nombre más descriptivo. Por ejemplo, si tiene un FQDN y registros de DNS configurados para este servidor, podría darle a este archivo el nombre de su FQDN.

      Cree el archivo de bloque de servidor de Nginx usando nano o su editor de texto preferido:

      • sudo nano /etc/nginx/sites-available/your_domain

      Añada el siguiente bloque de código al archivo, y asegúrese de actualizar your_domain para que coincida con la FQDN o la dirección IP pública de su servidor. Con este código, se configura Nginx para dirigir el tráfico HTTP de su servidor a la aplicación de Kibana, que escucha en localhost:5601. También se configura Nginx para leer el archivo htpasswd.users y requerir la autenticación básica.

      Tenga en cuenta que, si siguió todo el tutorial de los requisitos previos de Nginx, es posible que ya haya creado este archivo y lo haya completado con contenido. En ese caso, elimine todo el contenido existente en el archivo antes de añadir lo siguiente:

      /etc/nginx/sites-available/your_domain

      server {
          listen 80;
      
          server_name your_domain;
      
          auth_basic "Restricted Access";
          auth_basic_user_file /etc/nginx/htpasswd.users;
      
          location / {
              proxy_pass http://localhost:5601;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection 'upgrade';
              proxy_set_header Host $host;
              proxy_cache_bypass $http_upgrade;
          }
      }
      

      Cuando termine, guarde y cierre el archivo.

      A continuación, habilite la nueva configuración creando un enlace simbólico al directorio sites-enabled. Si ya creó un archivo de bloque de servidor con el mismo nombre en el requisito previo de Nginx, no necesitará ejecutar este comando:

      • sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/your_domain

      A continuación, compruebe que no haya errores de sintaxis en la configuración:

      Si se muestran errores en su resultado, regrese y verifique bien que el contenido que ingresó en su archivo de configuración se haya agregado correctamente. Una vez que vea syntax is ok en el resultado, reinicie el servicio de Nginx:

      • sudo systemctl reload nginx

      Si siguió la guía de configuración inicial para servidores, debería tener activado un firewall UFW. Para permitir las conexiones con Nginx, podemos ajustar las reglas escribiendo lo siguiente:

      • sudo ufw allow 'Nginx Full'

      Nota: Si siguió el tutorial de los requisitos previos de Nginx, es posible que haya creado una regla de UFW que admita el perfil Nginx HTTP en el firewall. Debido a que el perfil Nginx Full admite el paso del tráfico HTTP y HTTPS por el firewall, puede eliminar de forma segura la regla que creó en el tutorial de los requisitos previos. Hágalo con el siguiente comando:

      • sudo ufw delete allow 'Nginx HTTP'

      Con esto, el acceso a Kibana será posible a través de su FQDN o de la dirección IP pública de su servidor de Elastic Stack. Puede comprobar la página de estado del servidor de Kibana visitando la siguiente dirección e ingresando sus credenciales de inicio de sesión cuando se le soliciten:

      http://your_domain/status
      

      En esta página de estado, se muestra información sobre el uso de los recursos del servidor y se enumeran los complementos instalados.

      Página de estado de |Kibana

      Nota: Como se indica en la sección de requisitos previos, se le recomienda habilitar SSL o TLS en su servidor. Ahora, puede seguir la guía de Let’s Encrypt para obtener un certificado SSL gratuito para Nginx en Ubuntu 20.04. Una vez que obtenga sus certificados SSL y TLS, puede volver y completar este tutorial.

      Ahora que el panel de Kibana está configurado, instalaremos el siguiente componente: Logstash.

      Paso 3: Instalar y configurar Logstash

      Aunque es posible que Beats envíe datos de manera directa a la base de datos de Elasticsearch, recomendamos usar Logstash para procesar los datos. Esto le permitirá, de forma más flexible, recopilar datos de diferentes fuentes, transformarlos en un formato común y exportarlos a otra base de datos.

      Instale Logstash con este comando:

      • sudo apt install logstash

      Después de instalar Logstash, puede seguir configurándolo. Los archivos de configuración de Logstash residen en el directorio /etc/logstash/conf.d. Para obtener más información sobre la sintaxis de configuración, puede consultar la referencia de configuración que proporciona Elastic. A medida que configura el archivo, le resultará útil pensar que Logstash es un proceso que toma datos en un extremo, los procesa de una u otra manera y los envía a su destino (en este caso, el destino es Elasticsearch). Un proceso de Logstash tiene dos elementos necesarios, input y output, y un elemento opcional, filter. Los complementos de entrada consumen datos de una fuente, los complementos del filtro procesan los datos, y los complementos de salida escriben los datos en un destino.

      Proceso de Logstash

      Cree un archivo de configuración llamado 02-beats-input.conf en el que establecerá su entrada de Filebeat:

      • sudo nano /etc/logstash/conf.d/02-beats-input.conf

      Introduzca la siguiente configuración de input. Con esto, se especifica una entrada de beats que escuchará en el puerto TCP 5044.

      /etc/logstash/conf.d/02-beats-input.conf

      input {
        beats {
          port => 5044
        }
      }
      

      Guarde y cierre el archivo.

      A continuación, cree un archivo de configuración llamado 30-elasticsearch-output.conf:

      • sudo nano /etc/logstash/conf.d/30-elasticsearch-output.conf

      Introduzca la siguiente configuración de output. Básicamente, con este resultado, se configura Logstash para almacenar los datos de Beats en Elasticsearch, que se ejecuta en localhost:9200, en un índice con el nombre del Beat utilizado. El Beat utilizado en este tutorial es Filebeat:

      /etc/logstash/conf.d/30-elasticsearch-output.conf

      output {
        if [@metadata][pipeline] {
          elasticsearch {
          hosts => ["localhost:9200"]
          manage_template => false
          index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
          pipeline => "%{[@metadata][pipeline]}"
          }
        } else {
          elasticsearch {
          hosts => ["localhost:9200"]
          manage_template => false
          index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
          }
        }
      }
      
      
      

      Guarde y cierre el archivo.

      Pruebe su configuración de Logstash con el siguiente comando:

      • sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t

      Si no hay errores de sintaxis, su resultado mostrará Config Validation Result: OK. Existing Logstash después de unos segundos. Si no visualiza esto en su resultado, verifique cualquier error que aparezca en su resultado y actualice su configuración para corregirlo. Tenga en cuenta que recibirá advertencias de OpenJDK, pero no deberían causar ningún problema y pueden ignorarse.

      Si su prueba de configuración tiene éxito, inicie y habilite Logstash para implementar los cambios de configuración:

      • sudo systemctl start logstash
      • sudo systemctl enable logstash

      Ahora que Logstash se ejecuta de manera correcta y está totalmente configurado, instalaremos Filebeat.

      Paso 4: Instalar y configurar Filebeat

      La pila de Elastic utiliza varios transportadores de datos ligeros llamados Beats para recopilar datos de varias fuentes y transportarlos a Logstash o Elasticsearch. Aquí se muestran los Beats que ahora están disponibles en Elastic:

      • Filebeat: recopila y envía archivos de registro.
      • Metricbeat: recopila métricas de sus sistemas y servicios.
      • Packetbeat: recopila y analiza datos de red.
      • Winlogbeat: recopila registros de eventos de Windows.
      • Auditbeat: recopila datos del marco de trabajo de auditoría de Linux y supervisa la integridad de los archivos.
      • Heartbeat: supervisa la disponibilidad de los servicios con sondeo activo.

      En este tutorial, usaremos Filebeat para reenviar registros locales a nuestra pila de Elastic.

      Instale Filebeat usando apt:

      • sudo apt install filebeat

      A continuación, configure Filebeat para que se conecte a Logstash. Aquí, modificaremos el archivo de configuración de ejemplo que viene con Filebeat.

      Abra el archivo de configuración de Filebeat:

      • sudo nano /etc/filebeat/filebeat.yml

      Nota: Al igual que con Elasticsearch, el archivo de configuración de Filebeat está en formato YAML. Esto significa que una correcta sangría es esencial. Por lo tanto, asegúrese de usar el mismo número de espacios que se indican en estas instrucciones.

      Filebeat admite numerosas salidas, pero por lo general solo enviará eventos directamente a Elasticsearch o a Logstash para su procesamiento adicional. En este tutorial, usaremos Logstash para aplicar procesamiento adicional a los datos recopilados por Filebeat. Filebeat no tendrá que enviar datos de manera directa a Elasticsearch, por lo que desactivaremos esa salida. Para hacerlo, encuentre la sección output.elasticsearch y comente las siguientes líneas anteponiéndoles #:

      /etc/filebeat/filebeat.yml

      ...
      #output.elasticsearch:
        # Array of hosts to connect to.
        #hosts: ["localhost:9200"]
      ...
      

      A continuación, configure la sección output.logstash. Elimine el comentario de las líneas output.logstash: y hosts: ["localhost:5044"] quitando #. Con esto, se configurará Filebeat para establecer conexión con Logstash en su servidor de Elastic Stack en el puerto 5044, para el que especificamos una entrada de Logstash previamente:

      /etc/filebeat/filebeat.yml

      output.logstash:
        # The Logstash hosts
        hosts: ["localhost:5044"]
      

      Guarde y cierre el archivo.

      La funcionalidad de Filebeat puede ampliarse con módulos de Filebeat. En este tutorial usaremos el módulo de sistema, que recopila y analiza registros creados por el servicio de registro del sistema de distribuciones comunes de Linux.

      Vamos a habilitarlo:

      • sudo filebeat modules enable system

      Puede ver una lista de módulos habilitados y desactivados ejecutando lo siguiente:

      • sudo filebeat modules list

      Verá una lista similar a la siguiente:

      Output

      Enabled: system Disabled: apache2 auditd elasticsearch icinga iis kafka kibana logstash mongodb mysql nginx osquery postgresql redis traefik ...

      Por defecto, Filebeat está configurado para usar rutas predeterminadas para los registros syslog y de autorización. En el caso de este tutorial, no necesita aplicar cambios en la configuración. Puede ver los parámetros del módulo en el archivo de configuración /etc/filebeat/modules.d/system.yml.

      A continuación, debemos configurar los procesos de ingesta de Filebeat, que analizan los datos de registro antes de enviarlos a través de Logstash a Elasticsearch. Para cargar el proceso de ingesta para el módulo de sistema, introduzca el siguiente comando:

      • sudo filebeat setup --pipelines --modules system

      A continuación, cargue la plantilla de índice en Elasticsearch. Un índice de Elasticsearch es un conjunto de documentos que tienen características similares. Los índices se identifican con un nombre, que se utiliza para referirse al índice cuando se realizan varias operaciones dentro de este. La plantilla de índice se aplicará de forma automática al crear un nuevo índice.

      Para cargar la plantilla, utilice el siguiente comando:

      • sudo filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'

      Output

      Index setup finished.

      Filebeat incluye paneles de muestra de Kibana que le permiten visualizar datos de Filebeat en Kibana. Para poder usar los paneles, deberá crear el patrón de índice y cargar los paneles en Kibana.

      Al cargarse los paneles, Filebeat se conecta a Elasticsearch para verificar la información de la versión. Para cargar paneles cuando se habilite Logstash, deberá desactivar el resultado de Logstash y habilitar el de Elasticsearch:

      • sudo filebeat setup -E output.logstash.enabled=false -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601

      Debería recibir un resultado similar a este:

      Output

      Overwriting ILM policy is disabled. Set `setup.ilm.overwrite:true` for enabling. Index setup finished. Loading dashboards (Kibana must be running and reachable) Loaded dashboards Setting up ML using setup --machine-learning is going to be removed in 8.0.0. Please use the ML app instead. See more: https://www.elastic.co/guide/en/elastic-stack-overview/current/xpack-ml.html Loaded machine learning job configurations Loaded Ingest pipelines

      Ahora podrá iniciar y habilitar Filebeat:

      • sudo systemctl start filebeat
      • sudo systemctl enable filebeat

      Si configuró su pila de Elastic de manera correcta, Filebeat iniciará el envío de sus registros syslog y de autorización a Logstash, que a su vez cargará esos datos en Elasticsearch.

      Para verificar que Elasticsearch realmente reciba estos datos, consulte el índice de Filebeat con este comando:

      • curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

      Debería recibir un resultado similar a este:

      Output

      ... { { "took" : 4, "timed_out" : false, "_shards" : { "total" : 2, "successful" : 2, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 4040, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : "filebeat-7.7.1-2020.06.04", "_type" : "_doc", "_id" : "FiZLgXIB75I8Lxc9ewIH", "_score" : 1.0, "_source" : { "cloud" : { "provider" : "digitalocean", "instance" : { "id" : "194878454" }, "region" : "nyc1" }, "@timestamp" : "2020-06-04T21:45:03.995Z", "agent" : { "version" : "7.7.1", "type" : "filebeat", "ephemeral_id" : "cbcefb9a-8d15-4ce4-bad4-962a80371ec0", "hostname" : "june-ubuntu-20-04-elasticstack", "id" : "fbd5956f-12ab-4227-9782-f8f1a19b7f32" }, ...

      Si su resultado no muestra coincidencias, Elasticsearch no está cargando ningún registro bajo el índice que buscó, y deberá verificar su configuración en busca de errores. Si obtuvo el resultado esperado, continúe con el siguiente paso, en el que veremos la manera de explorar algunos de los paneles de Kibana.

      Paso 5: Explorar los paneles de Kibana

      Volvamos a la interfaz web de Kibana que instalamos antes.

      En un navegador web, diríjase al FQDN o a la dirección IP pública de su servidor de Elastic Stack. Si su sesión se ha interrumpido, deberá volver a introducir las credenciales que definió en el paso 2. Una vez que haya iniciado sesión, debería recibir la página de inicio de Kibana:

      Página de inicio de Kibana

      Haga clic en el enlace Descubrir de la barra de navegación a la izquierda (puede tener que hacer clic en el icono Expandir de la parte inferior izquierda para ver los elementos del menú de navegación). En la página Discover, seleccione el patrón de índice predeterminado de filebeat-* para ver datos de Filebeat. Por defecto, esto le mostrará todos los datos de registro de los últimos 15 minutos. Visualizará un histograma con eventos de registro y algunos mensajes de registro a continuación:

      Página de Discover

      Aquí puede buscar y explorar sus registros y también personalizar su panel. Sin embargo, en este punto, no habrá muchos registros porque solo recopila syslogs de su servidor de Elastic Stack.

      Utilice el panel del lado izquierdo para acceder a la página Dashboard y buscar los paneles de Filebeat System. Ahí puede seleccionar los paneles de muestra que vienen con el módulo system de Filebeat.

      Por ejemplo, puede ver estadísticas detalladas basadas en sus mensajes de syslog:

      Panel Syslog

      También puede ver los usuarios que utilizaron el comando sudo y el momento en que lo hicieron:

      Panel Sudo

      Kibana tiene muchas otras características, como graficar y filtrar. No dude en explorarlas.

      Conclusión

      A través de este tutorial, aprendió a instalar y configurar Elastic Stack para recopilar y analizar registros del sistema. Recuerde que puede enviar casi cualquier tipo de datos de registro o de índice a Logstash usando Beats, pero los datos se vuelven aún más útiles si se analizan y estructuran con un filtro de Logstash, ya que transforma los datos en un formato uniforme que Elasticsearch puede leer de forma sencilla.



      Source link

      Comment installer Elasticsearch, Logstash et Kibana (Elastic Stack) sur Ubuntu 20.04


      Introduction

      Elastic Stack – anciennement connue sous le nom de ELK Stack – est une collection de logiciels open-source produite par Elastic qui vous permet de rechercher, d’analyser et de visualiser des journaux générés à partir de n’importe quelle source dans n’importe quel format, une pratique connue sous le nom de journalisation centralisée. La journalisation centralisée peut être utile lorsque vous tentez d’identifier des problèmes avec vos serveurs ou vos applications, car elle vous permet de consulter tous vos journaux en un seul endroit. Elle est également utile car elle vous permet d’identifier les problèmes qui concernent plusieurs serveurs, en corrélant leurs journaux pendant une période spécifique.

      La Elastic Stack comporte quatre composants principaux :

      • Elasticsearch : un moteur de recherche RESTful distribué qui stocke toutes les données recueillies.
      • Logstash : le composant traitement des données de Elastic Stack, qui envoie les données entrantes à Elasticsearch.
      • Kibana : une interface web pour la recherche et la visualisation des journaux.
      • Beats : des expéditeurs de données légers et à usage unique qui peuvent envoyer des données provenant de centaines ou de milliers de machines à Logstash ou à Elasticsearch.

      Au cours de ce tutoriel, vous allez installer l’Elastic Stack sur un serveur Ubuntu 20.04. Vous apprendrez comment installer tous les composants de l’Elastic Stack – y compris Filebeat, un Beat utilisé pour transmettre et centraliser les journaux et les fichiers – et les configurer pour rassembler et visualiser les journaux du système. En outre, comme Kibana n’est normalement disponible que sur le localhost, nous utiliserons Nginx comme proxy afin qu’il soit accessible via un navigateur web. Nous installerons tous ces composants sur un seul serveur, que nous appellerons notre serveur Elastic Stack.

      Note : lorsque vous installez l’ElasticStack, vous devez utiliser la même version sur l’ensemble de la pile. Dans ce tutoriel, nous allons installer les dernières versions de la pile entière qui sont, au moment de la rédaction de ce document, Elasticsearch 7.7.1, Kibana 7.7.1, Logstash 7.7.1 et Filebeat 7.7.1.

      Conditions préalables

      Pour terminer ce tutoriel, vous aurez besoin des éléments suivants :

      En outre, comme l’Elastic Stack est utilisé pour accéder à des informations précieuses sur votre serveur auxquelles vous ne voudriez pas que des utilisateurs non autorisés accèdent, il est important que vous mainteniez votre serveur sécurisé en installant un certificat TLS/SSL. Cette action est facultative mais fortement encouragée.

      Cependant, comme vous allez finalement apporter des modifications à votre bloc serveur Nginx au cours de ce guide, il serait sans doute plus logique que vous exécutiez les étapes du guide Let’s Encrypt sur Ubuntu 20.04 à la fin de la deuxième étape de ce tutoriel. Dans cette optique, si vous prévoyez de configurer Let’s Encrypt sur votre serveur, vous devrez au préalable mettre en place les éléments suivants :

      Étape 1 — Installation et configuration d’Elasticsearch

      Les composants Elasticsearch ne sont pas disponibles dans les dépôts de paquets par défaut d’Ubuntu. Ils peuvent cependant être installés avec APT après avoir ajouté la liste des sources des paquets d’Elastic.

      Tous les paquets sont signés avec la clé de signature Elasticsearch afin de protéger votre système contre l’usurpation de paquets. Les paquets qui ont été authentifiés à l’aide de la clé seront considérés comme fiables par votre gestionnaire de paquets. Dans cette étape, vous allez importer la clé GPG publique d’Elasticsearch et ajouter la liste des sources du paquet Elastic afin d’installer Elasticsearch.

      Pour commencer, utilisez cURL, l’outil de ligne de commande pour le transfert de données avec URL pour importer la clé GPG publique d’Elasticsearch dans APT. Notez que nous utilisons les arguments -fsSL pour faire taire toute progression et toute erreur éventuelle (sauf en cas de panne de serveur) et pour permettre à cURL d’effectuer une requête sur un nouvel emplacement s’il est redirigé. Transmettez la sortie de la commande cURL au programme apt-key qui ajoute la clé GPG publique à l’APT.

      • curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

      Ensuite, ajoutez la liste des sources Elastic au répertoire sources.list.d où APT cherchera de nouvelles sources :

      • echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

      Ensuite, mettez à jour vos listes de paquets afin qu’APT puisse lire la nouvelle source Elastic :

      Installez ensuite Elasticsearch avec cette commande :

      • sudo apt install elasticsearch

      Elasticsearch est maintenant installé et prêt à être configuré. Utilisez votre éditeur de texte préféré pour modifier le fichier de configuration principal d’Elasticsearch, elasticsearch.yml. Ici, nous utiliserons nano :

      • sudo nano /etc/elasticsearch/elasticsearch.yml

      Note : Le fichier de configuration d’Elasticsearch est au format YAML, ce qui signifie que nous devons conserver le format d’indentation. Veillez à ne pas ajouter d’espaces supplémentaires lorsque vous modifiez ce fichier.

      Le site elasticsearch.yml fournit des options de configuration pour votre/vos cluster, nœud, chemins, mémoire, réseau, découverte et passerelle. La plupart de ces options sont préconfigurées dans le fichier, mais vous pouvez les modifier en fonction de vos besoins. Pour les besoins de notre démonstration d’une configuration à serveur unique, nous n’ajusterons les paramètres que pour l’hôte du réseau.

      Elasticsearch écoute le trafic de partout sur le port 9200. Vous voudrez limiter l’accès extérieur à votre instance Elasticsearch pour empêcher les personnes extérieures de lire vos données ou de fermer votre cluster Elasticsearch par le biais de son API REST. Pour restreindre l’accès et donc accroître la sécurité, trouvez la ligne qui précise network.host, décommentez-la et remplacez sa valeur parlocalhostcomme ceci :

      /etc/elasticsearch/elasticsearch.yml

      . . .
      # ---------------------------------- Network -----------------------------------
      #
      # Set the bind address to a specific IP (IPv4 or IPv6):
      #
      network.host: localhost
      . . .
      

      Nous avons spécifié localhost de sorte qu’Elasticsearch écoute sur toutes les interfaces et les IP liés. Si vous souhaitez qu’il n’écoute que sur une interface spécifique, vous pouvez spécifier son IP au lieu de localhost. Sauvegardez et fermez elasticsearch.yml. Si vous utilisez nanovous pouvez le faire en appuyant sur CTRL+X, suivi de Y et ensuite ENTRÉE. 

      Ce sont les paramètres minimums avec lesquels vous pouvez commencer pour utiliser Elasticsearch. Vous pouvez maintenant lancer Elasticsearch pour la première fois.

      Démarrez le service Elasticsearch avec systemctl. Donnez à Elasticsearch quelques instants pour démarrer. Dans le cas contraire, vous risquez d’obtenir des erreurs en ne pouvant pas vous connecter.

      • sudo systemctl start elasticsearch

      Ensuite, exécutez la commande suivante pour permettre à Elasticsearch de démarrer à chaque fois que votre serveur démarre :

      • sudo systemctl enable elasticsearch

      Vous pouvez tester si votre service Elasticsearch fonctionne en envoyant une requête HTTP :

      • curl -X GET "localhost:9200"

      Vous verrez une réponse montrant quelques informations de base sur votre nœud local, similaire à celle-ci :

      Output

      { "name" : "Elasticsearch", "cluster_name" : "elasticsearch", "cluster_uuid" : "qqhFHPigQ9e2lk-a7AvLNQ", "version" : { "number" : "7.7.1", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f", "build_date" : "2020-03-26T06:34:37.794943Z", "build_snapshot" : false, "lucene_version" : "8.5.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }

      Maintenant qu’Elasticsearch est opérationnel, installons Kibana, le prochain composant de l’Elastic Stack.

      Étape 2 — Installation et configuration du tableau de bord Kibana

      Selon la documentation officielle, vous ne devez installer Kibana qu’après avoir installé Elasticsearch. L’installation dans cet ordre garantit que les composants dont dépend chaque produit sont correctement en place.

      Comme vous avez déjà ajouté le paquet source Elastic dans l’étape précédente, vous pouvez simplement installer les composants restants de l’Elastic Stack en utilisant apt :

      Ensuite, activez et démarrez le service Kibana :

      • sudo systemctl enable kibana
      • sudo systemctl start kibana

      Étant donné que Kibana est configuré pour n’écouter que sur localhost, nous devons mettre en place un proxy inverse pour permettre un accès externe à celui-ci. Nous utiliserons pour cela Nginx, qui devrait déjà être installé sur votre serveur.

      Tout d’abord, utilisez la commande openssl pour créer un utilisateur administratif Kibana que vous utiliserez pour accéder à l’interface web de Kibana. À titre d’exemple, nous nommerons ce compte kibanaadmin, mais pour assurer une plus grande sécurité, nous vous recommandons de choisir un nom non standard pour votre utilisateur, un nom difficile à deviner.

      La commande suivante créera l’utilisateur et le mot de passe administratifs de Kibana, et les stockera dans le fichier htpasswd.users. Vous allez configurer Nginx pour qu’il vous demande ce nom d’utilisateur et ce mot de passe, puis lire ce fichier momentanément :

      • echo "kibanaadmin:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users

      Entrez et confirmez un mot de passe à l’invite. Rappelez-vous ou prenez note de ce login, car vous en aurez besoin pour accéder à l’interface web de Kibana.

      Ensuite, nous allons créer un fichier de bloc serveur Nginx. À titre d’exemple, nous appellerons ce fichier your_domain, bien que vous puissiez trouver utile de donner au vôtre un nom plus descriptif. Par exemple, si vous avez un FQDN et des enregistrements DNS configurés pour ce serveur, vous pourriez nommer ce fichier en fonction de votre FQDN.

      En utilisant nano ou votre éditeur de texte préféré, créez le fichier de bloc serveur Nginx :

      • sudo nano /etc/nginx/sites-available/your_domain

      Ajoutez le bloc de code suivant dans le fichier, en veillant à mettre à jour your_domain pour qu’il corresponde au FQDN ou à l’adresse IP publique de votre serveur. Ce code configure Nginx pour diriger le trafic HTTP de votre serveur vers l’application Kibana, qui est à l’écoute sur localhost:5601. De plus, il configure Nginx pour qu’il lise le fichier htpasswd.users et exige une authentification de base.

      Notez que si vous avez suivi le tutoriel Nginx jusqu’à la fin, vous avez peut-être déjà créé ce fichier et y avez peut-être ajouté du contenu. Dans ce cas, supprimez tout le contenu existant dans le fichier avant d’ajouter ce qui suit :

      /etc/nginx/sites-available/your_domain

      server {
          listen 80;
      
          server_name your_domain;
      
          auth_basic "Restricted Access";
          auth_basic_user_file /etc/nginx/htpasswd.users;
      
          location / {
              proxy_pass http://localhost:5601;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection 'upgrade';
              proxy_set_header Host $host;
              proxy_cache_bypass $http_upgrade;
          }
      }
      

      Lorsque vous avez terminé, sauvegardez et fermez le fichier.

      Ensuite, activez la nouvelle configuration en créant un lien symbolique vers le répertoire sites-enabled. Si vous avez déjà créé un fichier de bloc de serveur avec le même nom dans les pré-requis Nginx, vous n’avez pas besoin d’exécuter cette commande :

      • sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/your_domain

      Ensuite, vérifiez que la configuration ne contient pas d’erreurs de syntaxe :

      Si des erreurs sont signalées dans votre sortie, revenez en arrière et vérifiez que le contenu que vous avez placé dans votre fichier de configuration a été ajouté correctement. Une fois que vous voyez syntax is ok dans la sortie, continuez et redémarrez le service Nginx :

      • sudo systemctl reload nginx

      Si vous avez suivi le guide de configuration initiale du serveur, vous devriez disposer d’un pare-feu UFW activé. Pour permettre les connexions à Nginx, nous pouvons ajuster les règles en tapant :

      • sudo ufw allow 'Nginx Full'

      Note : si vous avez suivi le tutoriel Nginx, vous avez peut-être créé une règle UFW permettant au profil HTTP de Nginx de passer à travers le pare-feu. Comme le profil Nginx Full autorise le trafic HTTP et HTTPS à travers le pare-feu, vous pouvez supprimer en toute sécurité la règle que vous avez créée dans le tutoriel des prérequis. Faites-le avec la commande suivante :

      • sudo ufw delete allow 'Nginx HTTP'

      Kibana est désormais accessible via votre FQDN ou l’adresse IP publique de votre serveur Elastic Stack. Vous pouvez consulter la page d’état du serveur Kibana en vous rendant à l’adresse suivante et en saisissant vos identifiants de connexion lorsque vous y êtes invité :

      http://your_domain/status
      

      Cette page d’état affiche des informations sur l’utilisation des ressources du serveur et énumère les plugins installés.

      Page d'état |Kibana

      Note : comme mentionné dans la section « Conditions préalables », il est recommandé d’activer SSL/TLS sur votre serveur. Vous pouvez suivre le guide Let’s Encrypt dès maintenant pour obtenir un certificat SSL gratuit pour Nginx sur Ubuntu 20.04. Après avoir obtenu vos certificats SSL/TLS, vous pouvez revenir et compléter ce tutoriel.

      Maintenant que le tableau de bord de Kibana est configuré, installons le composant suivant : Logstash.

      Étape 3 — Installation et configuration de Logstash

      Bien qu’il soit possible pour Beats d’envoyer des données directement à la base de données Elasticsearch, il est courant d’utiliser Logstash pour traiter les données. Cela vous donnera plus de flexibilité pour collecter des données provenant de différentes sources, les transformer en un format commun et les exporter vers une autre base de données.

      Installez Logstash avec cette commande :

      • sudo apt install logstash

      Après avoir installé Logstash, vous pouvez passer à la configuration. Les fichiers de configuration de Logstash se trouvent dans le répertoire /etc/logstash/conf.d. Pour plus d’informations sur la syntaxe de configuration, vous pouvez consulter la référence de configuration fournie par Elastic. Lorsque vous configurez le fichier, il est utile de considérer Logstash comme un pipeline qui prend les données à une extrémité, les traite d’une manière ou d’une autre et les envoie à leur destination (dans ce cas, la destination est Elasticsearch). Un pipeline Logstash comporte deux éléments obligatoires, input (l’entrée) et output (la sortie), et un élément optionnel, filter (le filtre). Les plugins d’entrée consomment les données d’une source, les plugins de filtrage traitent les données, et les plugins de sortie écrivent les données vers une destination.

      pipeline Logstash

      Créez un fichier de configuration appelé 02-beats-input.conf où vous configurerez votre entrée Filebeat :

      • sudo nano /etc/logstash/conf.d/02-beats-input.conf

      Insérez la configuration input suivante. Elle spécifie une entrée de beats qui écoutera sur le port TCP 5044.

      /etc/logstash/conf.d/02-beats-input.conf

      input {
        beats {
          port => 5044
        }
      }
      

      Enregistrez et fermez le fichier.

      Ensuite, créez un fichier de configuration appelé 30-elasticsearch-output.conf :

      • sudo nano /etc/logstash/conf.d/30-elasticsearch-output.conf

      Insérez la configuration output suivante. Globalement, cette sortie configure Logstash pour stocker les données des Beats dans Elasticsearch, qui tourne sur localhost:9200, dans un index nommé en fonction du Beat utilisé. Le Beat utilisé dans ce tutoriel est Filebeat :

      /etc/logstash/conf.d/30-elasticsearch-output.conf

      output {
        if [@metadata][pipeline] {
          elasticsearch {
          hosts => ["localhost:9200"]
          manage_template => false
          index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
          pipeline => "%{[@metadata][pipeline]}"
          }
        } else {
          elasticsearch {
          hosts => ["localhost:9200"]
          manage_template => false
          index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
          }
        }
      }
      
      
      

      Enregistrez et fermez le fichier.

      Testez votre configuration Logstash avec cette commande :

      • sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t

      S’il n’y a pas d’erreurs de syntaxe, votre sortie affichera Config Validation Result: OK. Exiting Logstash après quelques secondes. Si cela n’apparaît pas dans votre sortie, vérifiez les erreurs constatées dans votre sortie et mettez à jour votre configuration pour les corriger. Notez que vous recevrez des avertissements de la part d’OpenJDK, mais ils ne devraient pas causer de problèmes et peuvent être ignorés.

      Si votre test de configuration est réussi, démarrez et activez Logstash pour implémenter les changements de configuration :

      • sudo systemctl start logstash
      • sudo systemctl enable logstash

      Maintenant que Logstash fonctionne correctement et est entièrement configuré, installons Filebeat.

      Étape 4 — Installation et configuration de Filebeat

      L’Elastic Stack utilise plusieurs expéditeurs de données légers appelés Beats pour collecter des données de diverses sources et les transporter vers Logstash ou Elasticsearch. Voici les Beats qui sont actuellement disponibles chez Elastic :

      • Filebeat  : recueille et expédie les fichiers journaux.
      • Metricbeat : collecte les métriques de vos systèmes et services.
      • Packetbeat : recueille et analyse les données du réseau.
      • Winlogbeat : collecte les journaux des événements Windows.
      • Auditbeat : collecte les données du framework de vérification Linux et surveille l’intégrité des fichiers.
      • Heartbeat : surveille activement la disponibilité des services.

      Dans ce tutoriel, nous utiliserons Filebeat pour transmettre les journaux locaux à notre Elastic Stack.

      Installez Filebeat en utilisant apt  :

      • sudo apt install filebeat

      Ensuite, configurez Filebeat pour vous connecter à Logstash. Ici, nous allons modifier l’exemple de fichier de configuration fourni avec Filebeat.

      Ouvrez le fichier de configuration Filebeat :

      • sudo nano /etc/filebeat/filebeat.yml

      Note : comme celui d’Elasticsearch, le fichier de configuration de Filebeat est au format YAML. Cela signifie qu’une indentation correcte est cruciale, aussi veillez à utiliser le même nombre d’espaces que ceux qui sont indiqués dans ces instructions.

      Filebeat prend en charge de nombreuses sorties, mais vous n’enverrez généralement les événements que directement à Elasticsearch ou à Logstash pour un traitement supplémentaire. Dans ce tutoriel, nous utiliserons Logstash pour effectuer des traitements supplémentaires sur les données collectées par Filebeat. Filebeat n’aura pas besoin d’envoyer de données directement à Elasticsearch. Désactivons donc cette sortie. Pour ce faire, trouvez la section output.elasticsearch et commentez les lignes suivantes en les faisant précéder d’un # :

      /etc/filebeat/filebeat.yml

      ...
      #output.elasticsearch:
        # Array of hosts to connect to.
        #hosts: ["localhost:9200"]
      ...
      

      Ensuite, configurez la section output.logstash. Décommentez les lignes output.logstash: et hosts: ["localhost:5044"] en supprimant le #. Cela permettra de configurer Filebeat pour qu’il se connecte à Logstash sur votre serveur Elastic Stack au port 5044, le port pour lequel nous avons spécifié une entrée Logstash plus tôt :

      /etc/filebeat/filebeat.yml

      output.logstash:
        # The Logstash hosts
        hosts: ["localhost:5044"]
      

      Enregistrez et fermez le fichier.

      La fonctionnalité de Filebeat peut être étendue avec des modules Filebeat. Dans ce tutoriel, nous utiliserons le module system, qui collecte et analyse les journaux créés par le service de journalisation du système des distributions Linux courantes.

      Activons-le :

      • sudo filebeat modules enable system

      Vous pouvez consulter la liste des modules activés et désactivés en exécutant :

      • sudo filebeat modules list

      Vous verrez une liste semblable à celle qui suit :

      Output

      Enabled: system Disabled: apache2 auditd elasticsearch icinga iis kafka kibana logstash mongodb mysql nginx osquery postgresql redis traefik ...

      Par défaut, Filebeat est configuré pour utiliser les itinéraires par défaut pour le syslog et les journaux d’autorisation. Dans le cas de ce tutoriel, vous n’avez pas besoin de modifier quoi que ce soit dans la configuration. Vous pouvez voir les paramètres du module dans le fichier de configuration /etc/filebeat/modules.d/system.yml.

      Ensuite, nous devons mettre en place les pipelines d’ingestion de Filebeat, qui analysent les données du journal avant de les envoyer à Elasticsearc via Logstash. Pour charger le pipeline d’ingestion pour le module system, entrez la commande suivante :

      • sudo filebeat setup --pipelines --modules system

      Ensuite, chargez le modèle d’index dans Elasticsearch. Un index Elasticsearch est une collection de documents qui présentent des caractéristiques similaires. Les index sont identifiés par un nom, qui est utilisé pour se référer à l’index lors de l’exécution de diverses opérations en son sein. Le modèle d’index sera automatiquement appliqué lors de la création d’un nouvel index.

      Pour charger le modèle, utilisez la commande suivante :

      • sudo filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'

      Output

      Index setup finished.

      Filebeat contient des exemples de tableaux de bord Kibana qui vous permettent de visualiser les données Filebeat dans Kibana. Avant de pouvoir utiliser les tableaux de bord, vous devez créer le modèle d’index et charger les tableaux de bord dans Kibana.

      Lors du chargement des tableaux de bord, Filebeat se connecte à Elasticsearch pour vérifier les informations de version. Pour charger des tableaux de bord lorsque Logstash est activé, vous devez désactiver la sortie Logstash et activer la sortie Elasticsearch :

      • sudo filebeat setup -E output.logstash.enabled=false -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601

      Vous devriez recevoir un résultat qui ressemble à ça :

      Output

      Overwriting ILM policy is disabled. Set `setup.ilm.overwrite:true` for enabling. Index setup finished. Loading dashboards (Kibana must be running and reachable) Loaded dashboards Setting up ML using setup --machine-learning is going to be removed in 8.0.0. Please use the ML app instead. See more: https://www.elastic.co/guide/en/elastic-stack-overview/current/xpack-ml.html Loaded machine learning job configurations Loaded Ingest pipelines

      Vous pouvez maintenant démarrer et activer Filebeat :

      • sudo systemctl start filebeat
      • sudo systemctl enable filebeat

      Si vous avez correctement configuré votre Elastic Stack, Filebeat commencera à envoyer votre syslog et vos journaux d’autorisation à Logstash, qui chargera ensuite ces données dans Elasticsearch.

      Pour vérifier que Elasticsearch reçoit bel et bien ces données, interrogez l’index Filebeat avec cette commande :

      • curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

      Vous devriez recevoir un résultat qui ressemble à ça :

      Output

      ... { { "took" : 4, "timed_out" : false, "_shards" : { "total" : 2, "successful" : 2, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 4040, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : "filebeat-7.7.1-2020.06.04", "_type" : "_doc", "_id" : "FiZLgXIB75I8Lxc9ewIH", "_score" : 1.0, "_source" : { "cloud" : { "provider" : "digitalocean", "instance" : { "id" : "194878454" }, "region" : "nyc1" }, "@timestamp" : "2020-06-04T21:45:03.995Z", "agent" : { "version" : "7.7.1", "type" : "filebeat", "ephemeral_id" : "cbcefb9a-8d15-4ce4-bad4-962a80371ec0", "hostname" : "june-ubuntu-20-04-elasticstack", "id" : "fbd5956f-12ab-4227-9782-f8f1a19b7f32" }, ...

      Si votre sortie affiche 0 résultat total, cela signifie qu’Elasticsearch ne charge aucun journal sous l’index que vous avez recherché, et vous devrez revoir votre configuration pour détecter les erreurs. Si vous avez obtenu la sortie attendue, passez à l’étape suivante, dans laquelle nous verrons comment naviguer dans certains des tableaux de bord de Kibana.

      Étape 5 — Exploration des tableaux de bord Kibana

      Revenons à l’interface web Kibana que nous avons installée précédemment.

      Dans un navigateur web, rendez-vous à la FQDN ou à l’adresse IP publique de votre serveur Elastic Stack. Si votre session a été interrompue, vous devrez y rentrer en entrant les identifiants que vous avez définis lors de l’étape 2. Une fois connecté, vous devriez voir la page d’accueil de Kibana :

      Page d'accueil de Kibana

      Cliquez sur le lien Discover (Découvrir) dans la barre de navigation de gauche (vous devrez peut-être cliquer sur l’icône Expand (Développer) tout en bas à gauche pour voir les éléments du menu de navigation). Sur la page Discover (Découvrir), sélectionnez le modèle d’index filebeat-* prédéfini pour voir les données Filebeat. Par défaut, cela vous montrera toutes les données du journal au cours des 15 dernières minutes. Vous verrez un histogramme avec les événements du journal, et quelques messages du journal ci-dessous :

      page Discover

      Ici, vous pouvez rechercher des journaux et les parcourir, et également personnaliser votre tableau de bord. A ce stade, cependant, il n’y aura pas grand chose dedans, parce que vous ne recueillez que les syslogs de votre serveur Elastic Stack.

      Utilisez le panneau de gauche pour naviguer jusqu’à la page Dashboard (Tableau de bord) et rechercher les tableaux de bord Filebeat System. Une fois sur la page, vous pouvez sélectionner les exemples de tableaux de bord fournis avec le module system de Filebeat.

      Par exemple, vous pouvez consulter des statistiques détaillées en fonction de vos messages syslog :

      Tableau de bord Syslog

      Vous pouvez également voir quels utilisateurs ont utilisé la commande sudo et à quel moment :

      Tableau de bord Sudo

      Kibana offre de nombreuses autres fonctionnalités, telles que le graphisme et le filtrage : n’hésitez pas à les explorer.

      Conclusion

      Dans ce tutoriel, vous avez appris comment installer et configurer l’Elastic Stack pour collecter et analyser les journaux du système. N’oubliez pas que vous pouvez envoyer à peu près n’importe quel type de journal ou de données indexées à Logstash en utilisant Beats, mais que les données deviennent encore plus utiles si elles sont analysées et structurées avec un filtre Logstash, car cela les transforme en un format cohérent qui peut être lu facilement par Elasticsearch.



      Source link

      Como instalar o Elasticsearch, Logstash e Kibana (Pilha Elastic) no Ubuntu 20.04


      Introdução

      A Pilha Elastic — anteriormente conhecida como ELK Stack — é uma coleção de softwares de código aberto produzida pela Elastic que permite pesquisar, analisar e visualizar logs gerados a partir de qualquer fonte em qualquer formato. Esta é uma prática conhecida como centralização de logs. A centralização de logs pode ser útil ao tentar identificar problemas com seus servidores ou aplicações, uma vez que ela permite que você pesquise todos os seus logs em um único lugar. Também é útil porque ele lhe permite identificar problemas que abrangem vários servidores correlacionando seus logs durante um período de tempo específico.

      A pilha Elastic tem quatro componentes principais:

      • Elasticsearch: um mecanismo de busca RESTful distribuído que armazena todos os dados coletados.
      • Logstash: o componente de processamento de dados da pilha Elastic que envia dados recebidos para o Elasticsearch.
      • Kibana: uma interface Web para pesquisar e visualizar logs.
      • Beats: transportadores de dados leves e de propósito único que podem enviar dados de centenas ou milhares de máquinas para o Logstash ou para o Elasticsearch.

      Neste tutorial, você irá instalar a pilha Elastic em um servidor Ubuntu 20.04. Você irá aprender como instalar todos os componentes da pilha Elastic — incluindo o Filebeat, um Beat usado para encaminhar e centralizar logs e arquivos — e configurá-los para coletar e visualizar logs de sistema. Além disso, como o Kibana normalmente está disponível apenas no localhost, usaremos o Nginx para fazer proxy dele para que ele seja acessível via um navegador Web. Vamos instalar todos esses componentes em um único servidor, que vamos nos referir como nosso servidor da pilha Elastic.

      Nota: ao instalar a pilha Elastic, você deve usar a mesma versão em toda a pilha. Neste tutorial, vamos instalar as versões mais recentes de toda a pilha que são, no momento da escrita deste artigo, o Elasticsearch 7.7.1, Kibana 7.7.1, Logstash 7.7.1 e Filebeat 7.7.1.

      Pré-requisitos

      Para concluir este tutorial, você precisará do seguinte:

      • Um servidor Ubuntu 20.04, com 4GB de RAM e 2 CPUs configuradas com um usuário sudo não root. Você pode conseguir isso seguindo o guia Initial Server Setup with Ubuntu 20.04. Para este tutorial, vamos trabalhar com a quantidade mínima necessária de CPU e RAM para executar o Elasticsearch. Observe que a quantidade de CPU, RAM e armazenamento que seu servidor Elasticsearch exigirá depende do volume de logs que você espera.

      • OpenJDK 11 instalado. Veja a seção Installing the Default JRE/JDK How To Install Java with Apt on Ubuntu 20.04 para configurar isto.

      • Nginx instalado em seu servidor, que vamos configurar mais tarde neste guia como um proxy reverso para o Kibana. Siga nosso guia How to Install Nginx on Ubuntu 20.04 para configurar isso.

      Além disso, como a pilha Elastic é usada para acessar informações valiosas sobre seu servidor, que você não deseja que usuários não autorizados acessem, é importante que você mantenha seu servidor seguro instalando um certificado TLS/SSL. Isso é opcional, mas altamente recomendado.

      No entanto, como você acabará por fazer alterações em seu bloco de servidor Nginx ao longo deste guia, provavelmente faria mais sentido para você completar o guia Let’s Encrypt on Ubuntu 20.04 no final do segundo passo deste tutorial. Com isso em mente, se você planeja configurar o Let’s Encrypt em seu servidor, você precisará ter o seguinte em mãos antes de fazer isso:

      Passo 1 — Instalando e Configurando o Elasticsearch

      Os componentes do Elasticsearch não estão disponíveis nos repositórios de pacotes padrão do Ubuntu. No entanto, eles podem ser instalados com o APT após adicionar a lista de origem de pacotes do Elastic.

      Todos os pacotes são assinados com a chave de assinatura do Elasticsearch para proteger seu sistema de spoofing de pacotes. Os pacotes autenticados usando a chave serão considerados confiáveis pelo seu gerenciador de pacotes. Neste passo, você importará a chave GPG pública do Elasticsearch e adicionará a lista de origem de pacotes do Elastic para instalar o Elasticsearch.

      Para começar utilize o cURL, a ferramenta de linha de comando para transferir dados com URLs, para importar a chave GPG pública do Elasticsearch para o APT. Observe que estamos usando os argumentos -fsSL para silenciar todo o progresso e possíveis erros (exceto para uma falha de servidor) e permitir que o cURL faça uma solicitação em um novo local se for redirecionado. Faça o pipe da saída do comando cURL no programa apt-key, que adiciona a chave pública GPG para o APT.

      • curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

      Em seguida, adicione a lista de origem do Elastic ao diretório sources.list.d, onde o APT irá procurar por novas origens:

      • echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

      Em seguida, atualize suas listas de pacotes para que o APT leia a nova origem do Elastic:

      Em seguida, instale o Elasticsearch com este comando:

      • sudo apt install elasticsearch

      Agora, o Elasticsearch está instalado e pronto para ser configurado. Use seu editor de texto preferido para editar o arquivo de configuração principal do Elasticsearch, elasticsearch.yml. Aqui, usaremos o nano:

      • sudo nano /etc/elasticsearch/elasticsearch.yml

      Nota: o arquivo de configuração do Elasticsearch está no formato YAML, o que significa que precisamos manter o formato de indentação. Certifique-se de não adicionar nenhum espaço extra ao editar este arquivo.

      O arquivo elasticsearch.yml fornece opções de configuração para seu cluster, node, paths, memória, rede, descoberta e gateway. A maioria destas opções estão pré-configuradas no arquivo, mas você pode alterá-las de acordo com suas necessidades. Para os fins de nossa demonstração de uma configuração de um único servidor, vamos ajustar apenas as configurações para o host de rede.

      O Elasticsearch escuta o tráfego de todos os lugares na porta 9200. Você vai querer restringir o acesso externo à sua instância Elasticsearch para evitar que agentes externos leiam seus dados ou encerrem seu cluster Elasticsearch por meio da sua API REST. Para restringir o acesso e, portanto, aumentar a segurança, encontre a linha que especifica o network.host, descomente-a e substitua seu valor por localhost dessa forma:

      /etc/elasticsearch/elasticsearch.yml

      . . .
      # ---------------------------------- Network -----------------------------------
      #
      # Set the bind address to a specific IP (IPv4 or IPv6):
      #
      network.host: localhost
      . . .
      

      Nós especificamos localhost para que o Elasticsearch escute em todas as interfaces e IPs ligados. Se você quiser que ele escute apenas em uma interface específica, você pode especificar o IP dela no lugar de localhost. Salve e feche o elasticsearch.yml. Se você estiver usando o nano, você pode fazer isso pressionando CTRL+X, seguido de Y e, depois, ENTER.

      Essas são as configurações mínimas com as quais você começa para utilizar o Elasticsearch. Agora, inicie o Elasticsearch pela primeira vez.

      Inicie o serviço Elasticsearch com o systemctl. Dê ao Elasticsearch alguns momentos para iniciar. Caso contrário, poderá haver erros quanto à indisponibilidade de conexão.

      • sudo systemctl start elasticsearch

      Em seguida, execute o seguinte comando para habilitar o Elasticsearch para iniciar sempre que seu servidor inicializar:

      • sudo systemctl enable elasticsearch

      Você pode testar se seu serviço Elasticsearch está em execução enviando uma requisição HTTP:

      • curl -X GET "localhost:9200"

      Você verá uma resposta mostrando algumas informações básicas sobre seu nó local, semelhantes a esta:

      Output

      { "name" : "Elasticsearch", "cluster_name" : "elasticsearch", "cluster_uuid" : "qqhFHPigQ9e2lk-a7AvLNQ", "version" : { "number" : "7.7.1", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f", "build_date" : "2020-03-26T06:34:37.794943Z", "build_snapshot" : false, "lucene_version" : "8.5.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }

      Agora que o Elasticsearch está funcionando, vamos instalar o Kibana, o próximo componente da pilha Elastic.

      Passo 2 — Instalando e configurando o painel do Kibana

      De acordo com a documentação oficial, você deve instalar o Kibana somente após instalar o Elasticsearch. A instalação nesta ordem garante que os componentes de que cada produto depende estejam corretamente instalados.

      Como você já adicionou a fonte de pacotes Elastic no passo anterior, você pode apenas instalar os componentes restantes da pilha Elastic usando o apt:

      Em seguida, habilite e inicie o serviço Kibana:

      • sudo systemctl enable kibana
      • sudo systemctl start kibana

      Como o Kibana está configurado para ouvir somente em localhost, devemos configurar um proxy reverso para permitir acesso externo a ele. Usaremos o Nginx para este fim, que já deve estar instalado em seu servidor.

      Primeiro, use o comando openssl para criar um usuário administrativo do Kibana que você usará para acessar a interface Web do Kibana. Como exemplo, vamos nomear esta conta como kibanaadmin, mas para garantir maior segurança, recomendamos que você escolha um nome não padrão para seu usuário que seria difícil de adivinhar.

      O comando a seguir irá criar o usuário administrativo e a senha do Kibana e armazená-los no arquivo htpasswd.users. Você irá configurar o Nginx para exigir esse nome de usuário e senha e ler este arquivo momentaneamente:

      • echo "kibanaadmin:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users

      Digite e confirme uma senha no prompt. Lembre-se ou tome nota deste login, pois você precisará dele para acessar a interface Web do Kibana.

      Em seguida, vamos criar um arquivo de bloco de servidor do Nginx. Como um exemplo, vamos nos referir a este arquivo como your_domain, embora você possa achar útil dar ao seu arquivo um nome mais descritivo. Por exemplo, se você tiver um registro FQDN e DNS configurado para este servidor, você pode nomear este arquivo após seu FQDN.

      Usando o nano ou seu editor de texto preferido, crie o arquivo de bloco de servidor do Nginx:

      • sudo nano /etc/nginx/sites-available/your_domain

      Adicione o seguinte bloco de código ao arquivo, garantindo atualizar your_domain para corresponder ao FQDN do seu servidor ou endereço IP público. Este código configura o Nginx para direcionar o tráfego HTTP do seu servidor para a aplicação do Kibana, que está escutando em localhost:5601. Além disso, ele configura o Nginx para ler o arquivo htpasswd.users e requerer autenticação básica.

      Observe que se você seguiu o tutorial de pré-requisitos do Nginx até o fim, você pode já ter criado este arquivo e o preenchido com algum conteúdo. Nesse caso, exclua todo o conteúdo existente no arquivo antes de adicionar o seguinte:

      /etc/nginx/sites-available/your_domain

      server {
          listen 80;
      
          server_name your_domain;
      
          auth_basic "Restricted Access";
          auth_basic_user_file /etc/nginx/htpasswd.users;
      
          location / {
              proxy_pass http://localhost:5601;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection 'upgrade';
              proxy_set_header Host $host;
              proxy_cache_bypass $http_upgrade;
          }
      }
      

      Quando você terminar, salve e feche o arquivo.

      Em seguida, habilite a nova configuração criando um link simbólico para o diretório sites-enabled. Se você já criou um arquivo de bloco de servidor com o mesmo nome nos pré-requisitos do Nginx, você não precisa executar este comando:

      • sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/your_domain

      Em seguida, verifique a configuração para erros de sintaxe:

      Se quaisquer erros forem relatados em sua saída, retorne e verifique se o conteúdo que você colocou em seu arquivo de configuração foi adicionado corretamente. Depois que você vir syntax is ok na saída, reinicie o serviço do Nginx:

      • sudo systemctl reload nginx

      Se você seguiu o guia de configuração inicial do servidor, você deverá ter um firewall UFW ativado. Para permitir conexões ao Nginx, podemos ajustar as regras digitando:

      • sudo ufw allow 'Nginx Full'

      Nota: se você seguiu o tutorial de pré-requisitos, do Nginx, você pode ter criado uma regra UFW permitindo o perfil Nginx HTTP através do firewall. Como o perfil Nginx Full permite tanto o tráfego HTTP quanto HTTPS através do firewall, você pode excluir com segurança a regra que você criou no tutorial de pré-requisitos. Faça isso com o seguinte comando:

      • sudo ufw delete allow 'Nginx HTTP'

      O Kibana agora está acessível através do seu FQDN ou do endereço IP público do seu servidor de pilha Elastic. Você pode verificar a página de status do servidor do Kibana navegando para o seguinte endereço e digitando suas credenciais de login quando solicitado:

      http://your_domain/status
      

      Esta página de status exibe informações sobre o uso de recursos do servidor e lista os plugins instalados.

      |Kibana status page

      Nota: conforme mencionado na seção de pré-requisitos, é recomendado que você habilite o SSL/TLS no seu servidor. Você pode seguir o guia do Let’s Encrypt agora para obter um certificado SSL gratuito para o Nginx no Ubuntu 20.04. Depois de obter seus certificados SSL/TLS, retorne para completar este tutorial.

      Agora que o painel do Kibana está configurado, vamos instalar o próximo componente: Logstash.

      Passo 3 — Instalando e configurando o Logstash

      Embora seja possível para o Beats enviar dados diretamente para o banco de dados do Elasticsearch, é comum usar o Logstash para processar os dados. Isso lhe permitirá mais flexibilidade para coletar dados de diferentes fontes, transformá-los em um formato comum e exportá-los para outro banco de dados.

      Instale o Logstash com este comando:

      • sudo apt install logstash

      Depois de instalar o Logstash, você pode seguir para configurá-lo. Os arquivos de configuração do Logstash residem no diretório /etc/logstash/conf.d. Para mais informações sobre a sintaxe de configuração, você pode conferir a referência de configuração que o Elastic fornece. À medida que você configura o arquivo, é útil pensar no Logstash como um pipeline que leva dados de uma extremidade, os processa de uma maneira ou de outra e os envia para seu destino (neste caso, o destino sendo o Elasticsearch). Um pipeline do Logstash tem dois elementos necessários, input e output, e um elemento opcional, filter. Os plugins input consomem dados de uma fonte, os plugins filter processam os dados e os plugins output gravam os dados para um destino.

      Logstash pipeline

      Crie um arquivo de configuração chamado 02-beats-input.conf onde você irá configurar sua entrada do Filebeat:

      • sudo nano /etc/logstash/conf.d/02-beats-input.conf

      Insira a seguinte configuração de input. Isso especifica uma entrada para o beats que irá ouvir na porta TCP 5044.

      /etc/logstash/conf.d/02-beats-input.conf

      input {
        beats {
          port => 5044
        }
      }
      

      Salve e feche o arquivo.

      Em seguida, crie um arquivo de configuração chamado 30-elasticsearch-output.conf:

      • sudo nano /etc/logstash/conf.d/30-elasticsearch-output.conf

      Insira a seguinte configuração de output. Essencialmente, esta saída configura o Logstash para armazenar os dados do Beats no Elasticsearch, que está em execução em localhost:9200, em um índice com o nome do Beat usado. O Beat usado neste tutorial é o Filebeat:

      /etc/logstash/conf.d/30-elasticsearch-output.conf

      output {
        if [@metadata][pipeline] {
          elasticsearch {
          hosts => ["localhost:9200"]
          manage_template => false
          index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
          pipeline => "%{[@metadata][pipeline]}"
          }
        } else {
          elasticsearch {
          hosts => ["localhost:9200"]
          manage_template => false
          index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
          }
        }
      }
      
      
      

      Salve e feche o arquivo.

      Teste sua configuração do Logstash com este comando:

      • sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t

      Se não houver erros de sintaxe, a saída irá exibir Config Validation Result: OK. Exiting Logstash após alguns segundos. Se você não vir isso em sua saída, verifique quaisquer erros na saída e atualize a configuração para corrigi-los. Observe que você receberá avisos do OpenJDK, mas eles não devem causar nenhum problema e podem ser ignorados.

      Se seu teste de configuração for bem sucedido, inicie e habilite o Logstash para colocar as alterações de configuração em vigor:

      • sudo systemctl start logstash
      • sudo systemctl enable logstash

      Agora que o Logstash está executando corretamente e está totalmente configurado, vamos instalar o Filebeat.

      Passo 4 — Instalando e configurando o Filebeat

      O Elastic Stack usa vários transportadores de dados leves chamados Beats para coletar dados de várias fontes e transportá-los para o Logstash ou para o Elasticsearch. Aqui estão os Beats que estão atualmente disponíveis na Elastic:

      • Filebeat: coleta e despacha os arquivos de log.
      • Metricbeat: coleta métricas de seus sistemas e serviços.
      • Packetbeat: coleta e analisa dados de rede.
      • Winlogbeat: coleta log de eventos do Windows.
      • Auditbeat: coleta dados do framework de auditoria do Linux e monitora a integridade do arquivo.
      • Heartbeat: monitora serviços para verificar sua disponibilidade com sonda ativa.

      Neste tutorial, usaremos o Filebeat para encaminhar logs locais para nossa pilha Elastic.

      Instale o Filebeat usando o apt:

      • sudo apt install filebeat

      Em seguida, configure o Filebeat para se conectar ao Logstash. Aqui, vamos modificar o arquivo de configuração de exemplo que vem com o Filebeat.

      Abra o arquivo de configuração do Filebeat:

      • sudo nano /etc/filebeat/filebeat.yml

      Nota: assim como no Elasticsearch, o arquivo de configuração do Filebeat está em formato YAML. Isso significa que a indentação adequada é crucial, então certifique-se de usar o mesmo número de espaços que são indicados nessas instruções.

      O Filebeat suporta inúmeras saídas, mas você geralmente apenas enviará eventos diretamente para o Elasticsearch ou para o Logstash para processamento adicional. Neste tutorial, usaremos o Logstash para realizar processamento adicional nos dados coletados pelo Filebeat. O Filebeat não precisará enviar quaisquer dados diretamente para o Elasticsearch, então vamos desativar essa saída. Para fazer isso, encontre a seção output.elasticsearch e comente as seguintes linhas precedendo-as com um #:

      /etc/filebeat/filebeat.yml

      ...
      #output.elasticsearch:
        # Array of hosts to connect to.
        #hosts: ["localhost:9200"]
      ...
      

      Então, configure a seção output.logstash. Descomente as linhas output.logstash: e hosts: ["localhost:5044"] removendo o #. Isso irá configurar o Filebeat para se conectar ao Logstash em seu servidor de pilha Elastic na porta 5044, a porta para a qual especificamos uma entrada do Logstash anteriormente:

      /etc/filebeat/filebeat.yml

      output.logstash:
        # The Logstash hosts
        hosts: ["localhost:5044"]
      

      Salve e feche o arquivo.

      A funcionalidade do Filebeat pode ser estendida com módulos do Filebeat. Neste tutorial, usaremos o módulo system, que coleta e analisa logs criados pelo serviço de log de sistema das distribuições comuns do Linux.

      Vamos habilitá-lo:

      • sudo filebeat modules enable system

      Você pode ver uma lista de módulos habilitados e desabilitados executando:

      • sudo filebeat modules list

      Você verá uma lista similar à seguinte:

      Output

      Enabled: system Disabled: apache2 auditd elasticsearch icinga iis kafka kibana logstash mongodb mysql nginx osquery postgresql redis traefik ...

      Por padrão, o Filebeat está configurado para usar caminhos padrão para o syslog e os logs de autorização. No caso deste tutorial, você não precisa alterar nada na configuração. Você pode ver os parâmetros do módulo no arquivo de configuração /etc/filebeat/modules.d/system.yml.

      Em seguida, precisamos configurar os pipelines de ingestão do Filebeat, que analisa os dados de log antes de enviá-los através do logstash para o Elasticsearch. Para carregar o pipeline de ingestão para o módulo system, digite o seguinte comando:

      • sudo filebeat setup --pipelines --modules system

      Em seguida, carregue o modelo de índice no Elasticsearch. Um índice do Elasticsearch é uma coleção de documentos que têm características semelhantes. Os índices são identificados com um nome, que é usado para se referir ao índice ao realizar várias operações dentro dele. O modelo de índice será aplicado automaticamente quando um novo índice for criado.

      Para carregar o modelo use o seguinte comando:

      • sudo filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'

      Output

      Index setup finished.

      O Filebeat vem empacotado com painéis de amostra do Kibana que lhe permitem visualizar dados do Filebeat no Kibana. Antes que você possa usar os painéis, você precisa criar o padrão de índice e carregar os painéis no Kibana.

      Conforme os painéis carregam, o Filebeat se conecta ao Elasticsearch para verificar as informações da versão. Para carregar painéis quando o Logstash estiver habilitado, você precisa desativar a saída do Logstash e habilitar a saída do Elasticsearch:

      • sudo filebeat setup -E output.logstash.enabled=false -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601

      Você deve receber um resultado similar a este:

      Output

      Overwriting ILM policy is disabled. Set `setup.ilm.overwrite:true` for enabling. Index setup finished. Loading dashboards (Kibana must be running and reachable) Loaded dashboards Setting up ML using setup --machine-learning is going to be removed in 8.0.0. Please use the ML app instead. See more: https://www.elastic.co/guide/en/elastic-stack-overview/current/xpack-ml.html Loaded machine learning job configurations Loaded Ingest pipelines

      Agora, você pode iniciar e habilitar o Filebeat:

      • sudo systemctl start filebeat
      • sudo systemctl enable filebeat

      Se você configurou sua pilha Elastic corretamente, o Filebeat começará a enviar seu syslog e logs de autorização para o Logstash, que então irá carregar esses dados no Elasticsearch.

      Para verificar se o Elasticsearch está realmente recebendo esses dados, consulte o índice do Filebeat com este comando:

      • curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

      Você deve receber um resultado similar a este:

      Output

      ... { { "took" : 4, "timed_out" : false, "_shards" : { "total" : 2, "successful" : 2, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 4040, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : "filebeat-7.7.1-2020.06.04", "_type" : "_doc", "_id" : "FiZLgXIB75I8Lxc9ewIH", "_score" : 1.0, "_source" : { "cloud" : { "provider" : "digitalocean", "instance" : { "id" : "194878454" }, "region" : "nyc1" }, "@timestamp" : "2020-06-04T21:45:03.995Z", "agent" : { "version" : "7.7.1", "type" : "filebeat", "ephemeral_id" : "cbcefb9a-8d15-4ce4-bad4-962a80371ec0", "hostname" : "june-ubuntu-20-04-elasticstack", "id" : "fbd5956f-12ab-4227-9782-f8f1a19b7f32" }, ...

      Se sua saída mostrar 0 total hits, o Elasticsearch não está carregando nenhum log sob o índice que você pesquisou e você precisará revisar sua configuração por erros. Se você recebeu a saída esperada, continue até o próximo passo, no qual veremos como navegar por alguns painéis do Kibana.

      Passo 5 — Explorando painéis do Kibana

      Vamos retornar à interface Web do Kibana que instalamos anteriormente.

      Em um navegador Web, vá até o FQDN ou endereço IP público do seu servidor de pilha Elastic. Se a sessão tiver sido interrompida, você precisará inserir novamente as credenciais que definiu no Passo 2. Depois de fazer login, você deve receber a página inicial do Kibana:

      Kibana Homepage

      Clique no link Discover na barra de navegação à esquerda (você pode ter que clicar no ícone Expand no canto inferior esquerdo para ver os itens do menu de navegação). Na página Discover selecione o padrão de índice pré-definido filebeat-* para ver dados do Filebeat. Por padrão, isso irá lhe mostrar todos os dados de log dos últimos 15 minutos. Você verá um histograma com eventos de log e algumas mensagens de log abaixo:

      Discover page

      Aqui, você pode pesquisar e navegar pelos seus logs e também personalizar seu painel. Neste ponto, porém, não haverá muito lá porque você só está coletando syslogs do seu servidor de pilha Elastic.

      Use o painel esquerdo para navegar até a página Dashboard e pesquise pelos painéis Filebeat System. Uma vez lá, você pode selecionar os painéis de amostra que vêm com o módulo system do Filebeat.

      Por exemplo, você pode visualizar estatísticas detalhadas baseadas em suas mensagens syslog:

      Syslog Dashboard

      Você também pode visualizar quais usuários usaram o comando sudo e quando:

      Sudo Dashboard

      O Kibana tem muitos outros recursos, como gráficos e filtros, para você explorar.

      Conclusão

      Neste tutorial, você aprendeu como instalar e configurar a pilha Elastic para coletar e analisar logs de sistema. Lembre-se que você pode enviar praticamente qualquer tipo de log ou dados indexados para o Logstash usando o Beats, mas os dados tornam-se ainda mais úteis se eles forem analisados e estruturados com um filtro do Logstash, pois isso transforma os dados em um formato consistente que pode ser lido facilmente pelo Elasticsearch.



      Source link