このトピックでは、Sentry SDK によって収集されたアプリケーションデータを Alibaba Cloud Simple Log Service (SLS) に送信し、Real User Monitoring コンソールで表示・分析する方法について説明します。
前提条件
この機能は現在、グレースケールリリース中です。アクセスを申請するには、チケットを送信してください。
Cloud Monitor 2.0 を有効化しました。
ワークスペースを作成しました。ワークスペースを作成しました。
クライアントアプリケーションに Sentry SDK を統合済みであり、SDK バージョンが要件を満たしている必要があります。サポートされているバージョンの一覧については、「Real User Monitoring との Sentry SDK 統合の概要」をご参照ください。
このソリューションは Sentry Envelope プロトコルフォーマットのみをサポートします。JavaScript SDK v6 以前など、古い SDK バージョンを使用している場合は、Envelope をサポートするバージョンにスペックアップする必要があります。
ステップ 1:RUM アプリケーションの作成
Cloud Monitor 2.0 コンソールにログインし、対象のワークスペースを選択して、左側のナビゲーションウィンドウで Integration Center をクリックします。
左側のナビゲーションウィンドウで Integration Center をクリックします。
Real User Monitoring セクションで、iOS、Android、Web など、ご利用のアプリケーションタイプに一致するプラットフォームカードを選択します。
アプリケーション名を入力します。必要に応じて他のパラメーターを設定し、Create Application をクリックします。
アプリケーションの作成後、Application Settings > Basic Information に移動し、以下の値を記録します。
パラメーター
説明
現在地を取得
Workspace
ワークスペース名
Application Settings > Basic Information
Endpoint
データレポート用ドメイン名
Application Settings > Basic Information > Integration Configuration
ServiceId
RUM アプリケーション ID
Application Settings > Basic Information
ステップ 2:Sentry でのプロジェクトの作成(任意)
このステップは、Sentry コンソールでデータを表示する場合にのみ必要です。目的は、Sentry プロジェクト ID を取得することです。
Sentry コンソールにログインします。
新しいプロジェクトを作成します。クライアントアプリケーションと同じプラットフォームを選択します。
プロジェクト設定ページに移動し、DSN 構成を確認します。
DSN からプロジェクト ID を抽出します。これは URL パスの末尾にある数値セグメントです。
たとえば、DSN が https://xxx@sentry.example.com/21 の場合、プロジェクト ID は 21 です。
注:Sentry コンソールを使用しない場合は、このステップをスキップできます。後続の構成では、プロジェクト ID を 0 に設定してください。ステップ 3:データ取り込みの設定
ご利用のシナリオに応じて、以下のいずれかの方法を選択します。新規ユーザーまたは移行検証を完了したユーザーには、SDK 直接書き込み方式を推奨します。自己管理型 Sentry インスタンスからの移行を行う場合は、まず Nginx ミラー二重書き込み方式を使用してデータ整合性を検証し、その後 SDK 直接書き込み方式に切り替えることを推奨します。
方法 1:SDK 直接書き込み
クライアントアプリケーションの Sentry SDK における DSN 構成を更新し、Alibaba Cloud SLS を指すようにします。
DSN フォーマット
元の Sentry DSN フォーマット:
https://<public_key>@<sentry_host>/<project_id>変更後の Alibaba Cloud DSN フォーマット:
https://<public_key>@<endpoint>/rum/sentry/<workspace>/<service_id>/<project_id>パラメーター
パラメーター | 説明 |
public_key | Sentry DSN の公開キー。SLS はこのパラメーターを検証しません。任意の値を使用できます。 |
endpoint | データレポート用ドメイン名。ステップ 1 で取得した値を使用します。 |
workspace | ワークスペース名。ステップ 1 で取得した値を使用します。 |
service_id | RUM アプリケーション ID。ステップ 1 で取得した値を使用します。 |
project_id | Sentry プロジェクト ID。ステップ 2 で取得した値を使用します。Sentry コンソールを使用しない場合は、 |
構成例
以下に、各プラットフォーム向けの SDK 構成例を示します。
iOS (Swift)
import Sentry
SentrySDK.start { options in
options.dsn = "https://key@cn-chengdu.log.aliyuncs.com/rum/sentry/my-workspace/abc123@example/21"
options.debug = true
}Android (Kotlin)
import io.sentry.android.core.SentryAndroid
SentryAndroid.init(this) { options ->
options.dsn = "https://key@cn-chengdu.log.aliyuncs.com/rum/sentry/my-workspace/abc123@example/21"
options.isDebug = true
}Web (JavaScript)
import * as Sentry from "@sentry/browser";
Sentry.init({
dsn: "https://key@cn-chengdu.log.aliyuncs.com/rum/sentry/my-workspace/abc123@example/21",
debug: true,
});Electron
import * as Sentry from "@sentry/electron";
Sentry.init({
dsn: "http://key@cn-chengdu.log.aliyuncs.com/rum/sentry/my-workspace/abc123@example/21",
});Vue
import * as Sentry from "@sentry/vue";
Sentry.init({
app,
dsn: "http://key@cn-chengdu.log.aliyuncs.com/rum/sentry/my-workspace/abc123@example/21",
});方法 2:Nginx ミラー二重書き込み
Nginx ミラーモジュールを使用して、データを既存の Sentry サービスと Alibaba Cloud SLS の両方に送信します。
シナリオ:Standard Edition Sentry コンソール、RUM Edition Sentry コンソール、および Alibaba Cloud RUM コンソールのすべてでデータを表示する必要がある場合。
構成手順
Nginx 構成ファイルに、SLS 転送用の upstream を追加します。
upstream rum_forwarder { server <endpoint>:80; keepalive 2; }URI マッピングルールを追加します。Sentry プロジェクト ID に基づいて異なる転送パスを設定します。
map $request_uri $forwarder_path { # デフォルト転送パス default /rum/sentry/<workspace>/<service_id>; # プロジェクト ID ごとの転送 "~^/api/<project_id>/envelope/" /rum/sentry/<workspace>/<service_id_for_project_1>; "~^/api/1/envelope/" /rum/sentry/<workspace>/<service_id_for_project_1>; "~^/api/2/envelope/" /rum/sentry/<workspace>/<service_id_for_project_2>; }Sentry API ルートに対してトラフィックミラーリングを有効にします。
location ~ ^/api/[1-9]\d*/ { proxy_pass http://relay; mirror /rum_mirror; mirror_request_body on; } location = /rum_mirror { internal; proxy_pass http://rum_forwarder$forwarder_path$request_uri; proxy_set_header Host <endpoint>; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Request-Id $request_id; proxy_set_header Connection ''; proxy_read_timeout 5s; proxy_send_timeout 5s; proxy_connect_timeout 5s; proxy_ignore_client_abort on; }Nginx 構成を再読み込みします。
nginx -t && nginx -s reload
マルチプロジェクト構成例
複数の Sentry プロジェクトがあり、それぞれを異なる RUM アプリケーションに転送する必要がある場合は、以下のように map ルールを構成できます。
map $request_uri $forwarder_path {
default /rum/sentry/my-workspace/default-service;
# Project 1 → RUM Application A
"~^/api/1/envelope/" /rum/sentry/my-workspace/service-a;
# Project 2 → RUM Application B
"~^/api/2/envelope/" /rum/sentry/my-workspace/service-b;
# Project 3 → RUM Application C
"~^/api/3/envelope/" /rum/sentry/my-workspace/service-c;
}
完全な構成例
http {
upstream rum_forwarder {
server <endpoint>:80;
keepalive 2;
}
map $request_uri $forwarder_path {
# デフォルト転送パス
default /rum/sentry/<workspace>/<service_id>;
# プロジェクト ID ごとの転送
"~^/api/1/envelope/" /rum/sentry/<workspace>/<service_id_for_project_1>;
"~^/api/2/envelope/" /rum/sentry/<workspace>/<service_id_for_project_2>;
}
server {
listen 80;
server_name sentry.example.com;
# Sentry API ルート — ミラーリングを有効化
location ~ ^/api/[1-9]\d*/ {
proxy_pass http://relay;
mirror /rum_mirror;
mirror_request_body on;
}
# SLS ミラー処理
location = /rum_mirror {
internal;
proxy_pass http://rum_forwarder$forwarder_path$request_uri;
proxy_set_header Host <endpoint>;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Request-Id $request_id;
proxy_set_header Connection '';
proxy_read_timeout 5s;
proxy_send_timeout 5s;
proxy_connect_timeout 5s;
proxy_ignore_client_abort on;
}
# その他の Sentry ルート構成
# ...
}
}
パラメーターの説明
パラメーター | 説明 |
endpoint | SLS データレポート用ドメイン名(例: |
workspace | ワークスペース名 |
service_id | RUM アプリケーション ID |
project_id | Sentry プロジェクト ID |
データ取り込みの検証
構成が完了したら、以下の手順でデータが正しく取り込まれているかを検証できます。
クライアントアプリケーションでテストエラーまたはイベントを発生させます。
Cloud Monitor 2.0 コンソールにログインし、Real User Monitoring > Application List に移動します。
RUM アプリケーションを選択し、新しいデータが表示されているかを確認します。通常、データは取り込み後 1~2 分以内にコンソールに表示されます。
よくある質問
Q:DSN の public_key に任意の値を設定できますか?
A:はい、可能です。SLS は Sentry DSN の public_key パラメーターを検証しません。トレーサビリティのため、元のキーをそのまま使用することを推奨します。
Q:データを SLS に取り込んだ後も、Sentry コンソールで表示できますか?
A:はい、可能です。SLS からデータを読み取るカスタム版の Sentry Web および Snuba API コンテナーをデプロイできます。詳細な手順については、「Real User Monitoring データを読み取るように Sentry コンソールを設定する方法」をご参照ください。