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>"'

Check Uploaded dSYMs Using the REST API

You can check to make sure that your dSYMs have successfully uploaded using two REST APIs.

  1. Get a list of the UUIDs for the last 50 dSYMs you have uploaded.
  2. Check if a specific dSYM has been uploaded.

List of the Last 50 dSYMs Uploaded

The dsymQuery method allows you to retrieve a list of UUIDs for up to the last 50 dSYM files that have been uploaded to your account, along with the time they were uploaded. The response is displayed as JSON, by upload time, with the most recent first.

  1. Set up your authentication as described in Upload the dSYM File to Splunk AppDynamics Using the REST API.
  2. Create a GET request of the form:
    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 refers to SaaS-based EUM Cloud URLs. For a complete list, see SaaS Domains and IP Ranges.

    - EUM_Server_Host refers to the URL pointing to your on-premises EUM Server.

    - EUM_Account_Name is your EUM account name.

    - GUID_To_Check is the GUID of the ProGuard file in which you are interested.

    .

Sample Request

Americas
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

Sample Response

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

Check for Specific dSYM by UUID

The checkForDSymFile method allows you to check if a specific dSYM by UUID has been uploaded. The upload time is returned in the response.

  1. Set up your authentication as described in Upload the dSYM File to Splunk AppDynamics Using the REST API.
  2. Create a GET request of the form:
    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 refers to SaaS-based EUM Cloud URLs. For a complete list, see SaaS Domains and IP Ranges.

    - EUM_Server_Host refers to the URL pointing to your on-premises EUM Server.

    - EUM_Account_Name is your EUM account name.

    - GUID_To_Check is the GUID of the ProGuard file in which you are interested.

    .

    Sample Request

    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>

    Sample Response

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