dSYM ファイルのアップロード

Splunk AppDynamics は、アプリケーションがクラッシュスナップショット用の人間が判読可能なスタックトレースを生成するために、dSYM ファイルを必要とします。スナップショットの重要性の詳細については、「人間が判読可能なクラッシュスナップショットの取得」を参照してください。

アプリケーションを更新する場合は、新しいアプリケーションバージョン用の新しい dSYM ファイルを用意する必要があります。dSYM ファイルには、特定の Xcode ビルドにリンクする UUID が含まれているため、Splunk AppDynamics は、追加情報を使用せずに、正しい dSYM ファイルと着信クラッシュレポートを明確に照合できます。

dSYM ファイルをアップロードするには:

  1. dSYM ファイルを有効にします

  2. ビルドのたびに自動でファイルをアップロードするように環境をセットアップするか、ファイルを手動でアップロードします

dSYM ファイルの有効化

アプリケーションがクラッシュした場合に生成されるクラッシュスナップショットに、人間が判読可能な情報をエージェントが提供できるようにするには、[] ファイルオプションを使用してコンパイルし、アプリケーション用のデバッグシンボルファイルを作成します。

dSYM を有効にするには:

  1. Xcode の Project Navigator でプロジェクトを選択します。
  2. ターゲットリストで、アプリケーションを構築するターゲットを選択します。
  3. [Build Settings] タブを選択します。
  4. [Build Options] セクションで、Debugging Information FormatDWARF with dSYM File に設定されていることを確認します。

ビルドごとに Splunk AppDynamics に dSYM ファイルを自動でアップロードする

dSYM ファイルのアップロードを自動化すると、ビルドのたびに必要な手動手順の数が削減され、すべてのビルドで適切な dSYM ファイルを Splunk AppDynamics が使用できるようになります。

開始する前に、xcode_build_dsym_upload.sh スクリプトをダウンロードします。

  1. Xcode の [Project Navigator] で、プロジェクトを選択します。
  2. アプリケーションターゲットをクリックします。
  3. [Settings] エディタで [Build Phase] タブを選択します。
  4. メインパネルの左上隅にある [+] アイコンをクリックします。
  5. ドロップダウンから [New Run Script Phase] を選択します。
  6. スクリプトボックスで、次の行を追加します。
    export ADRUM_ACCOUNT_NAME="<Account_Name_HERE>" // From the View License - End User Monitoring section of the License Page
    export ADRUM_LICENSE_KEY="<License_Key_HERE>"  // From the View License - End User Monitoring section of the License Page
    SCRIPT=<Path of the xcode_build_dsym_upload.sh script>
    /bin/sh "${SCRIPT}"
  7. また、必要に応じて設定できるオプションパラメータもあります。これらを設定するには、上記の 2 番目の ステートメントの後に次の行を追加します。有効にするには 1、無効にするには 0 を設定します。
    export ADRUM_UPLOAD_WHEN_BUILT_FOR_SIMULATOR=0
    export ADRUM_TREAT_UPLOAD_FAILURES_AS_ERRORS=0
    export ADRUM_EUM_PROCESSOR="<EUM_SERVER_URL>"
    最後のステートメントは、「SaaS ベースの EUM アカウントの地域クラウドロケーション」またはオンプレミスサーバーの URL を設定するために使用する必要があります。

手動で Splunk AppDynamics に dSYM ファイルをアップロードする

ファイルを手動でアップロードするには:

  1. Xcode から dSYM ファイルを取得します
  2. UI を使用して AppDynamics に dSYM ファイルをアップロードするSplunk AppDynamicsか、Splunk AppDynamicsAPI を使用して AppDynamics に dSYM ファイルをアップロードします。
  3. REST API を使用してアップロードされた dSYM を確認します

Xcode から dSYM ファイルを取得する

  1. Xcode で Xcode ビルドを実行します:Product > Build
  2. ログナビゲータを表示します:View > Navigators > Show Report Navigator
    注: 古いバージョンの Xcode では [Show Log Navigator] です。
  3. 最新のビルドのログエントリをクリックします。
  4. ログの末尾付近で、「Generate <Your_App_Name>.app.dSYM」という名前のログエントリの上にマウスのカーソルを合わせます。
  5. エントリの右側にあるボタンをクリックして、展開します。表示されるコマンドの最後は、dSYM ファイルへのパスです。
  6. Finder でこの dSYM ファイルに移動します。
  7. dSYM ファイルを右クリックし、[Compress] を選択します。
  8. Finder が生成する .zip ファイルを Splunk AppDynamics にアップロードします。

UI を使用して Splunk AppDynamics に dSYM ファイルをアップロードする

  1. モバイル アプリケーション メニューから、[Configuration] をクリックします。
  2. [Mobile App Configuration] をクリックします。
  3. [dSYM Files] で、[+] アイコンをクリックします。
  4. [Upload Missing dSYM Mapping] ダイアログで [Choose File] をクリックします。アップローダは .zip 拡張子を持つファイルを想定します。
  5. ファイルブラウザで、インストゥルメント化されたアプリケーションの圧縮された dSYM ファイルを選択します。
  6. Upload をクリックします。

REST API を使用して Splunk AppDynamics に dSYM ファイルをアップロードする

API では HTTP 基本認証が使用されます。ユーザ名は EUM アカウント名で、パスワードは EUM ライセンスキーです。

注: この REST API を無効にし、トークンベースのアップロードを使用するコントローラ API を使用する場合は、Cisco AppDynamics サポートにお問い合わせください。Splunk AppDynamics

HTTP 基本認証ログイン情報のセットアップ

  1. コントローラ UI の右上隅で、Settings > License をクリックします。

  2. [Account Usage] タブで、[User Experience] セクションまで下にスクロールします。
  3. ライセンスキーの横にある [Show] をクリックして、EUM ライセンスキーを表示します。これが、認証用のパスワードです。
  4. EUM アカウント名と EUM ライセンスキーを URL エンコードします。

dSYM ファイルの送信

PUT -H Content-Type:application/octet-stream URI の本文で、dSYM を zip アーカイブとして送信します。

アメリカ地域
https://api.eum-appdynamics.com/v2/account/<EUM_Account_Name>/ios-dsym
EMEA
https://fra-api.eum-appdynamics.com/v2/account/<EUM_Account_Name>/ios-dsym
APAC
https://syd-api.eum-appdynamics.com/v2/account/<EUM_Account_Name>/ios-dsym

リクエストと応答の例

これは、REST API を使用した要求と応答の例です。

アップロードのリクエスト

次の例では、curl を使用して「UISampleApp.app.dSYM.zip」という名前の dSYM ファイルを送信します。EUM アカウント名は「Example account」、パスワードは EUM ライセンスキー「Example-License-Key-4e8ec2ae6cfe」です。アカウント名が URL エンコードされると、アカウント名のスペースはプラス記号に置き換えられます。

アメリカ地域
curl -v -H Content-Type:application/octet-stream --upload-file UISampleApp.app.dSYM.zip --user Example account:Example-License-Key-4e8ec2ae6cfe https://api.eum-appdynamics.com/v2/account/Example+account/ios-dsym
EMEA
curl -v -H Content-Type:application/octet-stream --upload-file UISampleApp.app.dSYM.zip --user Example account:Example-License-Key-4e8ec2ae6cfe https://fra-api.eum-appdynamics.com/v2/account/Example+account/ios-dsym
APAC
curl -v -H Content-Type:application/octet-stream --upload-file UISampleApp.app.dSYM.zip --user Example account:Example-License-Key-4e8ec2ae6cfe https://syd-api.eum-appdynamics.com/v2/account/Example+account/ios-dsym

アップロードの応答

サンプルリクエストが成功した場合の出力は次のようになります。

アメリカ地域
* About to connect() to api.eum-appdynamics.com port 443 (#0)*   Trying ::1...
* connected
* Connected to api.eum-appdynamics.com (::1) port 443 (#0)
* Server auth using Basic with user 'Example+account'
> PUT /v2/account/Example+Account/ios-dsym  HTTP/1.1
> Authorization: Basic SW50ZXJuYWwrdGVzdCthY2NvdW50OlRlc3RBY2N0LTFlMzktNDVkMy05MzAzLTRlOGVjMmFlNmNmZQ==
> User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8y zlib/1.2.5
> Host: localhost:7001
> Accept: */*
> Content-Length: 0
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
< HTTP/1.1 200 OK
< Content-Length: 0
< Server: Jetty(8.1.4.v20120524)
<
* Connection #0 to host api.eum-appdynamics.com left intact
* Closing connection #0
EMEA
* About to connect() to fra-api.eum-appdynamics.com port 443 (#0)*   Trying ::1...
* connected
* Connected to fra-api.eum-appdynamics.com (::1) port 443 (#0)
* Server auth using Basic with user 'Example+account'
> PUT /v2/account/Example+Account/ios-dsym  HTTP/1.1
> Authorization: Basic SW50ZXJuYWwrdGVzdCthY2NvdW50OlRlc3RBY2N0LTFlMzktNDVkMy05MzAzLTRlOGVjMmFlNmNmZQ==
> User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8y zlib/1.2.5
> Host: localhost:7001
> Accept: */*
> Content-Length: 0
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
< HTTP/1.1 200 OK
< Content-Length: 0
< Server: Jetty(8.1.4.v20120524)
<
* Connection #0 to host fra-api.eum-appdynamics.com left intact
* Closing connection #0
APAC
* About to connect() to syd-api.eum-appdynamics.com port 443 (#0)*   Trying ::1...
* connected
* Connected to syd-api.eum-appdynamics.com (::1) port 443 (#0)
* Server auth using Basic with user 'Example+account'
> PUT /v2/account/Example+Account/ios-dsym  HTTP/1.1
> Authorization: Basic SW50ZXJuYWwrdGVzdCthY2NvdW50OlRlc3RBY2N0LTFlMzktNDVkMy05MzAzLTRlOGVjMmFlNmNmZQ==
> User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8y zlib/1.2.5
> Host: localhost:7001
> Accept: */*
> Content-Length: 0
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
< HTTP/1.1 200 OK
< Content-Length: 0
< Server: Jetty(8.1.4.v20120524)
<
* Connection #0 to host syd-api.eum-appdynamics.com left intact
* Closing connection #0

トークンを使用した REST API での dSYM のアップロード

注: トークンベースのアップロードを使用するには、次のプロパティが有効になっていることを確認します。
MAPPING_FILE_UPLOAD_API_DISABLED: True

dSYM ファイルをアップロードするには、次の手順を実行します。

  1. ファイルをアップロードするためのトークンを生成します。
    curl -L -X GET -u <username>@<accountName>:<password> '<controller base url>/controller/restui/mobileRUMConfig/fileUploadToken'
  2. アプリケーション ID を取得します。
    curl -L -X GET -u <username>@<accountName>:<password> '<controller base url>/controller/restui/mobileRUMConfig/getApplicationId/<App key>'
  3. dSYM ファイルをアップロードします。
    curl -L -X POST -u <username>@<accountName>:<password> '<controller base url>/controller/restui/mobileRUMConfig/uploadDSYMPackageFile/<applicationID>?token=<token>'  -F 'fileData=@"<DSYM file PATH>"'

REST API を使用してアップロードされた dSYM を確認する

2 つの REST API を使用して dSYM が正常にアップロードされたことを確認できます。

  1. アップロードした最近 50 件の dSYM の UUID リストを取得します
  2. 特定の dSYM がアップロードされているかどうかを確認します

アップロードされた最近 50 件の dSYM リスト

dsymQuery メソッドを使用すると、アカウントにアップロードされた最近の dSYM ファイル(最大 50 件)の UUID リストとアップロード時刻を取得できます。その応答は、アップロード時刻が最新のものから、JSON 形式で表示されます。

  1. REST API を使用して Splunk AppDynamics に dSYM ファイルをアップロードする」の説明に従って、認証を設定します。
  2. 次のようにフォームの GET リクエストを作成します。
    curl --user Example+account:Example-License-Key-4e8ec2ae6cfe https://<EUM_Cloud/Server_Host:Port>/v2/account/Example+account/crash-symbol-file-query/dsym

    - EUM_Cloud は、SaaS ベースの EUM クラウド URL を指します。完全なリストについては、「Splunk AppDynamics On-Premises SaaS ドメインと IP 範囲」を参照してください。

    - EUM_Server_Host は、オンプレミス EUM サーバーを指す URL を指します。

    - EUM_Account_Name は、EUM アカウント名です。

    - GUID_To_Check は、対象の ProGuard ファイルの GUID です。

    .

サンプル リクエスト

アメリカ地域
curl --user Example+account:Example-License-Key-4e8ec2ae6cfe  https://api.eum-appdynamics.com:443/v2/account/Example+account/crash-symbol-file-query/dsym
EMEA
curl --user Example+account:Example-License-Key-4e8ec2ae6cfe  https://fra-api.eum-appdynamics.com:443/v2/account/Example+account/crash-symbol-file-query/dsym
APAC
curl --user Example+account:Example-License-Key-4e8ec2ae6cfe  https://syd-api.eum-appdynamics.com:443/v2/account/Example+account/crash-symbol-file-query/dsym

サンプル応答

{"dSymFiles":[
{"uploadTime":"mm/dd/yyyy 14:15:32","UUID2":"my_uuid2"},
{"uploadTime":"mm/dd/yyyy 14:15:32","UUID":"my_uuid"}
]}

UUID による特定の dSYM の確認

checkForDSymFile メソッドを使用すると、UUID によって特定の dSYM がアップロードされたか確認できます。アップロード時刻が応答で返されます。

  1. REST API を使用して Splunk AppDynamics に dSYM ファイルをアップロードする」の説明に従って、認証を設定します。
  2. 次のようにフォームの GET リクエストを作成します。
    curl --user Example+account:Example-License-Key-4e8ec2ae6cfe https://<EUM_Cloud/Server_Host:Port>/v2/account/Example+account/crash-symbol-file-query/dsym/uuid/<UUID_to_Check>

    - EUM_Cloud は、SaaS ベースの EUM クラウド URL を指します。完全なリストについては、「Splunk AppDynamics On-Premises SaaS ドメインと IP 範囲」を参照してください。

    - EUM_Server_Host は、オンプレミス EUM サーバーを指す URL を指します。

    - EUM_Account_Name は、EUM アカウント名です。

    - GUID_To_Check は、対象の ProGuard ファイルの GUID です。

    .

    サンプル リクエスト

    curl --user Example+account:Example-License-Key-4e8ec2ae6cfe  https://<EUM_Cloud/Server_Host:Port>/v2/account/Example+account/crash-symbol-file-query/dsym/uuid/<UUID_to_Check>

    サンプル応答

    {"uploadTime":"mm/dd/yyyy 14:15:32","UUID":"my_uuid"}