Solución de problemas de MSK como origen - Amazon Data Firehose

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Solución de problemas de MSK como origen

En esta sección se describen los pasos comunes de solución de problemas al utilizar MSK como origen.

nota

Para solucionar problemas de procesamiento, transformación o entrega de S3, consulte las secciones anteriores.

Error de creación de conductos

Compruebe lo siguiente si el conducto con MSK como origen no se crea correctamente:

Conducto suspendido

Compruebe lo siguiente si el conducto se encuentra en estado SUSPENDIDO:

  • Compruebe que el clúster de MSK de origen se encuentre en estado activo.

  • Compruebe que el tema de origen existe. En caso de que el tema se haya eliminado y vuelto a crear, tendrá que eliminar y volver a crear también el flujo de Firehose.

Conducto contrapresurizado

El valor de DataReadFromSource .Backpressured será 1 si se supera BytesPerSecondLimit cada partición o si el flujo normal de entrega es lento o se detiene.

  • Si está acertando BytesPerSecondLimit , compruebe la métrica de DataReadFromSource .Bytes y solicite un aumento del límite.

  • Compruebe los CloudWatch registros, las métricas de destino, las métricas de transformación de datos y las métricas de conversión de formato para identificar los cuellos de botella.

Actualización incorrecta de los datos

La actualización de los datos parece incorrecta.

  • Firehose calcula la actualización de los datos en función de la marca de tiempo del registro consumido. Para garantizar que esta marca de tiempo se registre correctamente cuando el registro del productor se conserva en los registros del agente de Kafka, defina la configuración del tipo de marca de tiempo del tema de Kafka para que sea message.timestamp.type=LogAppendTime.

Problemas de conexión de clústeres de MSK

El siguiente procedimiento explica cómo se puede validar la conectividad con los clústeres de MSK. Para obtener más información sobre cómo configurar un cliente de Amazon MSK, consulte Empezar a utilizar Amazon MSK en la Guía para desarrolladores de Amazon Managed Streaming para Apache Kafka.

Validación de la conectividad con los clústeres de MSK
  1. Cree una instancia de AL2 Amazon EC2 basada en Unix (preferiblemente). Si solo tienes habilitada la conectividad de VPC en tu clúster, asegúrate de que la EC2 instancia se ejecute en la misma VPC. Utilice SSH en la instancia una vez que esté disponible. Para obtener más información, consulta este tutorial en la Guía del EC2 usuario de Amazon.

  2. Instale Java con el administrador de paquete Yum con el siguiente comando. Para obtener más información, consulte las instrucciones de instalación en la Guía del usuario de Amazon Corretto 8.

    sudo yum install java-1.8.0
  3. Instale el cliente de AWS ejecutando el siguiente comando:

    curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install
  4. Descargue la versión 2.6* de Apache Kafka del cliente ejecutando el siguiente comando.

    wget https://archive.apache.org/dist/kafka/2.6.2/kafka_2.12-2.6.2.tgz tar -xzf kafka_2.12-2.6.2.tgz
  5. Vaya al directorio kafka_2.12-2.6.2/libs y ejecute el siguiente comando para descargar el archivo JAR de IAM de Amazon MSK.

    wget https://github.com/aws/aws-msk-iam-auth/releases/download/v1.1.3/aws-msk-iam-auth-1.1.3-all.jar
  6. Cree el archivo client.properties en la carpeta bin de Kafka.

  7. Sustituya awsRoleArn por el ARN del rol que utilizó en SourceConfiguration de Firehose y verifique la ubicación del certificado. Permita que su usuario AWS cliente asuma el rolawsRoleArn. AWS el usuario cliente intentará asumir el rol que especificó aquí.

    [ec2-user@ip-xx-xx-xx-xx bin]$ cat client.properties security.protocol=SASL_SSL sasl.mechanism=AWS_MSK_IAM sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required awsRoleArn="<role arn>" awsStsRegion="<region name>"; sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler awsDebugCreds=true ssl.truststore.location=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.amzn2.0.1.x86_64/jre/lib/security/cacerts ssl.truststore.password=changeit
  8. Ejecute el siguiente comando de Kafka para enumerar temas. Si su conexión es pública, utilice los servidores de arranque de puntos de conexión públicos. Si su conexión es privada, utilice los servidores de arranque de puntos de conexión privados.

    bin/kafka-topics.sh --list --bootstrap-server <bootstrap servers> --command-config bin/client.properties

    Si la solicitud tiene éxito, debería ver un resultado similar al del siguiente ejemplo.

    [ec2-user@ip-xx-xx-xx-xx kafka_2.12-2.6.2]$ bin/kafka-topics.sh --list --bootstrap-server <bootstrap servers> --command-config bin/client.properties [xxxx-xx-xx 05:49:50,877] WARN The configuration 'awsDebugCreds' was supplied but isn't a known config. (org.apache.kafka.clients.admin.AdminClientConfig) [xxxx-xx-xx 05:49:50,878] WARN The configuration 'ssl.truststore.location' was supplied but isn't a known config. (org.apache.kafka.clients.admin.AdminClientConfig) [xxxx-xx-xx 05:49:50,878] WARN The configuration 'sasl.jaas.config' was supplied but isn't a known config. (org.apache.kafka.clients.admin.AdminClientConfig) [xxxx-xx-xx 05:49:50,878] WARN The configuration 'sasl.client.callback.handler.class' was supplied but isn't a known config. (org.apache.kafka.clients.admin.AdminClientConfig) [xxxx-xx-xx 05:49:50,878] WARN The configuration 'ssl.truststore.password' was supplied but isn't a known config. (org.apache.kafka.clients.admin.AdminClientConfig) [xxxx-xx-xx 05:50:21,629] WARN [AdminClient clientId=adminclient-1] Connection to node... __amazon_msk_canary __consumer_offsets
  9. Si tiene problemas al ejecutar el script anterior, compruebe que los servidores de arranque que proporcionó estén accesibles en el puerto especificado. Para ello, puede descargar y utilizar telnet o una utilidad similar, como se muestra en el siguiente comando.

    sudo yum install telnet telnet <bootstrap servers><port>

    Si la solicitud se realiza correctamente, obtendrá el siguiente resultado. Esto significa que puede conectarse al clúster de MSK dentro de la VPC local y que los servidores de arranque funcionan correctamente en el puerto especificado.

    Connected to ..
  10. Si la solicitud no se realiza correctamente, compruebe las reglas de entrada del grupo de seguridad de la VPC. Por ejemplo, podría utilizar las propiedades siguientes en la regla de entrada.

    Type: All traffic Port: Port used by the bootstrap server (e.g. 14001) Source: 0.0.0.0/0

    Vuelva a intentar la conexión telnet como se muestra en el paso anterior. Si sigue sin poder conectarse o la conexión de Firehose sigue fallando, comuníquese con el servicio de asistencia de AWS.