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.
-
Utilisez la commande
ibmcloud ce jobrun listpour répertorier tous les exécutions de travail définies ; par exemple,ibmcloud ce jobrun list -
Utilisez la commande
ibmcloud ce jobrun getpour 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 myjobrunExemple 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 29mSi vous souhaitez obtenir des détails plus détaillés sur l'exécution de votre travail, utilisez l'option
--o yamlavec 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. -
Affichez les journaux des instances de votre exécution de travail.
- Pour afficher les journaux d'une instance spécifique de votre exécution de travail, utilisez la commande
ibmcloud ce jobrun logs --instance INSTANCE_NAME, par exemple :
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 afficher les journaux d'une instance spécifique de votre exécution de travail, utilisez la commande
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.
-
Utilisez la commande
ibmcloud ce jobrun listpour répertorier tous les exécutions de travail définies ; par exemple,ibmcloud ce jobrun list -
Utilisez la commande
ibmcloud ce jobrun getpour 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 myjobrunExemple 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 29mSi vous souhaitez obtenir des détails plus détaillés sur l'exécution de votre travail, utilisez l'option
--o yamlavec 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. -
Affichez les événements système des instances de votre exécution de travail.
- Pour afficher les événements d'une instance spécifique de votre exécution de travail, utilisez la commande
ibmcloud ce jobrun events --instance INSTANCE_NAME, par exemple :
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 ``` - Pour afficher les événements d'une instance spécifique de votre exécution de travail, utilisez la commande
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 :
| 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.