¿Cómo me conecto a Amazon OpenSearch Service mediante Filebeat y Logstash en Amazon Linux?

Última actualización: 17-08-2021

Intento conectarme a un clúster de Amazon OpenSearch Service (posterior a Amazon Elasticsearch Service) mediante Logstash en Amazon Linux. Sin embargo, sigo recibiendo un error. ¿Cómo puedo solucionarlo?

Descripción breve

Para conectarse a Amazon OpenSearch Service mediante Logstash, lleve a cabo los siguientes pasos:

1.    Configure los puertos de seguridad (como el puerto 443) para reenviar registros a OpenSearch Service.

2.    Actualice las configuraciones de FileBeat, Logstash y OpenSearch Service.

3.    Instale FileBeat en su instancia fuente de Amazon Elastic Compute Cloud (Amazon EC2). Asegúrese de haber instalado y configurado correctamente el archivo de configuración de YAML.

4.    Instale Logstash en una instancia de Amazon EC2 independiente desde la que se enviarán los registros.

Si no ha configurado Logstash de forma correcta, recibirá uno de estos errores: 401 Autorización, 403 Prohibido o de instalación de x-pack.

Resolución

Configure los puertos de seguridad

Asegúrese de configurar los puertos de seguridad para que la instancia de Amazon Elastic Compute Cloud (Amazon EC2) pueda reenviar registros a OpenSearch Service.

Para configurar los puertos de seguridad a fin de que reenvíen registros desde Logstash, lleve a cabo los siguientes pasos:

1.    Cree una instancia de Amazon EC2 en la que haya instalado Apache y Filebeat. La instancia de Amazon EC2 debe poder reenviar registros de Logstash a OpenSearch Service.

2.    Asegúrese de que las instancias EC2 residan en el mismo grupo de seguridad que su Virtual Private Cloud (VPC) para OpenSearch Service.

3.    Asegúrese de que los siguientes puertos estén abiertos en el grupo de seguridad: 80, 443 y 5044. Estos puertos deben estar abiertos para poder enviar datos entre Logstash y OpenSearch Service.

Actualización de la configuración de FileBeat, Logstash y OpenSearch Service

Asegúrese de utilizar el mismo número de versión para lo siguiente:

  • FileBeat versión x.x OSS
  • Logstash versión x.x OSS
  • OpenSearch Service versión x.x

Nota: OpenSearch Service funciona mejor cuando se utilizan las versiones OSS de Filebeat y Logstash. También se recomienda utilizar el mismo número de versión para Filebeat, Logstash y OpenSearch Service.

Para asegurarse de que las configuraciones actualizadas estén sincronizadas, descargue las RPM en cada instancia (por separado). Para evitar un punto único de error, es importante evitar la ejecución de instalaciones RPM en la misma instancia. Luego, compruebe que los archivos descargados estén disponibles.

Instalación de Filebeat en la instancia fuente de Amazon EC2

1.    Descargue el RPM de la versión deseada de Filebeats:

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-oss-6.7.0-x86_64.rpm

2.    Instale el archivo RPM de Filebeats:

rpm -ivh filebeat-oss-6.7.0-x86_64.rpm

Instalación de Logstash en una instancia de Amazon EC2 independiente desde la que se enviarán los registros

1.    Descargue el archivo RPM de la versión de Logstash deseada:

wget https://artifacts.elastic.co/downloads/logstash/logstash-oss-6.7.0.rpm

En este ejemplo, se utiliza la versión 6.7 para que coincida con el número de versión de Opensearch Service y Filebeat.

2.    Instale el archivo RPM que descargó para Logstash con el comando rpm:

rpm -ivh logstash-oss-6.7.0.rpm

3.    Instale Java u OpenJDK en la instancia de Amazon EC2:

yum install java-1.8.0-*

Nota: Logstash requiere Java para ejecutarse. En este ejemplo, se usa la versión 8 de Java (Open JDK 1.8), que es compatible con todas las versiones de Logstash. Para obtener más información sobre las versiones compatibles de Java y Logstash, consulte la matriz de soporte en el sitio web de Elasticsearch.

4.    Compruebe los archivos de configuración mediante la verificación de los directorios “/etc/filebeat” y “/etc/logstash”.

5.    Para Filebeat, actualice la salida a Logstash u OpenSearch Service y especifique que los registros deben enviarse. Luego, inicie el servicio.

Nota: Si intenta cargar plantillas en los paneles de OpenSearch con Filebeat, la carga no se podrá realizar. Filebeat supone que su clúster es compatible con el complemento x-pack.

6.    Actualice el archivo de configuración de YAML de Filebeat para enviar los registros de acceso de Apache a Logstash.

Por ejemplo:

filebeat.inputs:
- type: log
   -
/var/log/httpd/access_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:
["vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com:443"]
#protocol: "https"
 
output.logstash:
  # The Logstash hosts
  hosts:
[“Logstash-EC2-InstanceIP:5044"]
 
setup.ilm.enabled: false 
ilm.enabled: false

7.    Asegúrese de que el archivo de configuración de Logstash pueda acceder a Filebeats en el puerto 5044. Este acceso a puerto permite que Logstash reenvíe solicitudes al punto de enlace de la VPC de OpenSearch Service.

Por ejemplo:

input {
  beats {
    port => 5044
  }
}

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

8.    Inicie los servicios de Filebeat y Logstash con los siguientes comandos en cada instancia.

Filebeat:

systemctl start filbeat (service filebeat start)

Logstash:

cp /etc/logstash/logstash.conf /etc/logstash/conf.d/
systemctl start logstash (service logstash start)

9.    Ejecute una llamada a la API de cat indices a su dominio de OpenSearch Service para confirmar que se están enviando los registros de Filebeat. Si los registros se envían correctamente, recibirá la siguiente respuesta:

curl -XGET https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com/_cat/indices
green open filebeat-6.7.0-2020.02.12 f97c4WnuQ-CtsAJJaJHUlg
1 1 1511515 0 249.7mb 124.7mb
green open .kibana_1                 Ioco6fUoSCGkaOvHNCL39g 1
1       1 0   7.4kb  
3.7kb

Los índices de Filebeat rotan diariamente de forma predeterminada. A continuación, se muestra un ejemplo de salida de un índice de Filebeat:

curl -XGET https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com/_cat/indices
green open filebeat-6.7.0-2020.02.12 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-6.7.0-2020.02.13 4i8W0smlRGGFcQOaDMxonA
1 1      89 0 207.1kb 118.1kb

Si configura correctamente los paneles de Filebeat Service, Logstash y OpenSearch (ELK) con Amazon EC2 Linux, la canalización tendrá este aspecto:

Filbeat > Logstash > Amazon OpenSearch Service/Dashboards

401 Error no autorizado

Un error 401 No autorizado de Logstash indica que su dominio de OpenSearch Service está protegido por un control de acceso detallado (FGAC) o Amazon Cognito. FGAC requiere solicitudes firmadas por un usuario o rol, que debe definirse en la política de acceso del dominio. Si recibe un error 401 No autorizado, asegúrese de haber habilitado correctamente el FGAC en el archivo de configuración de Logstash.

Por ejemplo:

output {
  elasticsearch {
    hosts => ["https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com:443"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    ilm_enabled => false
   user => "elastic"
    password => "changeme"
  }
}

Error 403 ´Prohibido

Cuando utilice y configure Logstash para enviar datos a OpenSearch Service, es posible que reciba un error 403 Prohibido. Se produce cuando Logstash no tiene los permisos necesarios y no ha podido verificar su identidad de IAM. Para resolver este problema, asegúrese de firmar las solicitudes en OpenSearch Service con sus credenciales de AWS Identity Access Management (IAM).

Para firmar solicitudes de OpenSearch Service mediante Logstash, siga estos pasos:

1.    Instale el complemento Logstash para OpenSearch Service:

bin/logstash-plugin install logstash-output-amazon_es

2.     Adjunte un rol de IAM a la instancia de Amazon EC2 de la siguiente manera:

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

3.    Actualice los ajustes de configuración de Logstash para usar el complemento Logstash “amazon_es” como salida en la canalización:

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

Error de instalación de x-pack de Logstash

Si encuentra errores con x-pack al iniciar Logstash, desactive el complemento x-pack del archivo de registro de forma manual.

Para desactivar de forma manual el complemento x-pack, siga los pasos a continuación:

1.    Abra el siguiente archivo:

/usr/share/logstash/logstash-core/lib/logstash/plugins/registry.rb

2.    Encuentre load_xpack y comente en línea:

“load_xpack unless LogStash::OSS”
>> “#load_xpack unless LogStash::OSS”

Tenga en cuenta que los archivos de configuración muestran que los ajustes de Index Life Management (ILM) (ilm.enabled e ilm_enabled) están establecidos como “falsos”. Si deshabilita estos ajustes de ILM en los archivos de configuración, se eliminarán los errores de inicio del complemento x-pack.


¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?