Debug delle app
Segui i suggerimenti per la risoluzione dei problemi per imparare a risolvere i problemi relativi alle applicazioni IBM Cloud® Code Engine.
Quando la tua applicazione non si comporta come previsto, consultare i log e gli eventi di sistema può fornire informazioni che potrebbero aiutarti a eseguire il debug del problema.
Limiti app da considerare
Il numero massimo di app che è possibile creare per progetto è 40. Sei limitato a un totale di 120 revisioni per tutte le app per progetto. Code Engine conserva solo l'ultima revisione inattiva della tua applicazione in aggiunta alla tua revisione dell'applicazione attiva. Le revisioni precedenti vengono eliminate. Vedi Aggiornamento delle app.
Per ulteriori informazioni sui limiti per le applicazioni, inclusi memoria e CPU, consulta Limiti e quote per Code Engine.
Con la CLI, puoi utilizzare il comando ibmcloud ce project get per visualizzare le informazioni sui limiti e sull'uso corrente. Ad esempio:
ibmcloud ce project get --name myproject
Output di esempio
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
Conferma valore porta
Code Engine richiede che tu disponga di un endpoint HTTP che Code Engine utilizza per verificare lo stato di salute della tua app.
Per impostazione predefinita, Code Engine presume che le applicazioni siano in attesa di connessioni in entrata sulla porta 8080. Inoltre, Code Engine imposta la variabile d'ambiente PORT sul valore della porta su cui
l'applicazione è in ascolto. Se la tua applicazione deve essere in ascolto su una porta diversa dalla porta 8080, distribuisci la tua applicazione dalla console e specifica la porta corretta oppure utilizza l'opzione --port nel comando app create. Per ulteriori informazioni sulle variabili di ambiente impostate da Code Engine, consulta Variabili di ambiente inserite automaticamente.
Le seguenti porte sono riservate da Code Engine: 8022, 8008, 8012, 9090, 9091 e 15090. Solo una porta può essere esposta come porta di ascolto.
Ottenimento dei log per le mie app
I log possono essere utili per risolvere problemi quando esegui le applicazioni. Puoi visualizzare i log dell'applicazione dalla console o con la CLI.
Quando si visualizzano i log dalla console, è necessario creare un'istanza IBM Cloud Logs nella stessa regione del progetto Code Engine. Non devi creare questa istanza prima di lavorare con la tua applicazione Code Engine. Code Engine semplifica l'abilitazione della log per le tue applicazioni. Puoi visualizzare i log dell'applicazione dopo aver aggiunto funzionalità di registrazione. Per ulteriori informazioni, vedi visualizzazione dei log dell'applicazione dalla console.
Quando gestisci la CLI, puoi visualizzare i log per tutte le istanze di una applicazione o visualizzare i log di una specifica istanza di un'applicazione.
-
Utilizzare il comando
ibmcloud ce app listper elencare tutte le app definite nel progetto; ad esempio,ibmcloud ce app list -
Utilizza il comando
ibmcloud ce app getper ottenere i dettagli della tua applicazione, incluso il nome delle istanze per l'applicazione; ad esempio,ibmcloud ce app get --name myappOutput di esempio
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 52sSe desideri dettagli più dettagliati sulla tua applicazione, utilizza l'opzione
--o yamlcon il comandoapp get; ad esempioibmcloud ce app get --name myapp --o yaml. Questa opzione è utile per mostrare informazioni più dettagliate nella CLI per l'app. -
Visualizza i log delle istanze della tua applicazione.
- Per visualizzare i log di una specifica istanza della tua applicazione, utilizza il comando
ibmcloud ce app logs --instance INSTANCE_NAME; ad esempio,
ibmcloud ce app logs --instance myapp-atfte-2-deployment-7cb45cdf67-qc7sb ``` Output di esempio ```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/ ``` * Per visualizzare i log per tutte le istanze della tua applicazione, utilizza il comando [**`app logs --application APP_NAME`**](/docs/codeengine?topic=codeengine-cli#cli-application-logs) ; ad esempio, ```txt {: pre} ibmcloud ce app logs --app myapp ``` Output di esempio ```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/ ``` - Per visualizzare i log di una specifica istanza della tua applicazione, utilizza il comando
Per ulteriori informazioni, consulta Visualizzazione dei log dell'applicazione con la CLI.
Acquisizione dei dettagli sulle istanze dell'applicazione
Con la console Code Engine puoi visualizzare i dettagli di tutte le istanze della tua applicazione. I dettagli delle tue istanze dell'applicazione sono utili se ricevi un messaggio di avviso sulle istanze della tua applicazione. Oppure, forse la tua applicazione è in uno stato di pronto ma non funziona correttamente in quanto non serve le richieste.
Per i dettagli delle istanze dell'applicazione, vai alla pagina dell'applicazione. Dalla pagina dell'applicazione, è possibile passare alla scheda Istanze ed esaminare le istanze correnti dell'applicazione. La serie di istanze cambia quando la tua applicazione viene ridimensionata verso l'alto e verso il basso, in base alla configurazione di ridimensionamento. Utilizza le informazioni sulle istanze dell'applicazione per assistenza nella risoluzione dei problemi della tua applicazione.
Il conteggio dei riavvii è il numero di volte in cui il contenitore utente è stato riavviato dalla creazione dell'istanza specifica. Il valore della frequenza di riavvio è considerato elevato se il numero medio di riavvii del contenitore utente da quando l'istanza è stata creata è 3 o più volte al giorno.
Se necessario, utilizza i filtri per aiutarti a restringere i risultati per le tue istanze dell'applicazione. Puoi scegliere di filtrare in base al nome della revisione dell'app o allo stato dell'istanza dell'app.
Puoi esaminare i dettagli di un'istanza dell'applicazione specifica per un'analisi più approfondita. Per aprire la pagina dei dettagli dell'istanza per un'istanza specifica, effettuare una delle seguenti operazioni.
- Fare clic sulla riga dell'istanza desiderata.
- Fare clic sull'icona Azioni
> Dettagli istanza per visualizzare dettagli dell'istanza specificata.
Utilizza le informazioni aggiuntive nella pagina dei dettagli dell'istanza per aiutarti a risolvere i problemi della tua applicazione. Puoi utilizzare le informazioni sull'ora di inizio e di riavvio, il codice di uscita e le informazioni sul codice motivo, sullo stato del contenitore e sugli ultimi messaggi di log per aiutarti nel debug della tua app. Un contenitore utente include il codice in esecuzione (l'immagine che hai specificato quando hai creato l'applicazione). Mentre un contenitore di sistema gestisce attività di sistema come l'inoltro di richieste al contenitore utente o la raccolta di metriche.
I seguenti scenari sono esempi per quando potresti utilizzare i dettagli dell'istanza dell'applicazione specifica per aiutarti a risolvere i problemi della tua applicazione.
- Se l'app è in stato "pronta" ma non sta gestendo le richieste HTTP, visualizza i dettagli delle singole istanze dell'app per capire perché l'istanza in questione non sta gestendo le richieste HTTP.
- Se hai un'istanza nello stato
failed, forse l'immagine per l'applicazione non è valida o non è disponibile. - Se il conteggio di riavvio per un'istanza è elevato, è possibile che l'applicazione non sia riuscita a causa di un errore di programmazione, che sia stato raggiunto il limite di memoria temporaneo o che si sia verificata una condizione di memoria esaurita. Quando si verifica questo scenario, l'istanza viene continuamente arrestata e riavviata. Le informazioni sull'ora dell'ultimo riavvio potrebbero aiutarti a determinare se l'istanza dell'applicazione ha un problema in corso che causa il riavvio o se il problema non è frequente.
Richiamo delle informazioni sugli eventi di sistema per le mie applicazioni
Le informazioni sugli eventi di sistema possono essere utili per la risoluzione dei problemi quando si eseguono le app. È possibile visualizzare le informazioni sugli eventi di sistema tramite l'interfaccia CLI.
È possibile visualizzare gli eventi di sistema per tutte le istanze di un'applicazione o visualizzare gli eventi di sistema di un'istanza specifica di un'applicazione.
-
Utilizzare il comando
ibmcloud ce app listper elencare tutte le app definite; ad esempio,ibmcloud ce app list -
Utilizza il comando
ibmcloud ce app getper ottenere i dettagli della tua applicazione, incluso il nome delle istanze per l'applicazione; ad esempio,ibmcloud ce app get --name myappOutput di esempio
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 52sSe desideri dettagli più dettagliati sulla tua applicazione, utilizza l'opzione
--o yamlcon il comandoapp get; ad esempioibmcloud ce app get --name myapp --o yaml. Questa opzione è utile per mostrare informazioni più dettagliate nella CLI per l'app. -
Visualizza gli eventi di sistema delle istanze della tua applicazione.
- Per visualizzare gli eventi di una specifica istanza della tua applicazione, utilizza il comando
ibmcloud ce app events --instance INSTANCE_NAME; ad esempio,
ibmcloud ce app events --instance myapp-atfte-2-deployment-7cb45cdf67-qc7sb ``` Output di esempio ```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 [...] ``` * Per visualizzare gli avvenimenti per tutte le istanze della tua applicazione, utilizza il comando [**`ibmcloud ce app events --application APP_NAME`**](/docs/codeengine?topic=codeengine-cli#cli-application-events) ; ad esempio, ```txt {: pre} ibmcloud ce app events --app myapp ``` Output di esempio ```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 [...] ``` - Per visualizzare gli eventi di una specifica istanza della tua applicazione, utilizza il comando
Verifica del riferimento dell'immagine del contenitore per la mia app
Quando gestisci le applicazioni Code Engine, devi specificare un riferimento dell'immagine del contenitore e un segreto del Registro di sistema per accedere all'immagine. Affinché l'app funzioni correttamente, il riferimento dell'immagine e le proprietà di accesso devono rimanere validi per la durata dell'app.