Depuración de apps

Utilice los consejos de resolución de problemas para aprender a resolver problemas de aplicaciones de IBM Cloud® Code Engine.

Cuando la app no se comporta como es de esperar, la búsqueda en registros y sucesos del sistema puede proporcionar información que ayude a depurar el problema.

Límites de app a tener en cuenta

El número máximo de aplicaciones que puedes crear por proyecto es de 40. Tienes un límite de 120 revisiones en total para todas las aplicaciones de cada proyecto. Code Engine solo conserva la última revisión inactiva de tu aplicación, además de la revisión activa. Las revisiones más antiguas se suprimen. Consulte Actualización de apps.

Para obtener más información sobre los límites de las aplicaciones, incluidos los de memoria y CPU, consulta « Límites y cuotas de Code Engine ».

Con la CLI, puede utilizar el mandato ibmcloud ce project get para visualizar información sobre los límites y el uso actual. Por ejemplo:

ibmcloud ce project get --name myproject

Salida de ejemplo

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

Confirmar valor de puerto

Code Engine Requiere que dispongas de un punto final HTTP que Code Engine utiliza para comprobar el estado de tu aplicación.

De forma predeterminada, Code Engine presupone que las apps escuchan las conexiones entrantes en el puerto 8080. Además, la función Code Engine establece la variable de entorno PORT con el valor del puerto en el que se espera que la aplicación esté a la escucha. Si tu aplicación necesita escuchar en un puerto distinto del 8080, implementa tu aplicación desde la consola y especifica el puerto correcto, o bien utiliza la opción « --port » en el app create comando. Para obtener información adicional sobre las variables de entorno configuradas por Code Engine, consulte Variables de entorno inyectadas automáticamente. Los puertos siguientes están reservados por Code Engine: 8022, 8008, 8012, 9090, 9091 y 15090. Solo se puede exponer un puerto como puerto de escucha.

Obtención de registros para las apps

Los registros pueden resultar útiles para resolver problemas cuando se ejecutan apps. Puede ver los registros de aplicaciones en la consola o con la CLI.

Cuando se consultan los registros en la consola, hay que crear una instancia de IBM Cloud Logs en la misma región que el proyecto de Code Engine. No es necesario que cree esta instancia antes de trabajar con la aplicación de Code Engine. En Code Engine es muy fácil habilitar el registro para sus trabajos. Una vez añadidas las prestaciones de registro, se podrán consultar los registros de aplicación. Para obtener información adicional, consulte Visualización de registros de aplicación en la consola.

Cuando trabajas con la CLI, puedes visualizar los registros de todas las instancias de una aplicación o los de una instancia concreta de la misma.

  1. Utilice el mandato ibmcloud ce app list para listar todas las aplicaciones definidas en el proyecto; por ejemplo,

    ibmcloud ce app list  
    
  2. Utilice el mandato ibmcloud ce app get para obtener los detalles de la app, incluido el nombre de las instancias de la app; por ejemplo,

    ibmcloud ce app get --name myapp  
    

    Salida de ejemplo

    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
    

    Si desea detalles más precisos sobre la aplicación, utilice la opción --o yaml con el mandato app get; por ejemplo, ibmcloud ce app get --name myapp --o yaml. Esta opción es útil para mostrar información más detallada en la CLI para la aplicación.

  3. Muestre los registros de las instancias de la app.

        ibmcloud ce app logs --instance myapp-atfte-2-deployment-7cb45cdf67-qc7sb
        ```
        Salida de ejemplo
    
        ```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/
        ```
    * Para visualizar los registros de todas las instancias de la aplicación, utilice el mandato [**`app logs --application APP_NAME`**](/docs/codeengine?topic=codeengine-cli#cli-application-logs); por ejemplo,
    
    ```txt {: pre}
        ibmcloud ce app logs --app myapp
        ```
        Salida de ejemplo
    
        ```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/
        ```
    

Para obtener más información, consulte Visualización de registros de aplicación con la CLI.

Obtención de detalles sobre instancias de app

Con la consola de Code Engine, puede ver los detalles de todas las instancias de la app. Los detalles de las instancias de la app son útiles si recibe un mensaje de aviso sobre las instancias de la app. O, tal vez su app esté en un estado preparado pero la app no funciona correctamente ya que no está sirviendo solicitudes.

Para obtener detalles de las instancias de la app, vaya a la página de la aplicación. En la página de la aplicación, puede ir a la pestaña Instancias y revisar las instancias actuales de la aplicación. El conjunto de instancias cambia a medida que la aplicación se escala hacia arriba y hacia abajo, basándose en la configuración de escalado. Utilice la información sobre las instancias de la app como ayuda para la resolución de problemas de la app.

El recuento de reinicios es el número de veces que se ha reiniciado el contenedor de usuarios desde que se creó la instancia específica. El valor de tasa de reinicio se considera alto si el número promedio de reinicios de contenedor de usuario desde que se creó la instancia es de 3 o más veces al día.

Según sea necesario, utilice filtros que le ayuden a acotar los resultados de las instancias de la app. Puede elegir filtrar por el nombre de la revisión de la aplicación o por el estado de la instancia de la aplicación.

Puede revisar los detalles de una instancia de app específica para obtener un análisis más detallado. Para abrir la página de detalles de instancia para una instancia específica, realice una de las acciones siguientes.

  • Pulse en la fila de la instancia que desee.
  • Pulse el icono Acciones Acciones > Detalles de instancia para ver los detalles de la instancia especificada.

Utilice la información adicional de la página de detalles de la instancia para ayudarle a resolver los problemas de la app. Puede utilizar la información sobre las horas de inicio y reinicio, el código de salida y la información de código de razón, el estado del contenedor y los últimos mensajes de registro para ayudarle a depurar la app. Un contenedor de usuarios incluye el código en ejecución (la imagen que ha especificado al crear la app). Mientras que un contenedor del sistema maneja tareas del sistema como el reenvío de solicitudes al contenedor de usuarios o la recopilación de métricas.

Los escenarios siguientes son ejemplos de cuándo puede utilizar los detalles de la instancia de app específica para ayudarle a resolver los problemas de la app.

  • Si la aplicación se encuentra en estado «lista», pero no está respondiendo a las solicitudes de HTTP, consulta los detalles de las instancias específicas de la aplicación para conocer los motivos por los que dicha instancia no está respondiendo a las solicitudes de HTTP.
  • Si tiene una instancia que está en estado failed, quizás la imagen de la aplicación no sea válida o no esté disponible.
  • Si el recuento de reinicios de una instancia es alto, quizás la aplicación ha fallado debido a un error de programación, se ha alcanzado el límite de almacenamiento efímero o se ha producido una condición de falta de memoria. Cuando se produce este escenario, la instancia se detiene continuamente y se reinicia. La información de última hora de reinicio puede ayudarle a determinar si la instancia de la app tiene un problema en curso que provoca reinicios o si el problema es poco frecuente.

Obtención de información de sucesos del sistema de las apps

La información de sucesos del sistema puede ser útil para resolver problemas al ejecutar apps. Se puede ver la información de sucesos del sistema con la CLI.

Puede visualizar sucesos del sistema de todas las instancias de una aplicación o visualizar sucesos del sistema de una instancia específica de una aplicación.

  1. Utilice el mandato ibmcloud ce app list para listar todas las aplicaciones definidas; por ejemplo,

    ibmcloud ce app list  
    
  2. Utilice el mandato ibmcloud ce app get para obtener los detalles de la app, incluido el nombre de las instancias de la app; por ejemplo,

    ibmcloud ce app get --name myapp  
    

    Salida de ejemplo

    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
    

    Si desea detalles más precisos sobre la aplicación, utilice la opción --o yaml con el mandato app get; por ejemplo, ibmcloud ce app get --name myapp --o yaml. Esta opción es útil para mostrar información más detallada en la CLI para la aplicación.

  3. Muestre los sucesos del sistema de las instancias de la app.

        ibmcloud ce app events --instance myapp-atfte-2-deployment-7cb45cdf67-qc7sb
        ```
        Salida de ejemplo
    
        ```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
        [...]
        ```
    * Para visualizar los sucesos de todas las instancias de la aplicación, utilice el mandato [**`ibmcloud ce app events --application APP_NAME`**](/docs/codeengine?topic=codeengine-cli#cli-application-events); por ejemplo,
    
    ```txt {: pre}
        ibmcloud ce app events --app myapp
        ```
        Salida de ejemplo
    
        ```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
        [...]
        ```
    

Verificación de la referencia de imagen de contenedor para mi app

Cuando trabaja con apps de Code Engine, debe especificar una referencia de imagen de contenedor y un secreto de registro para acceder a la imagen. Para que la aplicación funcione correctamente, la referencia de imagen y sus propiedades de acceso deben seguir siendo válidas durante toda la vida de la aplicación.

Consulte ¿Cómo puedo verificar mi referencia de imagen?