Inleiding
In dit document wordt beschreven hoe u IOX-toepassingen kunt oplossen of debuggen die problemen ondervinden bij het starten of onverwacht stoppen.
Achtergrondinformatie
Wanneer u IOX-toepassingen ontwikkelt, is de beste aanpak om het op een ander platform en / of sandbox te ontwikkelen. Zodra uw gewenste IOX-toepassing is getest en klaar is, kan deze worden verpakt en geïmplementeerd op een IOX-apparaat. In sommige gevallen werkt die implementatie niet zoals verwacht, de toepassing kan onverwacht stoppen of zelfs niet starten.
Het standaardgedrag voor IOX en VM/container/toepassing moet worden gestopt zodra de doelopdracht is beëindigd. Dit maakt het moeilijk om problemen op te lossen als er iets onverwachts gebeurt, omdat alle niet-persistente informatie zal verdwijnen. Een ander gevolg is dat het erg tijdrovend is wanneer je wilt spelen/experimenteren met de mogelijkheden van IOX-applicaties. Het starten van een andere app / target / command / script zou vereisen dat u op zijn minst het package.yaml wijzigt, het nieuwe pakket bouwt, uw huidige toepassing deactiveert, upgraden met het nieuwe pakket, de toepassing opnieuw activeren en starten.
Basisinformatie over IOX-toepassingsbeëindiging
Lokaal beheer en IOX-client geven niet veel informatie over de reden waarom toepassingen/containers/VM's zijn gestopt. Gelukkig houdt het watchDog.log dit bij en geeft u ook de laatste exit / retourcode van de applicatie. Hoewel dit je misschien niet altijd helpt, leidt het je in veel gevallen naar de reden die je zoekt.
Om het watchDog.log op te halen met IOX client:
[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.
U haalt het logbestand op met Lokaal beheer als volgt:
- Log in bij de lokale manager.
- Zoals in de afbeelding te zien is, klikt u op start deactiveren beheren voor de betreffende toepassing

- Selecteer het tabblad Logboeken, zoals weergegeven in de afbeelding:

- Download het watchDog.log

Deze applicatie wordt bijvoorbeeld onverwacht beëindigd en je ziet dit in het 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
Zoals u kunt zien in het bovenstaande logfragment, was de afsluitcode 127. Dit is een gereserveerde retourcode en het betekent: opdracht niet gevonden, wat aangeeft dat een defecte opdracht is opgegeven als een doel of het script dat is gestart probeert een defecte opdracht aan te roepen.
Meest voorkomende gereserveerde afsluitcodes:
| RC |
Betekenis |
Opmerking |
| 1 |
Catchall voor algemene fouten |
Diverse fouten, zoals "delen door nul" en andere ontoelaatbare bewerkingen |
| 2 |
Misbruik van schelpgebouwen |
Ontbrekend trefwoord of opdracht, of toestemmingsprobleem (en diff-retourcode op een mislukte binaire bestandsvergelijking). |
| 126 |
Commando kon niet worden uitgevoerd |
Toestemmingsprobleem of opdracht is geen uitvoerbaar bestand |
| 127 |
Opdracht niet gevonden |
Mogelijk probleem met $PATH of een typefout |
| 128 |
Ongeldig argument om af te sluiten (RC>255) |
De uitgang neemt alleen gehele args in het bereik 0 - 255 |
| 128+N |
Fataal foutsignaal "n" |
Exitcode geeft 137 (128 + 9) terug -> app-foutsignaal was 9 |
| 130 |
Beëindigd door Ctrl+c |
Control-C is dodelijk foutsignaal 2, (130 = 128 + 2, zie hierboven) |
| 255 |
Uitgangsstatus buiten bereik (RC>255) |
De uitgang neemt alleen gehele args in het bereik 0 - 255 |
Meer informatie hierover vindt u hier: http://tldp.org/LDP/abs/html/exitcodes.html
Voorkomen dat IOX-containers stoppen bij beëindiging van toepassing/doel
Het bovenstaande onderwerp biedt informatie over het oplossen van een falende toepassing, maar het voorkomt niet dat de IOX-toepassing stopt. Dit betekent dat de meest waarschijnlijke waardevolle informatie met betrekking tot het oplossen van problemen is verdwenen, omdat alle niet-persistente gegevens niet langer bestaan.
Zoals hierboven vermeld, is een andere use case om te spelen met de mogelijkheden van de gestarte IOX-applicatie of om flexibel te zijn met commando's en argumenten.
Om te voorkomen dat IOX-toepassingen aan het einde van de toepassing worden beëindigd, kunt u de -debug doorgeven aan de activeringsopdracht:
[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]
/ #
In het bovenstaande voorbeeld, na het activeren en starten met de -debug op vlag, kunt u toegang krijgen tot de container, zelfs als de toepassing wordt beëindigd. U kunt hier andere opdrachten starten en vrij experimenteren met de toepassing in de omgeving waar uw toepassing wordt uitgevoerd. Dit bespaart veel tijd bij het oplossen van toepassingsproblemen of het verkrijgen van het juiste doel en de juiste argumenten.