全部產品
Search
文件中心

Application Real-Time Monitoring Service:批量上傳符號表

更新時間:Oct 25, 2024

通過OSS將符號表檔案批量上傳到指定的RUM OSS Bucket下,即可在使用者體驗監控控制台的應用設定 > 檔案管理中看到上傳的符號表檔案,後續您可以在異常明細中使用已上傳的符號表對異常堆棧進行解析。

前提條件

  • 已建立使用者體驗監控應用,並擷取應用Pid。具體操作,請參見接入Web & H5應用接入小程式接入行動裝置 App

  • 已建立AccessKey。具體操作,請參見建立AccessKey

  • 對上述AccessKey已賦予AliyunSTSAssumeRoleAccess許可權,具體操作,請參見AliyunSTSAssumeRoleAccess

  • 已有OSS用戶端,目前OSS支援通過多語言SDK和OSS命令列工具(ossutil)上傳檔案。

  • 已開通OSS檔案批量上傳功能。具體開通步驟如下:

    應用設定頁面的檔案管理地區,單擊開啟OSS批量上傳檔案開關。

    image

注意事項

  • 必須使用RUM按地區提供的OSS Bucket,地區和使用者體驗監控應用所在的地區相關,各地區Bucket列表如下:

    • 中國杭州地區(cn-hangzhou):arms-rum-sourcemap-hz

    • 新加坡地區(ap-southeast-1):arms-rum-sourcemap-sg

    • 美國矽谷地區(us-west-1):arms-rum-sourcemap-usw

  • 上傳到OSS的目標路徑:${uid}/${pid}/${version}/

    重要
    • uid是阿里雲帳號(主帳號)ID,pid是使用者體驗監控應用ID,version是自訂的符號表版本。

    • iOS的.dSYM檔案上傳時需要將.dSYM打包成ZIP壓縮包上傳,上傳後使用者體驗監控會自動解析.dSYM符號表檔案的UUID。

使用者體驗監控目前支援通過以下幾種方式批量上傳符號表,您可以根據需求選擇其中一種:

使用ossutil命令列工具上傳

重要

使用ossutil上傳時,需要提前配置訪問憑證,具體操作,請參見配置ossutil

指定本地目錄批量上傳

上傳命令格式:

ossutil cp -r ${localfolder}/ oss://${bucket}/${uid}/${pid}/${version}/

樣本:

ossutil cp -r localfolder/ oss://arms-rum-sourcemap-hz/1981000187653069/ji7ex7ti31@f1fadb692e6cdc8/1.0.0/

指定本地檔案上傳

上傳命令格式:

./ossutil64 cp ${examplefile} oss://${bucket}/${uid}/${pid}/${version}/

樣本:

./ossutil64 cp examplefile.js.map oss://arms-rum-sourcemap-hz/1981000187653069/ji7ex7ti31@f1fadb692e6cdc8/1.0.0/

使用OSS SDK上傳

以下使用Python SDK舉例,指定上傳examplefile.js.map檔案,UID為1981000187653069,PID為ji7ex7ti31@f1fadb692e6cdc8,Version為1.0.0

範例程式碼如下,其他語言的操作請參見SDK參考

# -*- coding: utf-8 -*-
import oss2
import os
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填寫Bucket所在地區對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
# 填寫Bucket名稱。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'arms-rum-sourcemap-hz')

# 必須以二進位的方式開啟檔案。
# 填寫本地檔案的完整路徑。如果未指定本地路徑,則預設從樣本程式所屬專案對應本地路徑中上傳檔案。
key = '1981000187653069/ji7ex7ti31@f1fadb692e6cdc8/1.0.0/'
bucket.put_object_from_file(key + 'examplefile.js.map', 'D:\\localpath\\examplefile.js.map')

整合CI/CD流水線自動批量上傳

CI/CD流水線可整合OSS命令列工具或OSS SDK,將編譯產生的符號表檔案通過上述工具上傳到指定的OSS Bucket下。

iOS .dSYM符號表打包注意事項

上傳iOS .dSYM符號表必須將單個或多個.dSYM檔案打包成一個ZIP檔案進行上傳,例如在一個目錄下存在 AlibabaCloudRUM.framework.dSYMiOSDemo.app.dSYM兩個符號表檔案,檔案目錄如下:

.
├── AlibabaCloudRUM.framework.dSYM
│   └── Contents
│       ├── Info.plist
│       └── Resources
│           ├── DWARF
│           │   └── AlibabaCloudRUM
│           └── Relocations
│               └── aarch64
│                   └── AlibabaCloudRUM.yml
└── iOSDemo.app.dSYM
    └── Contents
        ├── Info.plist
        └── Resources
            ├── DWARF
            │   ├── iOSDemo
            │   └── iOSDemo.txt
            └── Relocations
                └── aarch64
                    └── iOSDemo.yml

將此目錄下的.dSYM檔案打包壓縮為test.zip檔案,壓縮過程和結果如下:

» zip -r test.zip *.dSYM                                                    
  adding: AlibabaCloudRUM.framework.dSYM/ (stored 0%)
  adding: AlibabaCloudRUM.framework.dSYM/Contents/ (stored 0%)
  adding: AlibabaCloudRUM.framework.dSYM/Contents/Resources/ (stored 0%)
  adding: AlibabaCloudRUM.framework.dSYM/Contents/Resources/Relocations/ (stored 0%)
  adding: AlibabaCloudRUM.framework.dSYM/Contents/Resources/Relocations/aarch64/ (stored 0%)
  adding: AlibabaCloudRUM.framework.dSYM/Contents/Resources/Relocations/aarch64/AlibabaCloudRUM.yml (deflated 90%)
  adding: AlibabaCloudRUM.framework.dSYM/Contents/Resources/DWARF/ (stored 0%)
  adding: AlibabaCloudRUM.framework.dSYM/Contents/Resources/DWARF/AlibabaCloudRUM (deflated 71%)
  adding: AlibabaCloudRUM.framework.dSYM/Contents/Info.plist (deflated 52%)
  adding: iOSDemo.app.dSYM/ (stored 0%)
  adding: iOSDemo.app.dSYM/Contents/ (stored 0%)
  adding: iOSDemo.app.dSYM/Contents/Resources/ (stored 0%)
  adding: iOSDemo.app.dSYM/Contents/Resources/Relocations/ (stored 0%)
  adding: iOSDemo.app.dSYM/Contents/Resources/Relocations/aarch64/ (stored 0%)
  adding: iOSDemo.app.dSYM/Contents/Resources/Relocations/aarch64/iOSDemo.yml (deflated 89%)
  adding: iOSDemo.app.dSYM/Contents/Resources/DWARF/ (stored 0%)
  adding: iOSDemo.app.dSYM/Contents/Resources/DWARF/iOSDemo.txt (deflated 72%)
  adding: iOSDemo.app.dSYM/Contents/Resources/DWARF/iOSDemo (deflated 72%)
  adding: iOSDemo.app.dSYM/Contents/Info.plist (deflated 52%)

將最終產生的test.zip檔案上傳即可。

重要

OSS上傳目標路徑需要添加版本號碼(version)。

常見錯誤

報錯內容:Error: oss: service returned error: StatusCode=403, ErrorCode=AccessDenied, ErrorMessage="You have no right to access this object because of bucket acl."

如果報403錯誤碼,請檢查當前您使用的AccessKey對應的帳號是否已參考前提條件在控制台側開通開啟OSS批量上傳檔案。該許可權為子帳號層級隔離,只有在控制台側開通該功能的帳號對應的AccessKey才具有該許可權。