Débogage des applications
Découvrez comment traiter les incidents liés aux applications IBM Cloud® Code Engine.
Si votre application ne se comporte pas comme prévu, consultez les journaux et les événements système pour obtenir des informations pouvant contribuer au débogage.
Limites d'application à prendre en compte
Le nombre maximal d'applications que vous pouvez créer par projet est de 40. Vous disposez d'un total de 120 révisions pour l'ensemble des applications d'un même projet. Code Engine ne conserve que la dernière révision inactive de votre application, en plus de la révision active de celle-ci. Les révisions plus anciennes sont supprimées. Voir Mise à jour des applications.
Pour plus d'informations sur les limites applicables aux applications, notamment en matière de mémoire et de CPU, consultez la page « Limites et quotas » sur 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
Confirmer la valeur du port
Code Engine nécessite que vous disposiez d'un point de terminaison HTTP que Code Engine utilise pour vérifier l'état de santé de votre application.
Par défaut, Code Engine part de l'hypothèse que les applications sont à l'écoute des connexions entrantes sur le port 8080. De plus, la commande Code Engine définit la variable d'environnement PORT sur la valeur du port sur lequel l'application est censée être à l'écoute. Si votre application doit écouter sur un port autre que le port 8080, vous pouvez soit la déployer depuis la console en spécifiant le port correct, soit
utiliser l'option --port de la app create commande. Pour plus d'informations sur les variables d'environnement définies par Code Engine, voir Variables d'environnement injectées automatiquement.
Les ports suivants sont réservés par Code Engine: 8022, 8008, 8012, 9090, 9091 et 15090. Un seul port peut être exposé en tant que port d'écoute.
Obtention des journaux pour mes applications
Les journaux peuvent être utiles pour identifier et résoudre les incidents lorsque vous exécutez des applications. Vous pouvez consulter les journaux d'application 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 application Code Engine. Code Engine facilite l'activation de la journalisation pour vos applications. Vous pouvez afficher les journaux d'application une fois les fonctions de journalisation ajoutées. Pour plus d'informations, voir Affichage des journaux d'application à partir de la console.
Lorsque vous utilisez l'interface de ligne de commande (CLI), vous pouvez afficher les journaux de toutes les instances d'une application ou ceux d'une instance spécifique de cette application.
-
Utilisez la commande
ibmcloud ce app listpour répertorier toutes vos applications définies dans votre projet ; par exemple,ibmcloud ce app list -
Utilisez la commande
ibmcloud ce app getpour obtenir les détails de votre application, incluant le nom des instances de l'application, par exemple :ibmcloud ce app get --name myappExemple de sortie
Run 'ibmcloud ce application events -n myapp' to get the system events of the application instances. Run 'ibmcloud ce application logs -f -n myapp' to follow the logs of the application instances. OK Name: myapp [...] Created: 2021-02-23T07:32:16-05:00 URL: https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud Cluster Local URL: http://myapp.4svg40kna19.svc.cluster.local Console URL: https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration Status Summary: Application deployed successfully Image: icr.io/codeengine/hello Resource Allocation: CPU: 1 Ephemeral Storage: 400M Memory: 4G Revisions: myapp-atfte-2: Age: 51s Traffic: 100% Image: icr.io/codeengine/hello (pinned to e69c88) Running Instances: 2 Runtime: Concurrency: 100 Maximum Scale: 10 Minimum Scale: 2 Timeout: 300 Conditions: Type OK Age Reason ConfigurationsReady true 36s Ready true 10s RoutesReady true 10s Instances: Name Revision Running Status Restarts Age myapp-atfte-2-deployment-7cb45cdf67-qc7sb myapp-atfte-2 2/2 Running 0 52s myapp-atfte-2-deployment-7cb45cdf67-sp9fr myapp-atfte-2 2/2 Running 0 52sSi vous souhaitez plus de détails à granularité fine sur votre application, utilisez l'option
--o yamlavec la commandeapp get; par exemple,ibmcloud ce app get --name myapp --o yaml. Cette option est utile pour afficher des informations plus détaillées dans l'interface de ligne de commande de l'application. -
Affichez les journaux des instances de votre application.
- Pour afficher les journaux d'une instance spécifique de votre application, utilisez la commande
ibmcloud ce app logs --instance INSTANCE_NAME, par exemple :
ibmcloud ce app logs --instance myapp-atfte-2-deployment-7cb45cdf67-qc7sb ``` Exemple de sortie ```txt {: screen} Getting logs for application instance 'myapp-atfte-2-deployment-7cb45cdf67-qc7sb'... OK myapp-atfte-2-deployment-7cb45cdf67-qc7sb/user-container: Server running at http://0.0.0.0:8080/ ``` * Pour afficher les journaux de toutes les instances de votre application, utilisez la commande [**`app logs --application APP_NAME`**](/docs/codeengine?topic=codeengine-cli#cli-application-logs) ; par exemple, ```txt {: pre} ibmcloud ce app logs --app myapp ``` Exemple de sortie ```txt {: screen} Getting logs for all instances of application 'myapp'... OK myapp-atfte-2-deployment-7cb45cdf67-qc7sb/user-container: Server running at http://0.0.0.0:8080/ myapp-atfte-2-deployment-7cb45cdf67-sp9fr/user-container: Server running at http://0.0.0.0:8080/ ``` - Pour afficher les journaux d'une instance spécifique de votre application, utilisez la commande
Pour plus d'informations, voir Affichage des journaux d'application à l'aide de l'interface de ligne de commande.
Obtention de détails sur les instances d'application
Avec la console Code Engine, vous pouvez afficher les détails de toutes vos instances d'application. Les détails de vos instances d'application sont utiles si vous recevez un message d'avertissement sur les instances de votre application. Il se peut également que votre application ait le statut Prêt mais qu'elle ne fonctionne pas correctement car elle ne sert pas les demandes.
Pour plus de détails sur les instances d'application, accédez à la page d'application. Depuis la page d'application, vous pouvez accéder à l'onglet Instances et examiner les instances en cours de l'application. L'ensemble d'instances change à mesure que votre application est mise à l'échelle, en fonction de la configuration de mise à l'échelle. Utilisez les informations relatives aux instances d'application pour vous aider à identifier et résoudre les problèmes liés à votre application.
Le nombre de redémarrages correspond au nombre de redémarrages du conteneur utilisateur depuis la création de l'instance spécifique. La valeur de taux de redémarrage est considérée comme élevée si le nombre moyen de redémarrages du conteneur utilisateur depuis la création de l'instance est de 3 fois ou plus par jour.
Si nécessaire, utilisez des filtres pour vous aider à limiter les résultats de vos instances d'application. Vous pouvez choisir de filtrer le nom de la révision d'application ou le statut de l'instance d'application.
Vous pouvez passer en revue les détails d'une instance d'application spécifique pour un examen plus approfondi. Pour ouvrir la page des détails d'une instance spécifique, effectuez l'une des actions suivantes.
- Cliquez sur la ligne de l'instance de votre choix.
- Cliquez sur l'icône Actions
> Détails de l'instance pour afficher les détails de l'instance spécifiée.
Utilisez les informations supplémentaires de la page des détails de l'instance pour vous aider à identifier et résoudre les problèmes liés à votre application. Vous pouvez utiliser les informations sur les heures de démarrage et de redémarrage, les informations de code de sortie et de code anomalie, le statut du conteneur et les derniers messages de journal pour vous aider à déboguer votre application. Un conteneur utilisateur inclut votre code d'exécution (l'image que vous avez spécifiée lors de la création de l'application). Alors qu'un conteneur système gère des tâches système telles que le transfert de demandes au conteneur utilisateur ou la collecte de métriques.
Les scénarios suivants sont des exemples dans lesquels vous pouvez utiliser les détails de l'instance d'application spécifique pour vous aider à identifier et résoudre les problèmes liés à votre application.
- Si l'application est en état « prêt », mais qu'elle ne traite pas les requêtes HTTP, consultez les détails des instances spécifiques de l'application pour connaître les raisons pour lesquelles l'instance de l'application ne traite pas les requêtes HTTP.
- Si vous disposez d'une instance dont le statut est
failed, l'image de l'application n'est peut-être pas valide ou n'est peut-être pas disponible. - Si le nombre de redémarrages d'une instance est élevé, il se peut que votre application ait échoué en raison d'une erreur de programmation, que la limite de stockage temporaire ait été atteinte ou qu'une condition de mémoire insuffisante se soit produite. Lorsque ce scénario se produit, l'instance est arrêtée et redémarrée en permanence. Les informations sur l'heure du dernier redémarrage peuvent vous aider à déterminer si l'instance d'application présente un problème continu qui provoque des redémarrages ou si le problème est peu fréquent.
Obtention des informations sur les événements système pour mes applications
Les informations d'événement système peuvent être utiles pour identifier et résoudre les incidents lorsque vous exécutez des applications. Vous pouvez afficher des informations sur les événements système depuis l'interface de ligne de commande.
Vous pouvez afficher des évènements système pour toutes les instances d'une application ou afficher des évènements système d'une instance spécifique d'une application.
-
Utilisez la commande
ibmcloud ce app listpour répertorier toutes vos applications définies ; par exemple,ibmcloud ce app list -
Utilisez la commande
ibmcloud ce app getpour obtenir les détails de votre application, incluant le nom des instances de l'application, par exemple :ibmcloud ce app get --name myappExemple de sortie
Run 'ibmcloud ce application events -n myapp' to get the system events of the application instances. Run 'ibmcloud ce application logs -f -n myapp' to follow the logs of the application instances. OK Name: myapp [...] Created: 2021-02-23T07:32:16-05:00 URL: https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud Cluster Local URL: http://myapp.4svg40kna19.svc.cluster.local Console URL: https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration Status Summary: Application deployed successfully Image: icr.io/codeengine/hello Resource Allocation: CPU: 1 Ephemeral Storage: 400M Memory: 4G Revisions: myapp-atfte-2: Age: 51s Traffic: 100% Image: icr.io/codeengine/hello (pinned to e69c88) Running Instances: 2 Runtime: Concurrency: 100 Maximum Scale: 10 Minimum Scale: 2 Timeout: 300 Conditions: Type OK Age Reason ConfigurationsReady true 36s Ready true 10s RoutesReady true 10s Events: Type Reason Age Source Messages Normal Created 3m55s service-controller Created Configuration "myapp" Normal Created 3m54s service-controller Created Route "myapp" Instances: Name Revision Running Status Restarts Age myapp-atfte-2-deployment-7cb45cdf67-qc7sb myapp-atfte-2 2/2 Running 0 52s myapp-atfte-2-deployment-7cb45cdf67-sp9fr myapp-atfte-2 2/2 Running 0 52sSi vous souhaitez plus de détails à granularité fine sur votre application, utilisez l'option
--o yamlavec la commandeapp get; par exemple,ibmcloud ce app get --name myapp --o yaml. Cette option est utile pour afficher des informations plus détaillées dans l'interface de ligne de commande de l'application. -
Affichez les événements système des instances de votre application.
- Pour afficher les événements d'une instance spécifique de votre application, utilisez la commande
ibmcloud ce app events --instance INSTANCE_NAME, par exemple :
ibmcloud ce app events --instance myapp-atfte-2-deployment-7cb45cdf67-qc7sb ``` Exemple de sortie ```txt {: screen} Getting events for application instance 'myapp-atfte-2-deployment-7cb45cdf67-qc7sb'... OK myapp-atfte-2-deployment-7cb45cdf67-qc7sb: Type Reason Age Source Messages Normal Scheduled 46m default-scheduler Successfully assigned 4svg40kna19/myapp-atfte-2-deployment-7cb45cdf67-qc7sb to 10.240.64.20 Normal Pulling 45m kubelet, 10.240.64.20 Pulling image "index.icr.io/codeengine/hello@sha256:e69c88d7f33778b8266cd480b79522f13968c72aca1287f47603ab711208c980" Normal Pulled 45m kubelet, 10.240.64.20 Successfully pulled image "index.icr.io/codeengine/hello@sha256:e69c88d7f33778b8266cd480b79522f13968c72aca1287f47603ab711208c980" in 3.64261536s Normal Created 45m kubelet, 10.240.64.20 Created container user-container [...] ``` * Pour afficher les évènements de toutes les instances de votre application, utilisez la commande [**`ibmcloud ce app events --application APP_NAME`**](/docs/codeengine?topic=codeengine-cli#cli-application-events) ; par exemple, ```txt {: pre} ibmcloud ce app events --app myapp ``` Exemple de sortie ```txt {: screen} Getting events for all instances of application 'myapp'... OK myapp-atfte-2-deployment-7cb45cdf67-qc7sb: Type Reason Age Source Messages Normal Scheduled 47m default-scheduler Successfully assigned 4svg40kna19/myapp-atfte-2-deployment-7cb45cdf67-qc7sb to 10.240.64.20 Normal Pulling 47m kubelet, 10.240.64.20 Pulling image "icr.io/codeengine/hello@sha256:e69c88d7f33778b8266cd480b79522f13968c72aca1287f47603ab711208c980" Normal Pulled 47m kubelet, 10.240.64.20 Successfully pulled image "icr.io/codeengine/hello@sha256:e69c88d7f33778b8266cd480b79522f13968c72aca1287f47603ab711208c980" in 3.64261536s Normal Created 46m kubelet, 10.240.64.20 Created container user-container Normal Started 46m kubelet, 10.240.64.20 Started container user-container [...] myapp-atfte-2-deployment-7cb45cdf67-sp9fr: Type Reason Age Source Messages Normal Scheduled 47m default-scheduler Successfully assigned 4svg40kna19/myapp-atfte-2-deployment-7cb45cdf67-sp9fr to 10.240.0.24 Normal Pulling 47m kubelet, 10.240.0.24 Pulling image "icr.io/codeengine/hello@sha256:e69c88d7f33778b8266cd480b79522f13968c72aca1287f47603ab711208c980" Normal Pulled 47m kubelet, 10.240.0.24 Successfully pulled image "icr.io/codeengine/hello@sha256:e69c88d7f33778b8266cd480b79522f13968c72aca1287f47603ab711208c980" in 3.682464554s Normal Created 46m kubelet, 10.240.0.24 Created container user-container Normal Started 46m kubelet, 10.240.0.24 Started container user-container [...] ``` - Pour afficher les événements d'une instance spécifique de votre application, utilisez la commande
Vérification de la référence d'image de conteneur pour mon application
Lorsque vous utilisez des applications 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 l'application 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 de l'application.