iOS appdSYM のクラッシュをファイルを用いて分析する
iOS app のクラッシュに関する詳細は、 Instana で確認できます。 詳細には、モバイル・アプリケーションのすべてのアクティブ・スレッドのスタック・トレースが含まれます。 これらのスタック・トレースには、メモリー・アドレスとロー関数名が含まれます。 Instana を使用すると、スタックトレースを分かりやすい情報に変換できます。
データをコンパイルするには、 Instana には、 iOS app からのデバッグシンボル( dSYM )ファイルが必要です。 dSYM ファイルは、シンボルに使用されます。 Symbolication は、アクティブ・メモリー・アドレスを人間が読める形式に変換するプロセスです。
スタックトレースを翻訳するには、ファイルを dSYM Instana にアップロードしてください。 Web REST API を呼び出すことで、ファイルを dSYM アップロードできます。 ファイル dSYM のアップロードが完了すると、 Instana のUIにクラッシュに関する詳細情報が表示されます。 詳細を表示するには、 「異常終了」 タブで 「異常終了スレッド」 をクリックします。 詳しくは、 異常終了を参照してください。
ファイルの dSYM アップロード
ファイルを dSYM アップロードする前に、以下の前提条件が満たされていることを確認してください:
- API トークンが作成され、モバイルアプリの監視用に設定権限が有効化されます。 詳細については、 「 API トークン」 を参照してください。
- ソースマップは、セルフホスト型カスタムエディション( Kubernetes または Red Hat OpenShift Container Platform ) 用に保存されます。 詳細については、 「外部ストレージの設定」 を参照してください。
- アップロードするファイル
dSYMが、現在のアプリバージョンと一致していることを確認してください。 たとえば、アプリを更新するたびに、更新されたdSYMファイルをアップロードする必要があります。
InstanadSYM にファイルをアップロードするには、以下の手順に従ってください:
Instana のUIで、ファイルを
dSYMアップロードするための設定を作成します:Go 「 ウェブサイトとモバイルアプリ」 > 「モバイルアプリ」 へ。
モバイル・アプリをクリックします。 モバイル・アプリケーション・ダッシュボードが表示されます。
「構成」 > 「スタック・トレース変換」をクリックします。
図 1. シンボルファイルのアップロード設定画面 
「構成の追加」をクリックします。 「新規シンボル・ファイル・アップロード構成」ダイアログが表示されます。
「説明」 フィールドに、アップロードの説明を入力します。
「作成」 をクリックします。 「シンボル・ファイル・アップロード構成の編集」ダイアログが表示されます。 ダイアログに表示される Web REST API を使用して、
dSYMファイルをアップロードします。 ステップ 3 を参照してください。保存 をクリックします。 構成が保存されます。
注: モバイルアプリ1つにつき、最大1,024件のソースマップ設定をアップロードできます。 モバイルアプリ1つあたりのソースマップ設定の最大保存容量は2,048 MBです。 この制限を引き上げるには、 Instana のサポートまでお問い合わせください。dSYMファイルを.tgzファイルに圧縮します。tar czf <archive name>.tgz <files or locations>コマンドの例を以下のスニペットに示します。
tar czf your_app.dSYM.tgz your_app.dSYM_folder圧縮ファイルのサイズが 10 MB を超える場合は、
.tgzファイルを複数の BLOB (それぞれ 9 MB) に分割します。split -b 9m <archive name>.tgz <file>.tgz_blob_コマンドの例を以下のスニペットに示します。
split -b 9m your_dSYM_file.tgz your_dSYM_file.tgz_blob_Instana のウェブサイト( REST API )を使用して、ファイルをアップロードしてください。 以下のステップのいずれかを実行します。
アップロードに複数の BLOB が含まれている場合は、以下を実行します。
curl -L -X PUT \ 'https://$UNIT-$TENANT.instana.io/api/mobile-app-monitoring/config/$MOBILE_APP_ID/sourcemap-upload/$UPLOAD_CONFIG_ID/form' \ -H 'authorization: apiToken $API_TOKEN' \ -F 'fileId="$BUNDLE_IDENTIFIER_OF_APP, for example com.instana.ios.testapp1"' \ -F 'fileType="dSYM"' \ -F 'blobIndex=1' \ -F 'sourceMap=@"$LOCAL_SYMBOLFILE_LOCATION"'注:blobIndex の値は0ではなく1から始まります。 次の各ブロブについて、 blobIndex を1ずつ増やします。アップロードに含まれているファイルが 1 つのみの場合は、以下を実行します。
curl -L -X PUT \ 'https://$UNIT-$TENANT.instana.io/api/mobile-app-monitoring/config/$MOBILE_APP_ID/sourcemap-upload/$UPLOAD_CONFIG_ID/form' \ -H 'authorization: apiToken $API_TOKEN' \ -F 'fileId="$BUNDLE_IDENTIFIER_OF_APP, for example com.instana.ios.testapp1"' \ -F 'fileType="dSYM"' \ -F 'sourceMap=@"$LOCAL_SYMBOLFILE_LOCATION"'圧縮ファイルのサイズが 10 MB を超えると、エラー・メッセージ
request entity too largeが表示されます。 ステップ 3 を参照してください。
コミット・アップロード:
curl -L -X PUT \ 'https://$UNIT-$TENANT.instana.io/api/mobile-app-monitoring/config/$MOBILE_APP_ID/sourcemap-upload/$UPLOAD_CONFIG_ID/commit' \ -H 'authorization: apiToken $API_TOKEN' \ -F 'fileId="$BUNDLE_IDENTIFIER_OF_APP, for example com.instana.ios.testapp1"' \ -F 'fileType="dSYM"'
コミットコマンドを実行する前に、すべてのBlobをアップロードしてください。 Instana のUIでは、各ソースマップごとにアップロードされたBlobの数を確認できます。 ブロビングを使用しないソースマップの場合、ブロブ数は「1」と表示されます。
Success。Instana からファイルを dSYM 削除する
Instana からファイルを dSYM 削除するには、次のいずれかの手順を実行してください:
Go 「Webサイトとモバイルアプリ 」>「 モバイルアプリ 」>「 設定 」> 「スタックトレースの変換 」に移動し、該当する設定の横にある削除アイコンをクリックします。
Web REST API を呼び出します。 コマンドの例を以下に示します。
curl -L -X PUT \ 'https://$UNIT-$TENANT.instana.io/api/mobile-app-monitoring/config/$MOBILE_APP_ID/sourcemap-upload/$UPLOAD_CONFIG_ID/clear' \ -H 'authorization: apiToken $API_TOKEN'