コンテンツにスキップ

ミニプログラムアプリケーションの統合


SDK ファイルを導入することで、ミニプログラムアプリケーションのパフォーマンスメトリクス、エラーログ、リソースリクエストデータを収集し、Guance プラットフォームにレポートします。これにより、ミニプログラムアプリケーションのパフォーマンスを可視化して分析できます。

前提条件(DataKit 統合)

統合を開始する

  1. RUM > アプリケーションを作成 > ミニプログラム に移動します。
  2. アプリケーション名を入力します。
  3. アプリケーション ID を入力します。
  4. アプリケーションの統合方法を選択します。

  5. パブリック DataWay:DataKit コレクターをインストールせずに、RUM データを直接受信します。

  6. ローカル環境デプロイメント:前提条件を満たした上で RUM データを受信します。

統合方法

  1. DataKit がインストールされ、パブリックアクセス可能で、IP 地理情報データベースがインストールされていることを確認します。
  2. コンソールで applicationId、env、version などのパラメータを取得し、アプリケーションの統合を開始します。
  3. SDK を統合する際に、datakitOrigin を DataKit のドメイン名または IP に設定します。

  1. コンソールで applicationId、clientToken、site などのパラメータを取得し、アプリケーションの統合を開始します。
  2. SDK を統合する際に datakitOrigin を設定する必要はありません。データはデフォルトでパブリック DataWay に送信されます。

使用方法

ミニプログラムの app.js ファイルに以下のようにコードを導入します。

注意: 導入位置は App() の初期化より前である必要があります。

NPM パッケージの導入方法については、WeChat 公式の npm 導入方法 を参照してください。

const { datafluxRum } = require('@cloudcare/rum-miniapp')
// Rum を初期化
datafluxRum.init({
  datakitOrigin: '<DATAKIT ORIGIN>',// 必須。Datakit ドメイン名。WeChat ミニプログラム管理画面でドメインホワイトリストに追加する必要があります。
  site: "http://172.16.212.186:9529", // パブリック DataWay に対応するサイトのドメイン名
  clientToken: "a993f53a8ea04bc6b9350e5e670a3a3b", // パブリック DataWay へのレポートに必要なクライアントトークン。Guance コンソールでアプリケーション作成時に生成されます。
  applicationId: '<アプリケーション ID>', // 必須。dataflux プラットフォームで生成されたアプリケーション ID
  env: 'testing', // 任意。ミニプログラムの環境
  version: '1.0.0', // 任意。ミニプログラムのバージョン
  service: 'miniapp', // 現在のアプリケーションのサービス名
  trackInteractions: true,
  traceType: 'ddtrace', // 任意。デフォルトは ddtrace。現在は ddtrace、zipkin、skywalking_v3、jaeger、zipkin_single_header、w3c_traceparent の 6 種類をサポートしています。
  allowedTracingUrls: ['https://api.example.com/v1/', /https:\/\/.*\.my-api-domain\.com\/v2\//], // 完全なリクエスト URL でマッチング
  allowTraceHeaderWithoutSession: true, // セッションがサンプリングされていなくても Trace Header を注入します。これにより RUM データがレポートされることはありません。
})

ファイルをダウンロード してローカルに導入します。

const { datafluxRum } = require('./lib/dataflux-rum-miniapp.js')
// Rum を初期化
datafluxRum.init({
  datakitOrigin: '<DATAKIT ORIGIN>',// 必須。Datakit ドメイン名。WeChat ミニプログラム管理画面でドメインホワイトリストに追加する必要があります。
  site: "http://172.16.212.186:9529", // パブリック DataWay に対応するサイトのドメイン名
  clientToken: "a993f53a8ea04bc6b9350e5e670a3a3b", // パブリック DataWay へのレポートに必要なクライアントトークン。Guance コンソールでアプリケーション作成時に生成されます。
  applicationId: '<アプリケーション ID>', // 必須。dataflux プラットフォームで生成されたアプリケーション ID
  env: 'testing', // 任意。ミニプログラムの環境
  version: '1.0.0', // 任意。ミニプログラムのバージョン
  service: 'miniapp', // 現在のアプリケーションのサービス名
  trackInteractions: true,
  traceType: 'ddtrace', // 任意。デフォルトは ddtrace。現在は ddtrace、zipkin、skywalking_v3、jaeger、zipkin_single_header、w3c_traceparent の 6 種類をサポートしています。
  allowedTracingUrls: ['https://api.example.com/v1/', /https:\/\/.*\.my-api-domain\.com\/v2\//], // 完全なリクエスト URL でマッチング
  allowTraceHeaderWithoutSession: true, // セッションがサンプリングされていなくても Trace Header を注入します。これにより RUM データがレポートされることはありません。
})

設定

初期化パラメータ

パラメータ 型 必須 デフォルト値 説明
applicationId String はい Guance で作成されたアプリケーション ID。
datakitOrigin String はい DataKit データレポートの Origin。
❗️ ミニプログラム管理画面で request ドメインホワイトリストに追加する必要があります。
site String はい(パブリック DataWay レポート方式の場合は必須) パブリック DataWay に対応するサイトのドメイン名。注: プロトコル(//を含む)、ドメイン名(またはIPアドレス)[とポート番号] 例:https://www.dataway.com, http://100.20.34.3:8088
clientToken String はい(パブリック DataWay の場合は必須) パブリック DataWay へのレポートに必要なクライアントトークン。Guance コンソールでアプリケーション作成時に生成されます。
env String いいえ ミニプログラムアプリケーションの現在の環境。例:prod:本番環境、gray:カナリア環境、pre:プリリリース環境、common:日常環境、local:ローカル環境。
version String いいえ ミニプログラムアプリケーションのバージョン番号。
service String いいえ 現在のアプリケーションのサービス名。デフォルトは miniapp で、カスタム設定が可能です。
sampleRate Number いいえ 100 メトリクスデータ収集のパーセンテージ:100 は全収集、0 は収集なし。
sessionSampleRate Number いいえ 100 sampleRate の互換エイリアス。両方が設定されている場合は sampleRate が優先されます。
remoteConfiguration Boolean いいえ false リモート設定 を有効にするかどうか。SDK はまずローカル設定で起動し、その後非同期でサポートされている設定項目を取得して適用します。
remoteConfigration Boolean いいえ false remoteConfiguration の旧スペルの互換項目。新規プロジェクトでの使用は推奨しません。
remoteConfigurationFetchTimeout Number いいえ 3000 リモート設定リクエストのタイムアウト時間(ミリ秒)。リクエストが失敗またはタイムアウトした場合は、ローカル設定が引き続き使用されます。
trackInteractions Boolean いいえ false ユーザー操作の収集を有効にするかどうか。
trackResourceQueryString Boolean いいえ false リクエスト URL のクエリ文字列を収集するかどうか。クエリ文字列にはトークンやユーザー ID が含まれる可能性があるため、安全が確認された場合のみ有効にしてください。
trackRequestErrorResponseBody Boolean いいえ false 失敗したリクエストのレスポンスボディをエラースタックに書き込むかどうか。レスポンスボディには機密データが含まれる可能性があります。
requestErrorResponseLengthLimit Number いいえ 32768 失敗したリクエストのレスポンスボディがエラースタックに書き込まれる際の最大文字数。trackRequestErrorResponseBody が有効な場合のみ適用されます。
trackLaunchOptions Boolean いいえ false ミニプログラム起動パラメータの query と referrerInfo を収集するかどうか。
beforeSend Function いいえ データが送信キューに入る前のコールバック。イベントを変更できます。false を返すと、View 以外のイベントを破棄できます。コールバックの例外はビジネスや SDK を中断しません。
userId / user_id String いいえ 初期化時にログインユーザー ID を設定します。初期化後に setUser({ id }) を呼び出して設定することもできます。
traceType Enum いいえ ddtrace 分散型トレーシングのツールタイプを設定します。設定しない場合はデフォルトで ddtrace になります。現在は ddtrace、zipkin、skywalking_v3、jaeger、zipkin_single_header、w3c_traceparent の 6 種類のデータタイプをサポートしています。
❗️
1. opentelemetry は zipkin_single_header、w3c_traceparent、zipkin、jaeger の 4 種類をサポートしています。
2. 対応するタイプの traceType を設定するには、該当する API サービスで異なる Access-Control-Allow-Headers を設定する必要があります。詳細は APM と RUM の関連付け方法 を参照してください。
traceId128Bit Boolean いいえ false 128 ビットの traceID を生成するかどうか。traceType に対応します。現在は zipkin、jaeger をサポートしています。
allowedTracingUrls Array いいえ [] Trace Header の注入を許可する完全なリクエスト URL のマッチングリスト。文字列は URL のプレフィックスでマッチングします。正規表現と関数は完全な URL を受け取ります。オブジェクトは { match, traceType } を使用して、単一ルールに伝播タイプを指定します。バージョン 2.2.19 以降が必要です。
allowedTracingOrigins Array いいえ 非推奨の互換設定。リクエストの Origin のみを完全一致でマッチングします。新規プロジェクトでは allowedTracingUrls を使用してください。両方が設定されている場合は allowedTracingUrls が優先されます。
allowTraceHeaderWithoutSession Boolean いいえ false 現在のセッションがサンプリングにヒットしなかった場合でも、allowedTracingUrls にヒットしたリクエストに Trace Header を注入するかどうか。有効にしても、そのセッションの RUM データが強制的にサンプリングされたりレポートされたりすることはありません。
isIntakeUrl Function いいえ function(url) {return false} リクエストリソースの URL に基づいて、対応するリソースデータを収集するかどうかをカスタマイズするメソッド。デフォルトではすべて収集します。戻り値:false は収集する、true は収集しないことを意味します。
❗️
1. このパラメータのメソッドの戻り値は Boolean 型である必要があります。そうでない場合は無効なパラメータと見なされます。
2. バージョン 2.1.10 以降が必要です。

Trace Header URL マッチング

allowedTracingUrls は完全なリクエスト URL を使用してマッチングします。文字列はプレフィックスマッチング、RegExp と Function は完全な URL を受け取ります。特定のルールに異なる伝播タイプを指定する必要がある場合は、match と traceType の両方を含むオブジェクトを使用します。

allowedTracingUrls: [
  'https://api.example.com/v1/',
  /https:\/\/.*\.my-api-domain\.com\/v2\//,
  function (url) {
    return url.indexOf('https://internal.example.com/') === 0
  },
  { match: 'https://otel.example.com/', traceType: 'w3c_traceparent' },
]

allowedTracingOrigins は旧設定との互換性のためのみに使用されます。文字列と正規表現はどちらもリクエストの Origin に対してマッチングします。両方のパラメータが設定されている場合、SDK は allowedTracingUrls のみを使用します。

サンプリングされていないセッションの Trace Header

allowTraceHeaderWithoutSession のデフォルトは false です。true に設定すると、現在のセッションが RUM サンプリングにヒットしなかった場合でも、SDK は allowedTracingUrls にヒットしたリクエストに Trace Header を注入します。この設定により、強制的にサンプリングが行われたり、新しいセッションが作成されたりすることはなく、サンプリングされていないセッションの View、Action、Resource、Error などの RUM データがレポートされることもありません。

注意

  1. datakitOrigin に対応する DataKit のドメイン名は、ミニプログラム管理画面で request ドメインホワイトリストに追加する必要があります。
  2. 現在、WeChat ミニプログラムのリクエストリソース API wx.request、wx.downloadFile が返すデータの profile フィールドは、iOS システムではサポートされていないため、収集されたリソース情報のうち timing に関連するデータが不完全になります。現在のところ解決策はありません:request、downloadFile、API サポート状況。
  3. trackInteractions によるユーザー操作収集を有効にすると、WeChat ミニプログラムの制限により、コントロールの内容や構造データを収集できません。そのため、ミニプログラム SDK では宣言的プログラミングを採用しています。wxml ファイルに data-name 属性を設定することで、インタラクティブ要素に名前を付けることができ、後で統計や操作記録の特定に役立ちます。例:
<button bindtap="bindSetData" data-name="setData">
  setData
</button>

フィードバック

このページは役に立ちましたか?