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.

  1. Utilizzare il comando ibmcloud ce app list per elencare tutte le app definite nel progetto; ad esempio,

    ibmcloud ce app list  
    
  2. Utilizza il comando ibmcloud ce app get per ottenere i dettagli della tua applicazione, incluso il nome delle istanze per l'applicazione; ad esempio,

    ibmcloud ce app get --name myapp  
    

    Output 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         52s
    

    Se desideri dettagli più dettagliati sulla tua applicazione, utilizza l'opzione --o yaml con il comando app get ; ad esempio ibmcloud ce app get --name myapp --o yaml. Questa opzione è utile per mostrare informazioni più dettagliate nella CLI per l'app.

  3. Visualizza i log delle istanze della tua applicazione.

        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 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 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.

  1. Utilizzare il comando ibmcloud ce app list per elencare tutte le app definite; ad esempio,

    ibmcloud ce app list  
    
  2. Utilizza il comando ibmcloud ce app get per ottenere i dettagli della tua applicazione, incluso il nome delle istanze per l'applicazione; ad esempio,

    ibmcloud ce app get --name myapp  
    

    Output 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         52s
    

    Se desideri dettagli più dettagliati sulla tua applicazione, utilizza l'opzione --o yaml con il comando app get ; ad esempio ibmcloud ce app get --name myapp --o yaml. Questa opzione è utile per mostrare informazioni più dettagliate nella CLI per l'app.

  3. Visualizza gli eventi di sistema delle istanze della tua applicazione.

        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
        [...]
        ```
    

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.

Vedi Come posso verificare la mia immagine di riferimento?