すべてのプロダクト
Search
ドキュメントセンター

Application Real-Time Monitoring Service:複数のシンボルテーブルを一度にアップロードする

最終更新日:Dec 30, 2024

アプリケーションリアルタイムモニタリング(ARMS)のリアルユーザーモニタリング(RUM)サブサービスでは、ファイル管理アプリケーション設定ページのセクションでRUMが提供するオブジェクトストレージサービス(OSS)バケットに、複数のシンボルテーブルを一度にアップロードできます。これにより、例外の詳細にあるシンボルテーブルに基づいて、異常なスタックデータを分析できます。

前提条件

  • アプリケーションがRUMに統合され、アプリケーションIDが生成されていること。詳細については、WebアプリケーションまたはHTML5アプリケーションの統合ミニプログラムの統合、およびAndroidアプリの監視をご参照ください。

  • AccessKeyペアが作成されていること。詳細については、AccessKeyペアの作成をご参照ください。

  • AliyunSTSAssumeRoleAccessポリシーがAccessKeyペアにアタッチされていること。詳細については、AliyunSTSAssumeRoleAccessをご参照ください。

  • OSSクライアントがインストールされていること。OSSは、OSS SDKossutilを使用してのみファイルをアップロードできます。

  • OSSへの複数ファイルのアップロードが有効になっていること。次の手順を実行します。

    アプリケーション設定タブのファイル管理セクションで、OSS一括アップロードを有効にするをオンにします。

    image

使用上の注意

  • アプリケーションが存在するリージョンに基づいてOSSバケットを使用してください。次のOSSバケットが利用可能です。

    • 中国(杭州):arms-rum-sourcemap-hz

    • シンガポール:arms-rum-sourcemap-sg

    • 米国(シリコンバレー):arms-rum-sourcemap-usw

  • OSSパス:${uid}/${pid}/${version}/

    重要
    • OSSパスでは、uidはAlibaba CloudアカウントID、pidはアプリケーションID、versionはシンボルテーブルのバージョンを指定します。

    • iOSアプリの場合、dSYMファイルをOSSにアップロードする前に、圧縮する必要があります。圧縮ファイルがOSSにアップロードされると、RUMはファイルから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

次の例は、OSS SDK for Pythonを使用してexamplefile.js.mapという名前のファイルをアップロードする方法を示しています。Alibaba CloudアカウントIDは1981000187653069、アプリケーションIDはji7ex7ti31@f1fadb692e6cdc8、シンボルテーブルのバージョンは1.0.0です。

次のコードを実行します。他の言語のRUM SDKの使用方法については、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パラメータをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。
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パイプラインをossutilまたはOSS SDKに統合して、シンボルテーブルを指定されたOSSバケットにアップロードできます。

dSYMファイルのアップロードに関する使用上の注意

dSYMファイルをアップロードする前に、圧縮する必要があります。ディレクトリから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にアップロードします。

重要

OSSパスには、シンボルテーブルのバージョンが必ず含まれている必要があります。

FAQ

Q:HTTPステータスコード403、エラーコードAccessDenied、およびエラーメッセージ「bucket aclのため、このオブジェクトにアクセスする権限がありません。」が返された場合はどうすればよいですか?

A:現在のAlibaba Cloudアカウントで、ARMSコンソールでOSS一括アップロードを有効にするがオンになっているかどうかを確認してください。この機能は、スイッチをオンにしたAlibaba Cloudアカウントでのみ使用できます。詳細については、前提条件セクションをご参照ください。