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

Simple Log Service:webページからユーザーエクスペリエンスデータを収集する

最終更新日:Jan 02, 2025

このトピックでは、Simple Log Service SDKを使用してwebページからユーザーエクスペリエンスデータを収集する方法について説明します。

前提条件

Full-stack Observabilityインスタンスが作成され、インスタンスのバージョンは1.1.0以降です。 フルスタックのObservabilityインスタンスを推奨します。 詳細は、インスタンスの作成をご参照ください。

インストールと初期化

  1. Simple Log Serviceコンソール.

  2. ログアプリケーション セクションで、インテリジェント O&M タブをクリックします。 次に、フルスタックオブザーバビリティ をクリックします。

  3. インスタンスリストで、インスタンスをクリックします。

    重要

    インスタンスのバージョンは1.1.0以降である必要があります。

  4. 左側のナビゲーションウィンドウで、[ユーザーエクスペリエンスモニタリング] > [データインポート] を選択します。

  5. [データのインポート] ダイアログボックスで、次の操作を実行します。

    1. [WEB] をクリックします。 そして、[次へ] をクリックします。 image

    2. 基本パラメータを設定します。

      パラメーター

      説明

      環境

      環境情報を指定すると、webページからインスタンスに収集されたユーザーエクスペリエンスデータに環境情報が追加されます。 開発、テスト、または統合環境を指定できます。 これにより、さまざまな環境のwebページから収集されたユーザーエクスペリエンスデータを区別できます。

      サービス名

      サービス名を指定すると、webページからインスタンスに収集されたユーザーエクスペリエンスデータにサービス情報が追加されます。 Webサイト、ワークロード、または部門を指定できます。 これにより、さまざまなサービスのwebページから収集されたユーザーエクスペリエンスデータを区別することができます。

      エラーをレポート

      エラーをレポートをオンにした場合、Simple Log Service SDKはJavaScriptエラーとリソース読み込みエラーのデータをアップロードします。

      リソースのパフォーマンスデータをレポート

      リソースのパフォーマンスデータをレポート をオンにすると、Simple Log Service SDKは、js、css、イメージ、オーディオ、ビデオなどのリソースのパフォーマンスデータをアップロードします。

      リクエストデータをレポート

      リクエストデータをレポート をオンにすると、Simple Log Service SDKは、fetchやxhrなどのAPIリクエストデータをアップロードします。

      ページの読み込みパフォーマンスをレポート

      ページの読み込みパフォーマンスをレポート をオンにすると、Simple Log Service SDKはページ読み込みのパフォーマンスデータをアップロードします。

      Tracing Analysis

      Tracing Analysisをオンにすると、Simple Log Service SDKはフロントエンドとバックエンドのトレースデータをアップロードします。

      設定が完了すると、Simple Log Serviceがインストールおよび初期化スクリプトを生成します。

  6. 上記のスクリプトをコピーして、Simple Log Service SDKをインストールおよび初期化します。

    他の設定項目をSLS_CLIENTに追加できます。 詳細については、「付録1: SLS_CLIENT設定項目」をご参照ください。

  7. CDNベースの同期モード

    HTMLページの <head></head> タグに次のコードを追加し、すべてのスクリプトの前にタグが追加されていることを確認します。

    説明

    次のコードでは、${version} はバージョン番号を指定します。 Simple Log Serviceコンソールに表示されるバージョン番号が優先されます。

    <script src="https://g.alicdn.com/sls/sls-js-sdk/0.3.0/web-browser.js"></script>
    <script>
      window.SLS_CLIENT &&
        SLS_CLIENT.init({
          host: 'cn-beijing.log.aliyuncs.com', // The endpoint of the project that you specified when you created the instance. 
          project: 'demo-test', // The project that you specified when you created the instance. 
          logstore: 'demo-test-raw', // The name of the Logstore. After the instance is created, Simple Log Service automatically creates a Logstore named {instance}-raw. 
          workspace: 'demo', // The name of the workspace. Enter the instance ID. 
          env:  'prod', // The custom environment. 
          service:  'web', //The name of the service. 
          enableRuntimeError:  true, // Upload the data of JavaScript errors and resource loading errors. 
          enableResourcePerf:  true, // Upload the performance data of resources. 
          enableRequest:  true, // Upload API request data. 
          enablePerf:  true, // Upload the performance data of page uploading. 
          enableTrace:  true // Upload the trace data of the frontend and backend. 
        })
    </script>

    CDNベースの非同期モード

    HTMLページの <head></head> タグに次のコードを追加し、すべてのスクリプトの前にタグが追加されていることを確認します。

    説明

    次のコードでは、${version} はバージョン番号を指定します。 Simple Log Serviceコンソールに表示されるバージョン番号が優先されます。

    <script>
        (function (h, o, u, n, d) {
          h=h[d]=h[d]||{p:[],e:[],q:[],
          addLog:function(log){h.p.push(log)},
          addError:function(log){h.e.push(log)},
          onReady:function(c){h.q.push(c)},};
          d=o.createElement(u);
          d.async=1;d.src=n;
          n=o.getElementsByTagName(u)[0];
          n.parentNode.insertBefore(d,n)
        })(window, document, 'script',
          'https://g.alicdn.com/sls/sls-js-sdk/0.3.0/web-browser.js', 'SLS_CLIENT')
      SLS_CLIENT.onReady(function () {
        SLS_CLIENT.init({
          host: 'cn-beijing.log.aliyuncs.com', // The endpoint of the project that you specified when you created the instance. 
          project: 'demo-test', // The project that you specified when you created the instance. 
          logstore: 'demo-test-raw', // The name of the Logstore. After the instance is created, Simple Log Service automatically creates a Logstore named {instance}-raw. 
          workspace: 'demo', // The name of the workspace. Enter the instance ID. 
          env:  'prod', // The custom environment. 
          service:  'web', // The name of the service. 
          enableRuntimeError:  true, // Upload the data of JavaScript errors and resource loading errors. 
          enableResourcePerf:  true, // Upload the performance data of resources. 
          enableRequest:  true, // Upload API request data. 
          enablePerf:  true, // Upload the performance data of page uploading. 
          enableTrace:  true // Upload the trace data of the frontend and backend. 
        })
      })
    </script>

    npmメソッド

    1. npmパッケージをインストールします。

      npm install @aliyun-sls/web-browser
    2. SDKを初期化します。

      import { SLS_CLIENT } from '@aliyun-sls/web-browser';
        SLS_CLIENT.init({
            host: 'cn-beijing.log.aliyuncs.com', // The endpoint of the project that you specified when you created the instance. 
            project: 'demo-test',// The project that you specified when you created the instance. 
            logstore: 'demo-test-raw', // The name of the Logstore. After the instance is created, Simple Log Service automatically creates a Logstore named {instance}-raw. 
            workspace: 'demo',// The name of the workspace. Enter the instance ID. 
            env: 'prod',// The custom environment. 
            service: 'web',// The name of the service. 
            enableRuntimeError: true,// Upload the data of JavaScript errors and resource loading errors. 
            enableResourcePerf: true, // Upload the performance data of resources. 
            enableRequest: true,// Upload API request data. 
            enablePerf: true,// Upload the performance data of page loading. 
            enableTrace: true // Upload the trace data of the frontend and backend. 
          })
      
  8. テストWebサイトにアクセスして、テストデータを生成します。

  9. Simple Log ServiceコンソールでフルスタックのObservabilityアプリケーションに戻ります。

  10. [データのインポート] ダイアログボックスで、次へ をクリックします。

  11. では、データを確認中のステップデータのインポートダイアログボックスで、データを確認中.

  12. データが有効であることを確認したら、完成 をクリックします。

カスタムイベントのアップロード

SLS_CLIENT SDKは、特定のイベントの自動モニタリングをサポートし、ログをアップロードできます。

カスタムログのアップロード

SLS_CLIENT.addLog() インターフェイスは、カスタムイベントのアップロードに使用されます。 このインターフェイスはネストされたJSONデータをサポートし、JSON形式でパラメーターを指定できます。 クエリステートメントを使用して、Simple Log Serviceでアップロードされたデータをクエリおよび分析できます。 例:

  SLS_CLIENT.addLog({
    key: 'value',
    number: 1,
    array: [],
    json: {
      json: 'json'
    }
  })

カスタムJavaScriptエラーのデータをアップロードする

SLS_CLIENT.addError() インターフェイスを使用して、カスタムJavaScriptエラーのデータをアップロードできます。 例:

SLS_CLIENT.addError(new Error('init error'))

SLS_CLIENT.addError() インターフェイスを呼び出して、手動でエラーをキャプチャし、エラーのデータをアップロードできます。 例:

try {

} catch (err) {
  SLS_CLIENT.addError(err)
}

SLS_CLIENT SDKはSDKの初期化を有効にするため、SLS_CLIENT SDKを呼び出すと、システムがSLS_CLIENT.addLog() またはSLS_CLIENT.addError() インターフェイスを見つけることができます。 ただし、SLS_CLIENT.addLog() またはSLS_CLIENT.addError() インターフェイスを直接呼び出さないことを推奨します。 インターフェイスを呼び出す場合は、インターフェイスを特定の関数でラップすることをお勧めします。 例:

export function myAddLog(log) {
  if (SLS_CLIENT.addLog) {
    SLS_CLIENT.addLog(log)
  }
}

パラメータのローリング更新を実行する

シナリオによっては、uidなどの一部のユーザーパラメーターをすぐに取得できない場合があります。 SLS_CLIENT SDKでは、SLS_CLIENT SDKの初期化後にパラメータを動的に設定できます。 ローリング更新は、uidnicknameenvserviceversion、およびcustomパラメーターで実行できます。 次のサンプルコードは、インターフェイスを呼び出す方法の例を示しています。

SLS_CLIENT.setOptions({
  uid: 'uid',
  nickname: 'newnickname',
  env: 'newEnv',
  custom: {
    c: 'newCustom',
  },
  version: 'newVersion',
  service: 'newService',
})

カスタムプラグインの設定

SLS_CLIENT SDKでは、データのアップロード中にデータを変更できます。

// You must call the following interface before you initialize the SDK. 
SLS_CLIENT.use({
  name: 'myPlugin',
  run: function () {
    this.subscribe(
      '*', // Subscribe to all data sources. If you want to subscribe to custom events, set this parameter to an asterisk (*). 
      (data, next) => {
        //
        //
        // Determine the data type based on data.otBase.t. 
        //
        //
        
        next(data) // When new data is passed to the next processor, the next(data) method must be called. Otherwise, the system stops uploading the data. 
      },
      0, // Specify the priority of custom plug-ins. The priority range is 0 to 99. 
    )
  },
})

// The data type of the data. 
// For more information about log formats, see Appendix 2. 
export interface NotifyData<OT extends Partial<OTTrace>, Extra = Record<string, any> | undefined> {
  otBase: OT
  extra: Extra
}

付録1: SLS_CLIENT設定項目

パラメーター

タイプ

必須

の説明

project

String

課金されます

「私のプロジェクト」

インスタンスの作成時に指定したプロジェクト。

host

String

課金されます

'cn -hangzhou.log.aliyuncs.com'

インスタンスの作成時に指定したプロジェクトのエンドポイント。 詳細については、「Public Simple Log Serviceエンドポイント」をご参照ください。

logstore

String

課金されます

「マイログ」

インスタンスの作成後、Simple Log Serviceは {instance}-rawという名前のLogstoreを自動的に作成します。 {instance} はインスタンスIDを指定します。

このパラメーターをLogstoreの名前に設定する必要があります。

ワークスペース

String

課金されます

「私のワークスペース」

ワークスペースの名前を設定します。 インスタンスIDを入力します。

uid

String

課金されません

「1234556」

ユーザー ID。

ニックネーム

String

課金されません

「アリス」

ユーザーのニックネーム。

env

String

課金されません

「製品」

カスタム環境。

service

String

課金されません

「ウェブ」

サービスの名前です。

version

String

課金されません

'1.0.0'

バージョン番号。

custom

レコード <string, any>

課金されません

{key: 'value'}

カスタムパラメーター。

このパラメーターは、webページのカスタム情報を格納するために使用されます。 任意のタイプのJSONオブジェクトを指定できます。

trackTimeThreshold

数値

課金されません

5

データが送信される間隔。 単位は秒です。 デフォルト値:2

値0は、データが直ちに送信されることを指定する。

trackCountThreshold

数値

課金されません

20

一度に送信できるデータエントリの数。 デフォルト値は 10 です。

enableTrace

Boolean

課金されません

true

トレース機能を有効にするかどうかを指定します。

enableTraceRequestConfig

((((value: string) => boolean) | string | RegExp)[]

なし

トレース機能を有効にするリクエスト。

このパラメーターは、トレース機能を有効にする要求のタイプとURLを含む配列です。

customTraceHeaders

<string, string> を記録する

なし

トレースヘッダー。 このパラメーターは、リクエストを送信するときにカスタムトレースヘッダーを設定するために使用されます。

enableRequest

Boolean

課金されません

true

リクエストデータをアップロードするかどうかを指定します。

ignoreRequestConfig

((((value: string, status: number) => boolean) | string | RegExp)[]

なし

アップロードする必要のないリクエスト。

このパラメーターは、アップロードする必要のないリクエストのタイプとURLを含む配列です。

enableRequestBodyConfig

IEnableTrackRequestBody

なし

ボディを記録する必要があるリクエスト。 このパラメーターは、本文を記録する必要があるリクエストのタイプとURLを含むオブジェクトです。

enableRuntimeError

Boolean

課金されません

true

JavaScriptエラーのデータをアップロードするかどうかを指定します。

ignoreRuntimeErrorConfig

((((value: string) => boolean) | string | RegExp)[]

なし

ランタイム中に無視するエラー。

このパラメーターは、無視するエラーの型を含む配列です。

enableResourceError

Boolean

課金されません

true

JavaScriptリソースエラーのデータをアップロードするかどうかを指定します。

enableResourcePerf

Boolean

課金されません

true

js、css、image、audio、videoなどのリソースのパフォーマンスデータをアップロードするかどうかを指定します。

ignoreResourceConfig

((((value: string) => boolean) | string | RegExp)[]

なし

リソースを無視するリクエスト。

このパラメーターは、無視するリソースの型とURLを含む配列です。

enablePerf

Boolean

課金されません

true

ページ読み込みのパフォーマンスデータをアップロードするかどうかを指定します。

enableConsoleLog

enum

課金されません

「警告」

ログレベル。 有効な値: error、warn、log、info、debug、およびfalse。

このパラメーターをinfoに設定すると、エラー、warn、およびinfoレベルのログのみが記録されます。

enableDomClick

Boolean

課金されません

true

ユーザークリックイベントを記録するかどうかを指定します。 デフォルト値:true

付録2: ログフィールドの詳細

OpenTelemetryの基本フィールド

項目

データ型

説明

期間

long

期間です。 単位:マイクロ秒。

start

long

開始時刻 この値は UNIX タイムスタンプです。

end

long

終了時刻です。 この値は UNIX タイムスタンプです。

種類

long

操作のタイプ。

name

text

操作の名前。

service

text

サービスの名前です。

spanID

text

操作の一意の識別子。

statusCode

text

ステータスコード。

statusMessage

text

ステータスメッセージ。

traceID

text

トレース操作の一意の識別子。

attribute

JSON

属性情報。 詳細については、属性フィールドをご参照ください。

resource

JSON

リソース情報。 詳細については、リソースフィールドをご参照ください。

属性フィールド

項目

データ型

説明

ピッド

text

ページのID。

sid

text

セッションの ID

t

text

データ型。 詳細については、「attribute.tデータ型」をご参照ください。

uid

text

ユーザー ID。

Simple Log Service SDKは、ユーザーIDを自動的に生成し、ページビュー (PV) とユニークビジター (UV) の統計を収集します。 ユーザーIDには特定のビジネス属性はありません。 したがって、ユーザIDに基づいてUVを正確にカウントすることができない。

version

text

カスタムソフトウェアのバージョン。

client_ip

text

データをアップロードするクライアントのIPアドレス。

receive_time

long

データが受信された時刻。

attribute.tデータ型

データ型

説明

error

JavaScriptの実行中に発生するエラー。

log

カスタムログ。

pv

ページがアクセスされたり、ルートが切り替えられたときにアップロードされるPVデータ。

api

APIリクエストデータ。

res

リソース要求データ。

res_err

失敗したリソース要求のエラーデータ。

perf

パフォーマンスデータ。

設定

コンソールデータ。

リソースフィールド

項目

データ型

説明

browser.name

text

リクエストを開始するブラウザの名前。

browser.screen

text

ブラウザウィンドウの解像度。

browser.version

text

リクエストを開始するブラウザのバージョン。

デバイス. screen

text

デバイスの解像度。

os.name

text

リクエストを開始するオペレーティングシステム。

os.type

text

オペレーティングシステムのタイプ。

os.version

text

オペレーティングシステムのバージョン。

user_agent.original

text

ブラウザuser_agent。

ワークスペース

text

インスタンスIDに対応するワークスペース。

deployment.environment

text

カスタム環境。

uem.data.type

text

ユーザーエクスペリエンスのモニタリングに関連するデータのタイプ。

uem.sdk.version

text

ユーザーエクスペリエンスのモニタリングに使用されるSDKのバージョン。

uem.miniprogram.platform

text

ユーザーエクスペリエンスの監視に使用されるミニプログラムプラットフォーム。

device.model.name

text

ユーザーエクスペリエンスの監視に使用されるミニプログラムのデバイス名。

ページ情報

項目

データ型

説明

ページホスト

text

ページのホスト。

page.referrer

text

エンコード後のページに関するソース情報。

page.referrer_original

text

ソースページ。

page.tar取得

text

エンコード後のページのURL。

page.tar get_original

text

ページのURL。

リクエスト情報

項目

データ型

説明

http.host

text

リクエストを開始するサーバーのアドレス。

http.method

text

リクエストのメソッド。

http.scheme

text

リクエストのプロトコル。

http.status_code

text

ステータスコード。

http.url

text

リクエストのURL。

地理情報

項目

データ型

説明

isp

text

クライアントのインターネットサービスプロバイダー (ISP) 。

province

text

クライアントが住んでいる州。

province_id

text

クライアントが存在する州のコード。

city

text

クライアントが住んでいる都市。

city_id

text

クライアントが存在する都市のコード。

country

text

クライアントが住んでいる国。

country_id

text

クライアントが存在する国のコード。

リソース情報

項目

データ型

説明

resource.id

text

リソースのランダムなID。

resource.type

text

リソースのタイプを示します。

resource.url

text

リソースのURL。

JavaScriptエラー情報

項目

データ型

説明

ex.stacktrace

text

エラースタック。

ex.message

text

エラーメッセージを示します。

ex.type

text

エラーのタイプ。

ex.id

text

エラーのランダムID。

ex.col

text

エラーの列番号。

ex.line

text

エラーの行番号。

ex. ファイル

text

エラーが発生したファイル。

パフォーマンス情報

項目

データ型

説明

perf.dcl

long

DOMContentLoadedがトリガーされたときのタイムスタンプ。

perf.di

long

最初のインタラクションのタイムスタンプ。

perf.dns

text

ドメインネームシステム (DNS) 解決の期間。

perf.duration

long

ページの読み込み時間。

perf.fcp

long

最初の満足のいくペイントの期間。

perf.fid

long

最初の入力のレイテンシ。

perf.fit

long

webページが完全にインタラクティブになるまでにかかる時間。

perf.fp

textlong

最初のペイントの持続時間。

perf.lcp

long

満足のいくペイントの最大持続時間。

perf.load

long

ページの読み込みが完了したときのタイムスタンプ。

perf.red

text

リダイレクトの期間。

perf. サイズ

long

ページのサイズ。

perf.ssl

text

SSLハンドシェイクの期間。

perf.tcp

text

TCP接続の期間。

perf.trans

text

送信の持続時間。

perf.ttfb

text

ブラウザがサーバーからの応答データの受信を開始した時刻。