Débogage des travaux

Apprenez à traiter les incidents liés aux travaux IBM Cloud® Code Engine et aux exécutions de votre travail.

Limites relatives aux travaux à prendre en compte

Le nombre maximal de travaux possibles par projet est 100. Si vous atteignez le nombre total de 100 exécutions de travail par projet, vous devez retirer ou nettoyer d'anciennes exécutions.

Pour plus d'informations sur les limites pour les travaux, notamment relatives à la mémoire et à l'unité centrale, voir Limites et quotas pour Code Engine.

Avec l'interface de ligne de commande, vous pouvez utiliser la commande ibmcloud ce project get pour afficher des informations sur les limites et l'utilisation actuelle. Exemple :

ibmcloud ce project get --name myproject

Exemple de sortie

Getting project 'myproject'...
OK
Name:                                      myproject
ID:                         abcdabcd-abcd-abcd-abcd-f1de4aab5d5d
Status:                                    active
Enabled:                                   true
Application Private Visibility Supported:  true
Selected:                                  true
Region:                                    us-south
Resource Group:             default
Service Binding Service ID: ServiceId-1234abcd-abcd-abcd-1111-1a2b3c4d5e6f
Age:                        52d
Created:                                   Tue, 28 Sep 2021 05:12:16 -0500
Updated:                                   Tue, 28 Sep 2021 05:12:19 -0500
Quotas:
Category                                  Used  Limit
App revisions                             2    120
Apps                                      1     40
Build runs                                1     100
Builds                                    2     100
Configmaps                                2     100
CPU                                       0     128
Ephemeral storage                         0     512G
Functions                                 0     20
Instances (active)                        0     250
Instances (total)                         0     2500
Job runs                                 13     100
Jobs                                      2     100
Memory                                    0     512G
Secrets                                   6     100
Subscriptions (cron)                      0     100
Subscriptions (IBM Cloud Object Storage)  0     100
Subscriptions (Kafka)                     0     100

Obtention des journaux pour mes travaux

Les journaux peuvent être utiles pour identifier et résoudre les incidents lorsque vous exécutez des travaux. Vous pouvez consulter les journaux de travail depuis la console ou l'interface de ligne de commande.

Lorsque vous consultez des journaux depuis la console, vous devez créer une instance d'IBM Cloud Logs dans la région dans laquelle se trouve votre projet Code Engine. Vous n'êtes pas obligé de créer cette instance avant de travailler avec votre tâcheCode Engine. Code Engine facilite l'activation de la journalisation pour vos travaux. Vous pouvez afficher les journaux de travail après avoir ajouté des fonctions de journalisation. Pour plus d'informations, voir Affichage des journaux de travail à partir de la console.

Lorsque vous utilisez l'interface de ligne de commande, vous pouvez afficher les journaux de toutes les instances de votre travail en cours d'exécution ou afficher les journaux d'une instance spécifique de votre travail.

  1. Utilisez la commande ibmcloud ce jobrun list pour répertorier tous les exécutions de travail définies ; par exemple,

    ibmcloud ce jobrun list
    
  2. Utilisez la commande ibmcloud ce jobrun get pour obtenir les détails de votre exécution de travail, notamment le nom des instances de l'exécution de travail, par exemple :

    ibmcloud ce jobrun get --name myjobrun
    

    Exemple de sortie

    Getting jobrun 'myjobrun'...
    Getting instances of jobrun 'myjobrun'...
    Getting events of jobrun 'myjobrun'...
    Run 'ibmcloud ce jobrun events -n myjobrun' to get the system events of the job run instances.
    Run 'ibmcloud ce jobrun logs -f -n myjobrun' to follow the logs of the job run instances.
    OK
    Name:          myjobrun
    [...]
    Created:       2021-03-03T14:47:04-05:00
    Image:                icr.io/codeengine/firstjob
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  400M
        Memory:             4G
    Runtime:
        Mode:                  task
        Array Indices:         1 - 4
        Array Size:            4
        JOP_ARRAY_SIZE Value:  4
        Max Execution Time:    7200
        Retry Limit:           3
    Status:
        Completed:          28m
        Instance Statuses:
        Succeeded:  4
        Conditions:
        Type      Status  Last Probe  Last Transition
        Pending   True    28m         28m
        Running   True    28m         28m
        Complete  True    28m         28m
    Events:
        Type    Reason     Age                Source                Messages
        Normal  Updated    29m (x8 over 29m)  batch-job-controller  Updated JobRun "myjobrun"
        Normal  Completed  29m                batch-job-controller  JobRun completed successfully
    Instances:
        Name          Running  Status     Restarts  Age
        myjobrun-1-0  0/1      Succeeded  0         29m
        myjobrun-2-0  0/1      Succeeded  0         29m
        myjobrun-3-0  0/1      Succeeded  0         29m
        myjobrun-4-0  0/1      Succeeded  0         29m
    

    Si vous souhaitez obtenir des détails plus détaillés sur l'exécution de votre travail, utilisez l'option --o yaml avec la commande**jobrun get** ; par exemple,ibmcloud ce jobrun get --name myjobrun --o yaml. Cette option permet d'afficher des informations plus détaillées dans l'interface de ligne de commande pour l'exécution du travail.

  3. Affichez les journaux des instances de votre exécution de travail.

        ibmcloud ce jobrun logs --instance  myjobrun-4-0
        ```
        Exemple de sortie
    
        ```txt {: screen}
        Getting logs for job run instance 'myjobrun-4-0'...
        OK
        myjobrun-4-0/myjobrun:
        Hi from a batch job! My index is: 4
        ```
    * Pour afficher les journaux de toutes les instances de l'exécution de votre travail, utilisez la commande [**`ibmcloud ce jobrun logs --jobrun JOBRUN_NAME`**](/docs/codeengine?topic=codeengine-cli#cli-jobrun-logs) ; par exemple,
    
    ```txt {: pre}
        ibmcloud ce jobrun logs --jobrun myjobrun
        ```
        Exemple de sortie
    
        ```txt {: screen}
        Getting logs for all instances of job run 'myjobrun'...
        Getting jobrun 'myjobrun'...
        Getting instances of jobrun 'myjobrun'...
        OK
        myjobrun-1-0/myjobrun:
        Hi from a batch job! My index is: 1
        myjobrun-2-0/myjobrun:
        Hi from a batch job! My index is: 2
        myjobrun-3-0/myjobrun:
        Hi from a batch job! My index is: 3
        myjobrun-4-0/myjobrun:
        Hi from a batch job! My index is: 4
        ```
    

Pour plus d'informations, voir Affichage des journaux de travail à l'aide de l'interface de ligne de commande.

Obtention des informations sur les événements système pour mes travaux

Les informations d'événement système peuvent être utiles pour identifier et résoudre les incidents lorsque vous exécutez des travaux. Vous pouvez afficher des informations sur les événements système depuis l'interface de ligne de commande.

Vous pouvez afficher les évènements système de toutes les instances d'un travail d'exécution ou d'affichage d’évènements système d'une instance spécifique d'une exécution de travail.

  1. Utilisez la commande ibmcloud ce jobrun list pour répertorier tous les exécutions de travail définies ; par exemple,

    ibmcloud ce jobrun list
    
  2. Utilisez la commande ibmcloud ce jobrun get pour obtenir les détails de votre exécution de travail, notamment le nom des instances de l'exécution de travail, par exemple :

    ibmcloud ce jobrun get --name myjobrun
    

    Exemple de sortie

    Getting jobrun 'myjobrun'...
    Getting instances of jobrun 'myjobrun'...
    Getting events of jobrun 'myjobrun'...
    OK
    Name:          myjobrun
    [...]
    Created:       2021-03-03T14:47:04-05:00
    Image:                icr.io/codeengine/firstjob
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  400M
        Memory:             4G
    Runtime:
        Mode:                  task
        Array Indices:         1 - 4
        Array Size:            4
        JOP_ARRAY_SIZE Value:  4
        Max Execution Time:    7200
        Retry Limit:           3
    Status:
        Completed:          28m
        Instance Statuses:
        Succeeded:  4
        Conditions:
        Type      Status  Last Probe  Last Transition
        Pending   True    28m         28m
        Running   True    28m         28m
        Complete  True    28m         28m
    Events:
        Type    Reason     Age                Source                Messages
        Normal  Updated    29m (x8 over 29m)  batch-job-controller  Updated JobRun "myjobrun"
        Normal  Completed  29m                batch-job-controller  JobRun completed successfully
    Instances:
        Name          Running  Status     Restarts  Age
        myjobrun-1-0  0/1      Succeeded  0         29m
        myjobrun-2-0  0/1      Succeeded  0         29m
        myjobrun-3-0  0/1      Succeeded  0         29m
        myjobrun-4-0  0/1      Succeeded  0         29m
    

    Si vous souhaitez obtenir des détails plus détaillés sur l'exécution de votre travail, utilisez l'option --o yaml avec la commande**jobrun get** ; par exemple,ibmcloud ce jobrun get --name myjobrun --o yaml. Cette option permet d'afficher des informations plus détaillées dans l'interface de ligne de commande pour l'exécution du travail.

  3. Affichez les événements système des instances de votre exécution de travail.

        ibmcloud ce jobrun events --instance myjobrun-4-0
        ```
        Exemple de sortie
    
        ```txt {: screen}
        Getting events for job run instance 'myjobrun-4-0'...
        OK
        myjobrun-4-0:
        Type    Reason     Age    Source                 Messages
        Normal  Scheduled  2m14s  default-scheduler      Successfully assigned 4svg40kna19/myjobrun-4-0 to 10.240.64.10
        Normal  Pulling    2m13s  kubelet, 10.240.64.10  Pulling image "icr.io/codeengine/firstjob"
        Normal  Pulled     2m12s  kubelet, 10.240.64.10  Successfully pulled image "icr.io/codeengine/firstjob" in 1.234456436s
        Normal  Created    2m11s  kubelet, 10.240.64.10  Created container myjobrun
        Normal  Started    2m11s  kubelet, 10.240.64.10  Started container myjobrun
        ```
    * Pour afficher les évènements de toutes les instances de l'exécution de votre travail, utilisez la commande [**`ibmcloud ce jobrun events --jobrun JUBRUN_NAME`**](/docs/codeengine?topic=codeengine-cli#cli-jobrun-events) ; par exemple,
    
    ```txt {: pre}
        ibmcloud ce jobrun events --jobrun myjobrun
        ```
        Exemple de sortie
    
        ```txt {: screen}
        Getting jobrun 'myjobrun'...
        Getting instances of jobrun 'myjobrun'...
        Getting events for all instances of job run 'myjobrun'...
        OK
        myjobrun-1-0:
        Type    Reason     Age  Source                  Messages
        Normal  Scheduled  66s  default-scheduler       Successfully assigned 4svg40kna19/myjobrun-1-0 to 10.240.128.22
        Normal  Pulling    65s  kubelet, 10.240.128.22  Pulling image "icr.io/codeengine/firstjob"
        Normal  Pulled     64s  kubelet, 10.240.128.22  Successfully pulled image "icr.io/codeengine/firstjob" in 427.276949ms
        Normal  Created    64s  kubelet, 10.240.128.22  Created container myjobrun
        Normal  Started    64s  kubelet, 10.240.128.22  Started container myjobrun
        myjobrun-2-0:
        Type    Reason     Age  Source                Messages
        Normal  Scheduled  66s  default-scheduler     Successfully assigned 4svg40kna19/myjobrun-2-0 to 10.240.0.11
        Normal  Pulling    65s  kubelet, 10.240.0.11  Pulling image "icr.io/codeengine/firstjob"
        Normal  Pulled     63s  kubelet, 10.240.0.11  Successfully pulled image "icr.io/codeengine/firstjob" in 1.268252989s
        Normal  Created    63s  kubelet, 10.240.0.11  Created container myjobrun
        Normal  Started    63s  kubelet, 10.240.0.11  Started container myjobrun
        myjobrun-3-0:
        Type    Reason     Age  Source                Messages
        Normal  Scheduled  66s  default-scheduler     Successfully assigned 4svg40kna19/myjobrun-3-0 to 10.240.0.37
        Normal  Pulling    65s  kubelet, 10.240.0.37  Pulling image "icr.io/codeengine/firstjob"
        Normal  Pulled     63s  kubelet, 10.240.0.37  Successfully pulled image "icr.io/codeengine/firstjob" in 1.118647987s
        Normal  Created    63s  kubelet, 10.240.0.37  Created container myjobrun
        Normal  Started    63s  kubelet, 10.240.0.37  Started container myjobrun
        myjobrun-4-0:
        Type    Reason     Age  Source                 Messages
        Normal  Scheduled  66s  default-scheduler      Successfully assigned 4svg40kna19/myjobrun-4-0 to 10.240.64.10
        Normal  Pulling    65s  kubelet, 10.240.64.10  Pulling image "icr.io/codeengine/firstjob"
        Normal  Pulled     64s  kubelet, 10.240.64.10  Successfully pulled image "icr.io/codeengine/firstjob" in 1.234456436s
        Normal  Created    63s  kubelet, 10.240.64.10  Created container myjobrun
        Normal  Started    63s  kubelet, 10.240.64.10  Started container myjobrun
        ```
    

Comprendre pourquoi les index d'exécution de tâches peuvent échouer

Lorsque les index d'exécution de tâches échouent dans la console, vous pouvez rechercher les erreurs et le raisonnement pour vous aider à résoudre les problèmes, à les rectifier, puis à réexécuter les index d'exécution de tâches.

Pour gérer vos tâches et vos exécutions de tâches, depuis la page « Projets » d’ Code Engine, cliquez sur le nom de votre projet dans la liste des projets, puis cliquez sur « Tâches ». Dans l'onglet « Exécutions de tâches », consultez les instances d'exécution des tâches. Les exécutions de tâches incomplètes apparaissent sous la mention « Failed (<error>) » dans la colonne « Statut ». Le tableau suivant présente les erreurs courantes de l'index d'exécution du travail et les mesures à prendre :

Erreurs et raisons de l'échec de l'exécution du job indexes
Erreur Explication Action suggérée pour l'utilisateur
ContainerExitedCode Une erreur dont le code de sortie est fourni par la charge de travail de l'utilisateur. Déterminez la raison du code de sortie dans votre application et déboguez-la.
ExceededEphemeralStorage L'instance a alloué plus de stockage éphémère dans son conteneur que ce qui est autorisé. Augmenter le stockage éphémère de votre ressource.
ExecutableNotFound Impossible de trouver le fichier exécutable spécifié dans le conteneur. Le conteneur ne peut pas démarrer sans lui. Vérifiez que le point d'entrée spécifié dans votre image de conteneur est correct et que l'exécutable existe dans l'image.
MaxExecutionTimeExceeded L'exécution du travail ne s'est pas terminée dans le délai d'exécution maximum. Si plusieurs instances étaient en cours d'exécution, toutes les instances qui ne se sont pas encore terminées affichent cette erreur. Augmenter la valeur du délai d'exécution du travail.
OOMKilled Une erreur de mémoire est survenue. L'instance a dépassé la limite de mémoire allouée. Augmentez l'unité centrale et la mémoire de votre ressource.

Après avoir corrigé les erreurs, cliquez sur Réexécuter les index qui ont échoué pour réexécuter le travail pour les index qui ont échoué.

Vérification de la référence d'image de conteneur pour mon travail

Lorsque vous utilisez des travaux Code Engine, vous devez spécifier une référence d'image de conteneur et un secret de registre pour accéder à l'image. Pour que le travail fonctionne correctement, la référence d'image et ses propriétés d'accès doivent rester valides pendant toute la durée de vie du travail.

Voir Comment vérifier ma référence d'image?