概要
このドキュメントでは、起動時に問題が発生したり、予期せず停止したりするIOXアプリケーションをトラブルシューティングまたはデバッグする方法について説明します。
背景説明
IOXアプリケーションを開発する際の最善のアプローチは、別のプラットフォームやサンドボックスで開発することです。目的のIOXアプリケーションがテストされ、準備ができたら、IOX対応デバイスにパッケージ化して導入できます。場合によっては、展開が期待どおりに動作せず、アプリケーションが予期せず停止したり、起動しないこともあります。
およびIOX VM/コンテナ/アプリケーションのデフォルトの動作は、targetコマンドが終了するとすぐに停止することです。これにより、すべての非永続的情報が消失するため、予期しない問題が発生した場合のトラブルシューティングが困難になります。もう1つの結果として、IOXアプリケーションの機能を再生/実験するには非常に時間がかかります。別のapp/target/command/scriptを起動するには、少なくともpackage.yamlを変更し、新しいパッケージを構築し、現在のアプリケーションを非アクティブ化し、新しいパッケージでアップグレードし、アプリケーションを再アクティブ化して起動する必要があります。
IOXアプリケーションの終了に関する基本情報
Local ManagerおよびIOXクライアントは、アプリケーション/コンテナ/VMが停止した理由に関する情報を多く提供しません。幸い、watchDog.logは、この点を追跡し、アプリケーションの最後の終了/戻りコードも提供します。これは常に役に立つとは限りませんが、多くの場合、あなたが探している理由に導きます。
IOXクライアントでwatchDog.logをフェッチするには:
[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.
ローカルマネージャを使用してログを取得するには、次の手順に従います。
- Local Managerにログインします。
- 図に示すように、関連するアプリケーションのstart deactivate manageをクリックします
- 図に示すように[Logs]タブを選択します。
- watchDog.logをダウンロードします。
たとえば、このアプリケーションは予期せず終了し、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
上記のログのスニペットからわかるように、終了コードは127でした。これは予約済みのリターンコードであり、次の意味です。command not found:faultyコマンドがターゲットとして指定されているか、開始されたスクリプトがfaultyコマンドを呼び出そうとしていることを示します。
最も一般的な予約済み終了コード:
RC |
意味 |
コメント |
1 |
一般的なエラーのキャッチオール |
その他のエラー(「ゼロ除算」など)や許容できない操作など) |
0 |
シェル構築物の誤用 |
キーワードまたはコマンドが見つからないか、アクセス許可の問題(およびバイナリファイルの比較に失敗した場合のdiffリターンコード)。 |
126 |
コマンドを実行できませんでした |
アクセス許可の問題またはコマンドは実行可能ファイルではありません |
127 |
コマンドが見つかりません |
$PATHまたはtypoに関する問題 |
128 |
終了する引数が無効です(RC>255) |
exitは0 ~ 255の範囲の整数の引数のみを取ります |
128+n |
致命的なエラー信号「n」 |
終了コードは137 (128 + 9) ->アプリケーションエラー信号が9を返します |
130 |
Ctrl+Cで終了 |
Control-Cは致命的なエラー信号2、(130 = 128 + 2、上記を参照) |
255 |
終了状態が範囲外(RC>255) |
exitは0 ~ 255の範囲の整数の引数のみを取ります |
詳細については、http://tldp.org/LDP/abs/html/exitcodes.htmlを参照してください。
アプリケーション/ターゲットの終了時にIOXコンテナが停止するのを防止する
上記の項では、障害が発生しているアプリケーションのトラブルシューティング方法に関する情報を提供しますが、IOXアプリケーションの停止を防止することはできません。これは、すべての非永続的データが存在しなくなったため、トラブルシューティングに関連する最も有益な情報が消失したことを意味します。
前述したように、もう1つの使用例は、起動されたIOXアプリケーションの機能を使用して再生するか、コマンドや引数を使用して柔軟性を持たせることです。
IOXアプリケーションがアプリケーション側で終了しないようにするには、activateコマンドに-debug onを渡します。
[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]
/ #
上記の例では、-debug onフラグをアクティブにして開始した後、アプリケーションが終了してもコンテナにアクセスできます。ここで他のコマンドを起動し、アプリケーションが稼働する環境で自由にアプリケーションを試すことができます。これにより、アプリケーションの問題を解決したり、正しいターゲットと引数を設定したりするのに多くの時間を節約できます。