Contenido

Introducción

Antecedentes

Información básica sobre la terminación de la aplicación IOX

Evitar que los contenedores de IOX se detengan al finalizar la aplicación/objetivo

Introducción

Este documento describe cómo resolver problemas o depurar aplicaciones IOX que encuentran problemas en el inicio o se detiene inesperadamente.

Antecedentes

Cuando desarrolla aplicaciones IOX, el mejor enfoque es desarrollarlas en otra plataforma o sandbox. Una vez que la aplicación IOX deseada se ha probado y está lista, se puede empaquetar e implementar en un dispositivo compatible con IOX. En algunos casos, esa implementación no funciona como se esperaba, la aplicación podría detenerse inesperadamente o incluso no empezar.

El comportamiento predeterminado para y IOX VM/container/application es detenerse tan pronto como el comando target haya terminado. Esto dificulta la resolución de problemas si ocurre algo inesperado, ya que toda la información no persistente desaparecerá. Otra consecuencia es que lleva mucho tiempo reproducir/experimentar con las capacidades de las aplicaciones IOX. Al iniciar otra aplicación/destino/comando/script, se requiere que al menos cambie el paquete.yaml, cree el nuevo paquete, desactive su aplicación actual, actualice con el nuevo paquete, vuelva a activar la aplicación y comience.

Información básica sobre la terminación de la aplicación IOX

Local Manager y el cliente IOX no proporcionan mucha información sobre la razón por la que las aplicaciones/contenedores/VM se han detenido. Afortunadamente, watchDog.log realiza un seguimiento de esto y también le proporciona el último código de salida/retorno de la aplicación. Aunque esto puede no siempre ayudarle, en muchos casos le lleva a la razón que busca.

Para obtener watchDog.log con el cliente IOX:

[jedepuyd@db ~]$ ioxclient app logs tail iox_docker_test watchDog.log 10

Currently active profile :  default

Command Name: application-logs-tail

App/Service : iox_docker_test, Logfile : watchDog.log, viewing last 10 lines

APP END TIME:1498207460

Time taken by App : 0 minutes and 0 seconds.

Got the ip address - 10.197.215.227 for interface eth0

All interfaces got the ips

APP START TIME:1498207536

App iox_docker_test started with PID : 11

Monitoring this process now

App iox_docker_test completed with exit code: 127

APP END TIME:1498207536

Time taken by App : 0 minutes and 0 seconds.

Para recuperar el registro mediante Local Manager:

1. Inicie sesión en Local Manager.

2. Como se muestra en la imagen, haga clic en iniciar desactivar administrar para la aplicación correspondiente

3. Seleccione la ficha Logs, como se muestra en la imagen:

4. Descargue watchDog.log

Por ejemplo, esta aplicación finaliza inesperadamente y esto se ve en watchDog.log

APP START TIME:1498207536

App iox_docker_test started with PID : 11

Monitoring this process now

App iox_docker_test completed with exit code: 127

APP END TIME:1498207536

Como puede ver en el fragmento de registro anterior, el código de salida era 127. Se trata de un código de retorno reservado y significa: comando no encontrado, que indica que se especifica un comando defectuoso como destino o que el script que se inicia intenta llamar a un comando defectuoso.

Códigos de salida reservados más comunes:

RC

Significado

Comentario

1

Capturar errores generales

Errores varios, como "dividir por cero" y otras operaciones inadmisibles

2

Uso indebido de construcciones de conchas

Falta la palabra clave o el comando, o el problema de permiso (y el código de respuesta diff en una comparación de archivos binarios errónea).

126

No se pudo ejecutar el comando

El problema o comando de permiso no es un ejecutable

127

Comando no encontrado

Posible problema con $PATH o un error tipográfico

128

Argumento no válido para salir (RC>255)

exit toma solamente las args enteros en el rango 0 - 255

128+n

Señal de error fatal "n"

exit code devuelve 137 (128 + 9) -> la señal de error de la aplicación fue 9

130

Terminado por Ctrl+c

Control-C es la señal de error fatal 2, (130 = 128 + 2, ver arriba)

255

Estado de salida fuera del intervalo (RC>255)

exit toma solamente las args enteros en el rango 0 - 255

Puede encontrar más información al respecto aquí: http://tldp.org/LDP/abs/html/exitcodes.html

Evitar que los contenedores de IOX se detengan al finalizar la aplicación/objetivo

El tema anterior proporciona información sobre cómo resolver problemas de una aplicación defectuosa, pero no impide que la aplicación IOX se detenga. Esto significa que lo más probable es que la información valiosa relacionada con la resolución de problemas haya desaparecido, ya que ya no existen todos los datos no persistentes.

Como se mencionó anteriormente, otro caso práctico es jugar con las capacidades de la aplicación IOX iniciada o ser flexibles con comandos y argumentos.

Para evitar que las aplicaciones IOX terminen al final de la aplicación, puede pasar el comando -debug al comando enable:

[jedepuyd@db ~]$ ioxclient app activate -debug on testdebug

Currently active profile :  default

Command Name: application-activate

App testdebug is Activated

[jedepuyd@db ~]$ ioxclient app start testdebug

Currently active profile :  default

Command Name: application-start

App testdebug is Started

[jedepuyd@db ~]$ ioxclient app console testdebug

Currently active profile :  default

Command Name: application-console

Console setup is complete..

Running command : [ssh -p 2222 -i testdebug.pem appconsole@10.48.43.197]

/ #

En el ejemplo anterior, después de activar y comenzar con el indicador -debug on, puede acceder al contenedor incluso si la aplicación finaliza. Aquí puede iniciar otros comandos y puede experimentar libremente con la aplicación en el entorno en el que se ejecuta la aplicación. Esto ahorra mucho tiempo en la resolución de problemas de aplicaciones o en la obtención del objetivo y los argumentos adecuados.