Saltar al contenido

¿Cómo utilizo Filebeat y Logstash en Amazon Linux para conectarme a OpenSearch Service?

7 minutos de lectura
0

Quiero usar Filebeat y Logstash en Amazon Linux para conectarme a un clúster de Amazon OpenSearch Service, pero recibo un error.

Resolución

Configuración de puertos de seguridad

Si quieres usar Logstash para conectarte a OpenSearch Service, configura tus puertos de seguridad para reenviar los registros desde Logstash.

Sigue estos pasos:

  1. Inicia una instancia de Amazon Elastic Compute Cloud (Amazon EC2) para Filebeat y, a continuación, inicia otra instancia desde la que Logstash envíe registros.
  2. Confirma que tus instancias de EC2 estén en el mismo grupo de seguridad que tu nube virtual privada (VPC) para OpenSearch Service.
  3. Asegúrate de que los puertos 80, 443 y 5044 estén abiertos en tu grupo de seguridad para poder enviar datos entre Logstash y OpenSearch Service.

Actualización de las configuraciones de Filebeat, Logstash y OpenSearch Service

Se recomienda usar las versiones de Filebeat y Logstash que hagan coincidir tu OpenSearch Service con una versión heredada de Elasticsearch. Usa las versiones de Filebeat y Logstash que coincidan con la versión de tu dominio.

Por ejemplo, si usas OpenSearch Service 1.x con el modo de compatibilidad, OpenSearch Service indica que la versión es 7.10. Comprueba la matriz de compatibilidad para elegir la versión correcta de Filebeat y Logstash. Para obtener más información, consulta Matriz de soporte en el sitio web de Elastic o Compatibility matrices (Matrices de compatibilidad) en el sitio web de OpenSearch.

Si usas la versión 1.0 o posterior de OpenSearch Service, activa el modo de compatibilidad cuando inicies tu dominio.

Para asegurarte de que el software descargado permanece sincronizado, descarga Red Hat Package Managers (RPM) en cada instancia. Para evitar un único punto de error en tu canalización, no ejecutes Filebeat y Logstash en la misma instancia.

Instalación de Filebeat en la instancia de EC2 de origen

Para instalar Filebeat en la instancia de origen, sigue estos pasos:

  1. Usa SSH para conectarte a la instancia que has iniciado para Filebeat.

  2. Ejecuta el siguiente comando para descargar el RPM de la versión compatible de Filebeat:

    wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-oss-8.15.2-x86_64.rpm
  3. Ejecuta el siguiente comando para instalar el archivo RPM de Filebeat:

    rpm -ivh filebeat-oss-8.15.2-x86_64.rpm

Instalación y configuración de Logstash en una instancia de EC2 independiente

Sigue estos pasos:

  1. Usa SSH para conectarte a la instancia que has iniciado para Logstash.

  2. Ejecuta el siguiente comando para descargar el archivo RPM de Logstash compatible:

    wget https://artifacts.elastic.co/downloads/logstash/logstash-oss-8.15.2-x86_64.rpm
  3. Ejecuta el siguiente comando para instalar Java u OpenJDK en la instancia de EC2:

    yum install java-1.8.0-*

    Nota: El comando anterior usa la versión 8 de Java (OpenJDK 1.8). Todas las versiones de Logstash son compatibles con la versión 8 de Java.

  4. Ejecuta el siguiente comando para instalar el archivo RPM de Logstash:

    rpm -ivh logstash-oss-8.15.2-x86_64.rpm
  5. Ejecuta el siguiente comando para abrir el directorio de datos de Logstash:

    cd /usr/share/logstash/
  6. Ejecuta el siguiente comando para instalar el complemento de OpenSearch Service para Logstash:

    bin/logstash-plugin install logstash-output-opensearch
  7. Para verificar la instalación del complemento de Logstash, ejecuta el siguiente comando:

    bin/logstash-plugin list

    Nota: Para Logstash OSS 7.13 y versiones posteriores, utiliza únicamente el complemento logstash-output-opensearch. La versión 7.12.1 admite los complementos logstash-output-elasticsearch y logstash-output-opensearch.

  8. Para comprobar que los directorios de configuración existen, comprueba los directorios /etc/filebeat y /etc/logstash.

  9. Para enviar registros a través de Logstash, crea un archivo de configuración de Filebeat en /etc/filebeat/filebeat.yml.
    Ejemplo de archivo de configuración de Filebeat:

    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/log/*.log
    
    filebeat.config.modules:
      path: ${path.config}/modules.d/*.yml
      reload.enabled: false
    
    setup.template.settings:
    
    index.number_of_shards: 1
    index.codec: best_compression
    
    #output.elasticsearch:
    #hosts: ["your-domain-endpoint"]
    #protocol: "https"
    
    output.logstash:
      # The Logstash hosts
      hosts: ["Logstash-EC2-InstanceIP:5044"]
    
    setup.ilm.enabled: false
    ilm.enabled: false

    Nota: Sustituye Logstash-EC2-InstanceIP:5044 por la dirección IP de tu instancia de Logstash y your-domain-endpoint por el punto de enlace de tu dominio. También puedes enviar los registros directamente a OpenSearch Service. Para obtener más información, consulta logstash-output-opensearch en el sitio web de GitHub.

  10. Crea un archivo de configuración de Logstash en /etc/logstash/conf.d/logstash.conf.
    Ejemplo de archivo de configuración de Logstash:

input {
  beats {
    port => 5044
  }
}

output {
  opensearch {
    hosts => ["https://domain-endpoint:443"]
    ssl => true
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    user => "my-username"
    password => "my-password"
  }
}

Nota: Sustituye domain-endpoint, my-username y my-password por tus valores. Para probar la conectividad con el punto de enlace de OpenSearch Service, ejecuta el siguiente comando:

curl -XGET https://your-domain-endpoint

Nota: Sustituye your-domain-endpoint por el punto de enlace de tu dominio. (Opcional) Si has activado el control de acceso detallado (FGAC), ejecuta el siguiente comando:

curl -u my-username:my-password -XGET https://your-domain-endpoint

Nota: Sustituye your-domain-endpoint por el punto de enlace de tu dominio. Ejecuta los siguientes comandos para iniciar los servicios Filebeat y Logstash:

systemctl start filebeat
systemctl start logstash
  1. Para confirmar que se han enviado los registros de Filebeat, ejecuta el siguiente comando curl en tu dominio de OpenSearch Service:
curl -XGET https://your-domain-endpoint/_cat/indices

Nota: Sustituye your-domain-endpoint por el punto de enlace de tu dominio.
Ejemplos de resultados de un índice de Filebeat:

green open filebeat-7.16.2-2022.01.27 f97c4WnuQ-CtsAJJaJHUlg
1 1 1511515 0 249.7mb 124.7mb
green open .kibana_1                 Ioco6fUoSCGkaOvHNCL39g 1
1       1 0   7.4kb  
3.7kb
green open filebeat-7.16.2-2022.01.27 f97c4WnuQ-CtsAJJaJHUlg
1 1 1511515 0 249.7mb 124.7mb
green open .kibana_1                 Ioco6fUoSCGkaOvHNCL39g 1
1       1 0   7.4kb  
3.7kb
green open filebeat-7.16.2-2022.01.28 4i8W0smlRGGFcQOaDMxonA
1 1      89 0 207.1kb 118.1kb

Si has configurado correctamente los paneles de Filebeat, Logstash y OpenSearch con Amazon EC2 Linux, tu canalización tendrá un aspecto similar al del siguiente ejemplo:

Filebeat > Logstash > Amazon OpenSearch Service/Dashboards

Solución de errores 401, 403 y de instalación de x-pack de Logstash

Error 401 Unauthorized

Si Logstash devuelve un error «401 Unauthorized», tu dominio de OpenSearch Service utiliza una de las siguientes características de seguridad:

  • FGAC
  • Autenticación de Amazon Cognito

Para resolver este problema, agrega las credenciales de autenticación al archivo de configuración de Logstash en /etc/logstash/conf.d/logstash.conf.

Configuración del ejemplo:

output {
  opensearch {
    hosts => ["https://your-domain-endpoint"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    ilm_enabled => false
    user => "my-username"
    password => "my-password"
  }
}

Nota: Sustituye your-domain-endpoint, my-username y my-password por los valores de tu dominio de OpenSearch Service.

Error 403 Forbidden

Si Logstash no tiene los permisos de AWS Identity and Access Management (IAM) necesarios para acceder a OpenSearch Service, se produce un error «403 Forbidden».

Para resolver este problema, sigue estos pasos:

  1. Ejecuta el siguiente comando para instalar el complemento de OpenSearch Service para Logstash:

    bin/logstash-plugin install logstash-output-opensearch
  2. Crea un rol de IAM.

  3. Crea la siguiente política y, a continuación, adjúntala al rol de IAM:

    {  
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "es:ESHttp*"
          ],
          "Resource": "[Amazon-OpenSearch-Domain-ARN]"
        }
      ]
    }

    Nota: Sustituye Amazon-OpenSearch-Domain-ARN por el nombre de recurso de Amazon (ARN) de tu dominio de OpenSearch Service.

  4. Actualiza el archivo de configuración de Logstash en /etc/logstash/conf.d/logstash.conf.
    Ejemplo de archivo de configuración de Logstash:

    output {
      opensearch {
        hosts => ["domain-endpoint"]
        ssl => true
        region => "example_region"
        index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
      }
    }

    Nota: Sustituye domain-endpoint y example-region por los valores de tu dominio de OpenSearch Service.

Error de instalación de x-pack de Logstash

Si Logstash no se inicia debido a un error «x-pack plugin», sigue estos pasos:

  1. Abre el siguiente archivo de registro:

    /usr/share/logstash/logstash-core/lib/logstash/plugins/registry.rb
  2. Busca la siguiente línea de código:

    load_xpack unless LogStash::OSS
  3. Actualiza el código con el siguiente ejemplo:

    #load_xpack unless LogStash::OSS
  4. Para evitar errores al iniciar el complemento x-pack, desactiva la configuración de Index Life Management (ILM) en tus archivos de configuración:
    En Filebeat, configura ilm.enabled: false.
    En Logstash, configura ilm_enabled => false.

Información relacionada

Carga de datos en Amazon OpenSearch Service con Logstash

OFICIAL DE AWSActualizada hace un año