ミニプログラムアプリケーションの統合¶
SDK ファイルを導入することで、ミニプログラムアプリケーションのパフォーマンスメトリクス、エラーログ、リソースリクエストデータを収集し、Guance プラットフォームにレポートします。これにより、ミニプログラムアプリケーションのパフォーマンスを可視化して分析できます。
前提条件(DataKit 統合)¶
- DataKit をインストールしていること。
- RUM コレクター を設定していること。
- DataKit がパブリックアクセス可能で、IP 地理情報データベースがインストールされていること。
統合を開始する¶
- RUM > アプリケーションを作成 > ミニプログラム に移動します。
- アプリケーション名を入力します。
- アプリケーション ID を入力します。
-
アプリケーションの統合方法を選択します。
-
パブリック DataWay:DataKit コレクターをインストールせずに、RUM データを直接受信します。
- ローカル環境デプロイメント:前提条件を満たした上で RUM データを受信します。
統合方法¶
- DataKit がインストールされ、パブリックアクセス可能で、IP 地理情報データベースがインストールされていることを確認します。
- コンソールで
applicationId、env、versionなどのパラメータを取得し、アプリケーションの統合を開始します。 - SDK を統合する際に、
datakitOriginを DataKit のドメイン名または IP に設定します。
- コンソールで
applicationId、clientToken、siteなどのパラメータを取得し、アプリケーションの統合を開始します。 - 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 データがレポートされることもありません。
注意¶
datakitOriginに対応する DataKit のドメイン名は、ミニプログラム管理画面で request ドメインホワイトリストに追加する必要があります。- 現在、WeChat ミニプログラムのリクエストリソース API
wx.request、wx.downloadFileが返すデータのprofileフィールドは、iOS システムではサポートされていないため、収集されたリソース情報のうち timing に関連するデータが不完全になります。現在のところ解決策はありません:request、downloadFile、API サポート状況。 trackInteractionsによるユーザー操作収集を有効にすると、WeChat ミニプログラムの制限により、コントロールの内容や構造データを収集できません。そのため、ミニプログラム SDK では宣言的プログラミングを採用しています。wxml ファイルにdata-name属性を設定することで、インタラクティブ要素に名前を付けることができ、後で統計や操作記録の特定に役立ちます。例: