Tous les produits
Search
Centre de documentation

Application Real-Time Monitoring Service:RUM SDK configuration reference for web and HTML5

Dernière mise à jour :Aug 10, 2026

Le SDK Real User Monitoring (RUM) pour le web et HTML5 propose des options de configuration pour la collecte de données, la gestion des sessions, le filtrage des événements et la détection des écrans blancs. Cette rubrique couvre les configurations courantes du SDK, les API d'exécution et des exemples d'utilisation.

Paramètres d'initialisation

Transmettez ces paramètres à ArmsRum.init() pour configurer le SDK au démarrage.

Paramètre Type Obligatoire Valeur par défaut Description
pid String Oui - ID de l'application
endpoint String Oui - Endpoint de reporting des données
env String Non prod Environnement de l'application. Valeurs valides : prod, gray, pre, daily, local
version String Non - Version de l'application
user Object Non - Paramètres utilisateur. Consultez Paramètres utilisateur
spaMode String Non false Mode de suivi des routes pour les applications à page unique (SPA). Valeurs valides : hash, history, auto, false
beforeReport Function Non - Callback invoqué avant chaque envoi de rapport pour modifier ou bloquer les données signalées
reportConfig Object Non - Paramètres de reporting des données. Consultez Paramètres reportConfig
sessionConfig Object Non - Paramètres d'échantillonnage et de stockage des sessions. Consultez Paramètres sessionConfig
collectors Object Non - Commutateurs des collecteurs de données. Consultez Paramètres collectors
parseViewName Function Non - Analyseur personnalisé pour le nom de la vue (view.name). Reçoit l'URL de la page en entrée
parseResourceName Function Non - Analyseur personnalisé pour le nom de la ressource (resource.name). Reçoit l'URL de la ressource en entrée
evaluateApi Function Non - Analyseur personnalisé pour les événements API. Consultez Paramètres evaluateApi
filters Object Non - Règles de filtrage des événements. Consultez Paramètres filters
whiteScreen Object Non - Paramètres de détection des écrans blancs. Consultez Paramètres whiteScreen
properties Object Non - Propriétés personnalisées globales attachées à tous les événements. Consultez Paramètres properties
remoteConfig Object Non - Livraison dynamique de la configuration. Consultez Configuration dynamique

Initialisation via CDN

Lorsque vous chargez le SDK via Alibaba Cloud Content Delivery Network (CDN), accédez-y depuis l'espace de noms global RumSDK.default :

const ArmsRum = window.RumSDK.default;

// Initialize the SDK after it has loaded.
// Skip this step if you defined window.__rum before the SDK script tag.
ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
});

// Update configuration at runtime
ArmsRum.setConfig('env', 'pre');

Initialisation via npm

import ArmsRum from '@arms/rum-browser';

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
});

Paramètres utilisateur

Associez les sessions RUM à vos comptes métier via l'objet user.

Paramètre Type Obligatoire Valeur par défaut Description
id String Non - ID utilisateur. Généré automatiquement par le SDK et ne peut pas être modifié
name String Non - Nom d'utilisateur
tags String Non - Tags utilisateur
Important

Ne remplacez pas user.id. Le SDK génère cette valeur automatiquement ; la remplacer affecte le calcul des visiteurs uniques (UV). Pour lier les sessions à votre système de compte, utilisez plutôt user.name ou user.tags.

Exemple

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  user: {
    name: 'your user.name',
    tags: 'your user.tags',
  },
});

Paramètres reportConfig

Contrôlez l'intervalle de reporting et la taille des lots.

Paramètre Type Obligatoire Valeur par défaut Plage valide Description
flushTime Number Non 3000 0 -- 10000 Intervalle de reporting en millisecondes. Définissez sur 0 pour un reporting immédiat
maxEventCount Number Non 20 1 -- 100 Nombre maximal d'événements par lot

Exemple

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  reportConfig: {
    flushTime: 0,       // Report immediately
    maxEventCount: 50,  // Up to 50 events per batch
  },
});

Paramètres sessionConfig

Configurez l'échantillonnage des sessions, les limites de durée et le stockage.

Paramètre Type Obligatoire Valeur par défaut Description
sampleRate Number Non 1 Taux d'échantillonnage de 0 à 1. Par exemple, 0.5 échantillonne 50 % des sessions
maxDuration Number Non 86400000 Durée maximale de session en millisecondes (par défaut : 24 heures)
overtime Number Non 3600000 Délai d'inactivité de session en millisecondes (par défaut : 1 heure)
storage String Non localStorage Emplacement de stockage des données de session. Valeurs valides : cookie, localStorage

Détails du stockage

Le paramètre storage détermine où le SDK conserve les données suivantes :

  • _arms_uid — l'ID utilisateur unique (user.id)

  • _arms_session — métadonnées de session au format ${sessionId}-${sampled}-${startTime}-${lastTime} :

    • sessionId — identifiant de session unique

    • sampled — indique si cette session a été sélectionnée par échantillonnage

    • startTime — horodatage de début de session

    • lastTime — horodatage de la dernière activité

Exemple

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  sessionConfig: {
    sampleRate: 0.5,          // Sample 50% of sessions
    maxDuration: 86400000,    // 24-hour maximum
    overtime: 3600000,        // 1-hour inactivity timeout
    storage: 'cookie',        // Use cookie instead of localStorage
  },
});

Paramètres collectors

Activez ou désactivez les collecteurs de données individuels. Tous les collecteurs sont activés par défaut.

Paramètre Type Obligatoire Valeur par défaut Description
perf Boolean \ Object Non true Données de performance des pages
webvitals Boolean \ Object Non true Métriques Web Vitals
api Boolean \ Object Non true Requêtes API (XMLHttpRequest, fetch)
staticResource Boolean \ Object Non true Requêtes de ressources statiques
consoleError Boolean \ Object Non true Erreurs de console
jsError Boolean \ Object Non true Erreurs JavaScript
action Boolean \ Object Non true Comportement utilisateur

Exemple

Désactivez le suivi des interactions utilisateur :

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  collectors: {
    action: false,
  },
});

Paramètres evaluateApi

La fonction evaluateApi personnalise l'analyse des événements XMLHttpRequest et fetch. Elle reçoit trois arguments et renvoie une Promise<IApiBaseAttr>.

Arguments d'entrée

Paramètre Type Description
options Object Paramètres de requête : url, headers et data. Les champs exacts dépendent de la méthode de requête
response Object Corps de la réponse
error Error Objet d'erreur. Présent uniquement en cas d'échec de la requête

Type de retour (IApiBaseAttr)

Les champs renvoyés remplacent les valeurs par défaut du SDK. Les champs omis conservent leurs valeurs par défaut.

Champ Type Obligatoire Description
name String Non Nom de l'API, généralement une URL convergée (max. 1 000 caractères). Par exemple, /list/$id pour /list/123. Prend le dessus sur parseResourceName
message String Non Brève description de l'appel API (max. 1 000 caractères)
success Number Non Résultat de la requête : 1 = succès, 0 = échec, -1 = inconnu
duration Number Non Durée totale de l'API
status_code Number \ String Non Code d'état
snapshots String Non Instantané de diagnostic (max. 5 000 caractères). Stocke reqHeaders, params et resHeaders. Non indexé et ne peut pas être utilisé pour les requêtes ou l'agrégation

Exemple

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  evaluateApi: async (options, response, error) => {
    let respText = '';
    if (response && response.text) {
      respText = await response.text();
    }

    return {
      name: 'my-custom-api',
      success: error ? 0 : 1,
      snapshots: JSON.stringify({
        params: 'page=1&size=10',
        response: respText.substring(0, 2000),
        reqHeaders: '',
        resHeaders: '',
      }),
      properties: {
        prop_msg: 'custom msg',
        prop_num: 1,
      },
    };
  },
});

Paramètres filters

Excluez des événements de ressource ou d'exception spécifiques du reporting.

Paramètre Type Obligatoire Description
resource MatchOption \ MatchOption[] Non Exclut les événements de ressources statiques et d'API (XMLHttpRequest, fetch) correspondants
exception MatchOption \ MatchOption[] Non Exclut les événements d'exception correspondants

Type MatchOption

type MatchOption = string | RegExp | ((value: string) => boolean);
  • String — correspond à toute URL ou message commençant par la valeur spécifiée. Par exemple, 'https://api.aliyun.com' correspond à 'https://api.aliyun.com/v1/resource'.

  • RegExp — fait correspondre les URL ou messages à une expression régulière.

  • Function — reçoit l'URL ou le message en entrée. Renvoyez true pour exclure l'événement.

Lorsque vous transmettez un tableau de valeurs MatchOption, les conditions sont évaluées dans l'ordre. Un événement est exclu si l'une des conditions correspond.

Exemple

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  filters: {
    exception: [
      'Test error',                           // Messages starting with 'Test error'
      /^Script error\.?$/,                    // Messages matching this regex
      (msg) => msg.includes('example-error'), // Custom match function
    ],
    resource: [
      'https://example.com/',   // URLs starting with 'https://example.com/'
      /localhost/i,             // URLs containing 'localhost'
      (url) => url.includes('example-resource'),
    ],
  },
});

Paramètres whiteScreen

Détectez les états d'écran vide ou blanc dans votre application. Pris en charge sur Chrome 40 et IE 9+.

Paramètre Type Description
detectionRules Array<DetectionRule> Une ou plusieurs règles de détection. Les règles s'exécutent dans l'ordre configuré

DetectionRule

Paramètre Type Obligatoire Valeur par défaut Description
target String Oui - Sélecteur CSS de l'élément à surveiller
test_when Array Oui - Événements qui déclenchent la détection. Valeurs valides : LOAD, ERROR, ROUTE_CHANGE, LEAVE
delay Number Non 0 Délai en millisecondes avant le début de la détection après un événement déclencheur (sauf ERROR et LEAVE)
tester String \ Function Oui - Méthode de détection. Valeurs valides : HAS_CONTENT, SAMPLE, SCREENSHOT ou une fonction personnalisée
ignoreUrlList Array<String> Non [] URLs de pages à ignorer
configOptions ConfigOptions Non - Options spécifiques au testeur. Consultez ConfigOptions

Événements déclencheurs

Événement Description
LOAD Le chargement de la page est terminé
ERROR Une erreur JavaScript globale se produit
ROUTE_CHANGE La route (historique ou hash) change
LEAVE La page est sur le point de se fermer

Méthodes de détection

Méthode Fonctionnement
HAS_CONTENT Vérifie si des nœuds existent et contiennent du textContent
SAMPLE Définit des points d'échantillonnage dans la zone cible et vérifie si l'élément DOM supérieur à chaque point appartient à un ensemble d'éléments autorisés
SCREENSHOT Prend une capture d'écran canvas et compare les blocs de pixels pour calculer le taux d'écran blanc
Fonction personnalisée Reçoit l'élément cible en entrée. Renvoie un CustomTesterResult ou Promise<CustomTesterResult>

Type CustomTesterResult :

type CustomTesterResult = {
  hasContent: boolean;               // true = content exists; false = white screen detected
  message?: string;                  // Error message
  snapshot?: Record<string, any>;    // Diagnostic data
}

ConfigOptions

Options spécifiques aux méthodes de détection SCREENSHOT et SAMPLE.

Options SCREENSHOT :

Paramètre Type Valeur par défaut Description
colorRange Array<String> ['rgb(255, 255, 255)'] Couleurs considérées comme « blanches ». Format : rgb(r, g, b)
fillColor String 'rgba(0, 100, 200, 255)' Couleur de remplissage appliquée aux images, vidéos, canevas, SVG et iframes lors de la capture d'écran. Ne doit pas chevaucher colorRange
horizontalOffset Number 0 Décalage horizontal (px) par rapport au bord gauche de l'élément cible. Utilisez-le pour exclure une barre latérale gauche
verticalOffset Number 0 Décalage vertical (px) par rapport au bord supérieur de l'élément cible. Utilisez-le pour exclure une barre de navigation supérieure
pixels Number 10 Taille du bloc de pixels (pixels x pixels) pour la comparaison
threshold Number 0.8 Seuil de taux d'écran blanc. Un taux supérieur à cette valeur déclenche un événement d'écran blanc
dpr Number 0.3 Ratio de mise à l'échelle pour l'image de capture d'écran
ignoreElements Array<String> [] Sélecteurs CSS des éléments à exclure des captures d'écran

Options SAMPLE :

Paramètre Type Valeur par défaut Description
sampleMethod `1 \ 2 \ 3` 2 Motif d'échantillonnage : 1 = croix, 2 = croix entrecroisée, 3 = riz
checkPoints Number 10 Nombre de points d'échantillonnage radiaux. Total des points : croix/croix entrecroisée = 4 * checkPoints + 1 ; riz = 8 * checkPoints + 1
threshold Number 0.8 Seuil de taux d'écran blanc
whiteBoxElements Array<String> [] Sélecteurs CSS des éléments considérés comme « blancs ». Lorsque l'élément supérieur à un point d'échantillonnage correspond à l'un des sélecteurs, le compteur d'écran blanc s'incrémente

Option partagée :

SCREENSHOT et SAMPLE prennent tous deux en charge l'option debug (Boolean, par défaut : false). Lorsqu'elle est activée, les détails de détection sont affichés dans la console des outils de développement du navigateur.

Exemples

Détection basée sur la capture d'écran :

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  whiteScreen: {
    detectionRules: [{
      target: '#root',
      test_when: ['LOAD', 'ERROR', 'ROUTE_CHANGE', 'LEAVE'],
      delay: 5000,
      tester: 'SCREENSHOT',
      configOptions: {
        colorRange: ['rgb(255, 255, 255)', 'rgb(0, 0, 0)'],
        threshold: 0.9,
        pixels: 10,
        horizontalOffset: 210,
        verticalOffset: 50,
      },
    }],
  },
});

Détection basée sur l'échantillonnage :

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  whiteScreen: {
    detectionRules: [{
      target: '#root',
      test_when: ['LOAD', 'ERROR', 'ROUTE_CHANGE', 'LEAVE'],
      delay: 5000,
      tester: 'SAMPLE',
      configOptions: {
        sampleMethod: 2,
        checkPoints: 10,
        threshold: 0.9,
        whiteBoxElements: ['.el-skeleton'],
      },
    }],
  },
});

Fonction de détection personnalisée :

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  whiteScreen: {
    detectionRules: [{
      target: '#root',
      test_when: ['LOAD', 'ERROR', 'ROUTE_CHANGE', 'LEAVE'],
      delay: 5000,
      tester: async (element) => {
        return {
          hasContent: false,
          message: 'Custom error message',
          snapshot: {
            checkPoints: 100,
            rate: 0.99,
            checkdata: '......',
          },
        };
      },
    }],
  },
});

Paramètres properties

Attachez des propriétés personnalisées globales à tous les événements signalés.

Paramètre Type Obligatoire Description
[key: string] String \ Number Non Paire clé-valeur personnalisée. La clé doit être une chaîne conforme à la spécification JSON, avec un maximum de 50 caractères (tronquée si plus longue). Valeur de chaîne : max. 2 000 caractères. Les valeurs non chaînes et non numériques sont supprimées

Comportement de fusion

  • Les propriétés globales (définies dans init()) et les propriétés au niveau de l'événement (définies via evaluateApi, sendCustom, sendException ou sendResource) sont fusionnées au moment du stockage.

  • Les propriétés au niveau de l'événement ont la priorité. Si la même clé existe dans les deux, la valeur au niveau de l'événement l'emporte.

  • Après la fusion, un maximum de 20 paires clé-valeur sont conservées. Les paires excédentaires sont triées par clé et supprimées.

Exemple

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  properties: {
    prop_string: 'xx',
    prop_number: 2,
    // Keys longer than 50 characters are truncated
    more_than_50_key_limit_012345678901234567890123456789: 'yy',
    // String values longer than 2,000 characters are truncated
    more_than_2000_value_limit: new Array(2003).join('1'),
    // Invalid types -- these pairs are removed
    prop_null: null,
    prop_undefined: undefined,
    prop_bool: true,
  },
});

Configuration dynamique

Le SDK prend en charge la livraison distante des paramètres de configuration. Lors du chargement initial, le SDK récupère les paramètres distants qui remplacent les valeurs statiques de init() et met à jour les fonctionnalités telles que l'instrumentation et le reporting des données en conséquence.

Étape 1 : Configuration dans la console ARMS

  1. Accédez à Application List et ouvrez votre application.

  2. Accédez à Application Settings > SDK config.

  3. Définissez les valeurs de configuration souhaitées.

  4. Cliquez sur Confirm Update Dynamic Configuration pour envoyer les paramètres au serveur distant Object Storage Service (OSS).

Étape 2 : Activation dans le SDK

Ajoutez le champ remoteConfig à votre code d'initialisation avec la region où votre application est hébergée.

CDN :

window.__rum = {
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  remoteConfig: {
    region: "cn-hangzhou"  // Example: "ap-southeast-1" for Singapore
  }
};
<script async src="https://xxid-sdk.rum.aliyuncs.com/v2/browser-sdk.js"></script>

npm :

import ArmsRum from '@arms/rum-browser';

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  remoteConfig: {
    region: "cn-hangzhou"  // Example: "ap-southeast-1" for Singapore
  }
});

Comportement de mise en cache

Après avoir récupéré la configuration distante, le SDK met les paramètres en cache localement. Lors des initialisations suivantes, le SDK privilégie la configuration mise en cache.

La configuration dynamique nécessite la version du SDK 0.0.37 ou ultérieure lors de l'importation via CDN avec une version épinglée.

Paramètres résolus automatiquement

Le SDK résout automatiquement ces propriétés à partir des adresses IP et des en-têtes User-Agent. Les valeurs définies explicitement ont la priorité sur les valeurs résolues automatiquement.

Paramètre Type Obligatoire Description
device Object Non Informations sur l'appareil
os Object Non Informations sur le système d'exploitation et le conteneur
geo Object Non Géolocalisation
isp Object Non Informations sur le FAI/opérateur
net Object Non Informations sur la connexion réseau

Pour plus de détails sur les champs, consultez la section Propriétés communes de la rubrique Données de journal.

Exemple

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  geo: {
    country: 'your custom country info',
    city: 'your custom city info',
  },
});

API du SDK

Après l'initialisation, utilisez ces méthodes pour modifier la configuration et signaler des données personnalisées.

getConfig

Récupérez la configuration actuelle du SDK :

const config = ArmsRum.getConfig();

setConfig

Mettez à jour la configuration du SDK au moment de l'exécution. Transmettez une seule paire clé-valeur ou un objet de configuration complet :

// Set a single value
ArmsRum.setConfig('env', 'pre');

// Set multiple values
const config = ArmsRum.getConfig();
ArmsRum.setConfig({
  ...config,
  version: '1.0.0',
  env: 'pre',
});

sendCustom

Signalez un événement personnalisé. Les champs type et name sont obligatoires.

Paramètre Type Obligatoire Description
type String Oui Type d'événement
name String Oui Nom de l'événement
group String Non Groupe d'événements
value Number Non Valeur numérique
properties Object Non Propriétés personnalisées
ArmsRum.sendCustom({
  type: 'CustomEventType1',
  name: 'customEventName2',
  group: 'customEventGroup3',
  value: 111.11,
  properties: {
    prop_msg: 'custom msg',
    prop_num: 1,
  },
});

sendException

Signalez une exception personnalisée. Les champs name et message sont obligatoires.

Paramètre Type Obligatoire Description
name String Oui Nom de l'exception
message String Oui Message d'exception
file String Non Fichier source
stack String Non Trace de pile
line Number Non Numéro de ligne
column Number Non Numéro de colonne
properties Object Non Propriétés personnalisées
ArmsRum.sendException({
  name: 'customErrorName',
  message: 'custom error message',
  file: 'custom exception filename',
  stack: 'custom exception error.stack',
  line: 1,
  column: 2,
  properties: {
    prop_msg: 'custom msg',
    prop_num: 1,
  },
});

sendResource

Signalez un événement de ressource personnalisé. Les champs name, type et duration sont obligatoires.

Paramètre Type Obligatoire Description
name String Oui Nom de la ressource
type String Oui Type de ressource (par exemple, css, javascript, xmlhttprequest, fetch, api, image, font)
duration String Oui Temps de réponse
success Number Non Résultat : 1 = succès, 0 = échec, -1 = inconnu
method String Non Méthode HTTP
status_code Number \ String Non Code d'état
message String Non Message de réponse
url String Non URL de la requête
trace_id String Non ID de trace distribuée
properties Object Non Propriétés personnalisées
ArmsRum.sendResource({
  name: 'getListByPage',
  message: 'success',
  duration: 800,
  url: 'https://www.aliyun.com/data/getListByPage',
  properties: {
    prop_msg: 'custom msg',
    prop_num: 1,
  },
});