概要
このドキュメントでは、予期せず開始または停止する際に問題が発生する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を意味します。これは、ターゲットとして故障コマンドが指定されているか、起動されたスクリプトが故障コマンドを呼び出そうとしていることを示します。
最も一般的な予約済み終了コード:
| RC |
意味 |
コメント |
| 1 |
一般的なエラーの検出 |
「ゼロ除算」やその他の許容できない操作など、その他のエラー |
| 2 |
組み込みシェルの誤用 |
キーワードまたはコマンドが見つからないか、権限の問題(および失敗したバイナリファイルの比較に対する差分リターンコード)です。 |
| 126 |
コマンドを実行できませんでした |
アクセス許可の問題またはコマンドが実行可能ファイルではありません |
| 127 |
コマンドが見つかりません |
$PATHに問題があるか、入力が間違っています |
| 128 |
終了する引数が無効です(RC>255) |
exitは0 ~ 255の範囲の整数の引数のみを受け取ります |
| 128+n |
致命的なエラー信号「n」 |
終了コードは137 (128 + 9) -> app error signal was 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アプリケーションの停止を妨げるものではありません。これは、非永続的なデータがもはや存在しないため、トラブルシューティングに関連する最も可能性の高い情報が消滅したことを意味します。
前述したように、別の使用例として、起動したIOXアプリケーションの機能を利用する、またはコマンドと引数を柔軟に使用する方法があります。
IOXアプリケーションがアプリケーション側で終了しないようにするには、-debug onをactivateコマンドに渡します。
[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フラグを有効にして開始した後、アプリケーションが終了してもコンテナにアクセスできます。ここで他のコマンドを起動し、アプリケーションが実行されている環境でアプリケーションを自由に試すことができます。これにより、アプリケーションの問題を解決したり、適切なターゲットと引数を設定したりするのに多くの時間を節約できます。