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.
-
Utilice el mandato
ibmcloud ce app listpara listar todas las aplicaciones definidas en el proyecto; por ejemplo,ibmcloud ce app list -
Utilice el mandato
ibmcloud ce app getpara obtener los detalles de la app, incluido el nombre de las instancias de la app; por ejemplo,ibmcloud ce app get --name myappSalida 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 52sSi desea detalles más precisos sobre la aplicación, utilice la opción
--o yamlcon el mandatoapp 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. -
Muestre los registros de las instancias de la app.
- Para visualizar los registros de una instancia específica de la app, utilice el mandato
ibmcloud ce app logs --instance INSTANCE_NAME; por ejemplo,
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 visualizar los registros de una instancia específica de la app, utilice el mandato
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
> 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.
-
Utilice el mandato
ibmcloud ce app listpara listar todas las aplicaciones definidas; por ejemplo,ibmcloud ce app list -
Utilice el mandato
ibmcloud ce app getpara obtener los detalles de la app, incluido el nombre de las instancias de la app; por ejemplo,ibmcloud ce app get --name myappSalida 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 52sSi desea detalles más precisos sobre la aplicación, utilice la opción
--o yamlcon el mandatoapp 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. -
Muestre los sucesos del sistema de las instancias de la app.
- Para visualizar los sucesos de una instancia específica de la app, utilice el mandato
ibmcloud ce app events --instance INSTANCE_NAME; por ejemplo,
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 [...] ``` - Para visualizar los sucesos de una instancia específica de la app, utilice el mandato
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.