通过OSS将符号表文件批量上传到指定的RUM OSS Bucket下,即可在用户体验监控控制台的
中看到上传的符号表文件,后续您可以在异常明细中使用已上传的符号表对异常堆栈进行解析。前提条件
已创建用户体验监控应用,并获取应用Pid。具体操作,请参见接入Web & H5应用、接入小程序和接入移动应用。
已创建AccessKey。具体操作,请参见创建AccessKey。
对上述AccessKey已赋予AliyunSTSAssumeRoleAccess权限,具体操作,请参见AliyunSTSAssumeRoleAccess。
已开通OSS文件批量上传功能。具体开通步骤如下:
在应用设置页面的文件管理区域,单击开启OSS批量上传文件开关。
注意事项
必须使用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.dSYM
和iOSDemo.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才具有该权限。