Résoudre les problèmes de Openflow Connector for Kinesis

Note

Ce connecteur est soumis aux conditions d’utilisation de Snowflake Connector.

Ce chapitre décrit comment résoudre les problèmes courants liés au Openflow Connector for Kinesis.

Problèmes courants

Les messages ne sont pas ingérés

Symptôme

Le processeur ConsumeKinesis dans un groupe de processus Kinesis JSON Source est en cours d’exécution, mais aucune donnée n’est produite et aucun message d’erreur n’est émis.

Cause

Une erreur s’est peut-être produite dans une bibliothèque AWS KCL sous-jacente, qui n’a pas impacté l’UI d’Openflow.

Solution

Vérifiez les journaux KCL pour identifier l’erreur sous-jacente.

Les files d’attente FlowFile sont pleines

Symptôme

Les files d’attente FlowFile sont remplies et le connecteur ne traite pas les données assez rapidement.

Cause

Les processeurs en aval ne peuvent pas suivre le débit des données entrantes. Le processeur le plus lent est probablement Put Data To Snowflake de type PutSnowpipeStreaming dans un groupe de processus Streaming Destination.

Solution

Ajustez le nombre de tâches simultanées pour le processeur. Les tâches simultanées permettent aux processeurs d’exécuter plusieurs threads simultanément, ce qui améliore le débit des scénarios à haut volume.

Pour ajuster les tâches simultanées pour un processeur, effectuez les tâches suivantes :

  1. Cliquez avec le bouton droit de la souris sur le processeur dans le canevas Openflow.

  2. Sélectionnez Configure dans le menu contextuel.

  3. Accédez à l’onglet Scheduling.

  4. Dans le champ Concurrent tasks, entrez le nombre préféré de tâches simultanées.

  5. Sélectionnez Apply pour enregistrer la configuration.

Snowflake recommande les valeurs suivantes pour le nombre de tâches, bien que la valeur correcte puisse varier pour un cas d’utilisation particulier :

  • 1-2 sur les environnements d’exécution de petite taille

  • 2-4 sur des environnements d’exécution de taille moyenne

  • 6-8 sur des environnements d’exécution de grande taille

Après avoir modifié le nombre de tâches, observez le processeur pour vous assurer que l’augmentation du nombre de tâches améliore le débit.

Vérifier les journaux KCL

Le connecteur utilise la ` bibliothèque client Kinesis AWS (KCL) v3 <https://docs.aws.amazon.com/streams/latest/dev/kcl.html>`_ sous le capot. Les erreurs qui se produisent dans KCL ne sont pas toujours propagées à l’UI d’Openflow, donc vérifier les journaux KCL peut être nécessaire pour le dépannage.

Les journaux KCL sont stockés dans une table d’événements configurée. Vous pouvez les récupérer à l’aide de la requête suivante :

SELECT
    timestamp,
    runtime_key,
    resource_attributes,
    log,
    log:formattedMessage,
FROM (
    SELECT
        timestamp,
        resource_attributes,
        resource_attributes:"openflow.dataplane.id" AS deployment_id,
        resource_attributes:"k8s.namespace.name" AS runtime_key,
        resource_attributes:"k8s.pod.name" AS runtime_pod,
        TRY_PARSE_JSON(value) AS log,
    FROM <event_table>
    WHERE TRUE
        AND timestamp > DATEADD(minute, -30, SYSDATE())
        AND record_type = 'LOG'
        AND runtime_key = 'runtime-<runtime_name>'
        AND resource_attributes:"k8s.container.name" ILIKE '%-server'
)
WHERE TRUE
    AND log:loggerName LIKE 'software.amazon.kinesis.%'
    AND log:level IN ('WARN', 'ERROR')
ORDER BY timestamp DESC
;
Copy

Remplacez <event_table> with a configured event table name and <runtime_name> avec un nom d’exécution.

Erreurs KCL courantes

Cette section décrit les erreurs courantes qui peuvent apparaître dans les journaux KCL et comment les résoudre.

Erreur : L’utilisateur n’est pas autorisé

Message d’erreur

User: **** is not authorized to perform: kinesis:RegisterStreamConsumer on
resource: arn:aws:kinesis:us-east-2:***:stream/*** because no identity-based
policy allows the kinesis:RegisterStreamConsumer action (Service: Kinesis,
Status Code: 400, Request ID: ***, Extended Request ID: ***)
(SDK Attempt Count: 1)
Copy

Cause

L’utilisateur AWS configuré ne dispose pas des autorisations nécessaires pour accéder au flux Kinesis.

Solution

Assurez-vous que l’utilisateur AWS est configuré avec les autorisations spécifiées dans les IAM autorisations requises pour les applications des consommateurs KCL.

Erreur : UnknownHostException

Message d’erreur

java.net.UnknownHostException: dynamodb.eu-west-1.amazonaws.com
Copy

Cause

Si l’environnement d’exécution utilise un déploiement Snowflake, la règle de réseau est probablement mal configurée.

Solution

Assurez-vous que les domaines AWS requis sont autorisés dans la liste d’autorisation de votre règle réseau. Pour la liste des domaines requis, voir Configuration de Openflow - Snowflake Deployment : Configurer les domaines autorisés pour les connecteurs Openflow.

Erreur : aucun fragment trouvé

Message d’erreur

java.lang.IllegalStateException: No shards found when attempting to
validate complete hash range.
Copy

Cause

Cette erreur peut se produire si le flux Kinesis n’existe pas ou si la région AWS est mal spécifiée.

Solution

  1. Vérifiez les journaux KCL pour des messages tels que :

    Got ResourceNotFoundException when fetching shard list for stream-name.
    Stream no longer exists.
    
    Copy
  2. Vérifiez que le nom du flux est correct et que le flux existe dans AWS.

  3. Vérifiez que la région AWS est spécifiée correctement dans la configuration du connecteur.