Browser monitoring est une fonctionnalité en beta d’AppSignal Labs. Le
package
@appsignal/browser est publié sous le tag beta sur npm, et sa
configuration ainsi que son API peuvent encore changer d’une release beta à
l’autre. Partagez vos retours dans notre
communauté Discord.Trouver votre Front-end API key
Trouvez la Front-end API key sous Front-end error monitoring, dans les paramètres de votre application. Elle se trouve sur la page « Push & deploy ». Utilisez la clé de l’application et de l’environnement que vous souhaitez surveiller. Cette clé est destinée à être incluse dans le code du navigateur. Elle est différente des Push API keys utilisées par les intégrations back-end. L’install flow insère votre clé dans le code généré. Dans les exemples ci-dessous, remplacez<YOUR_FRONTEND_API_KEY> par votre propre clé.
Générer le snippet dans AppSignal
Le Browser SDK install flow vous permet de choisir Plain JS ou React et de sélectionner les fonctionnalités à inclure. Route template est sélectionné par défaut. Les exemples complets ci-dessous incluent toutes les options :
L’install flow génère du code Browser SDK. Sélectionner Distributed tracing n’instrumente pas votre service API. Pour voir ses spans à côté d’une erreur de requête du navigateur, suivez aussi la configuration back-end.
Les deux versions montrent aussi comment rapporter une erreur que vous capturez vous-même. La version React inclut une error boundary pour les erreurs de rendu.
Installer le package
Installez AppSignal pour Browser depuis le tagbeta. Le tracing distribué et le rapport des requêtes échouées nécessitent la version 1.0.0-beta.7 ou ultérieure. L’install flow affiche actuellement une commande sans version ; utilisez l’une de ces commandes pour la version bêta :
Initialiser le SDK
Importez votre configuration AppSignal avant le code applicatif que vous souhaitez surveiller. Remplacezprocess.env.NODE_ENV et process.env.APP_REVISION par les valeurs équivalentes de votre système de build. Définissez appVersion sur votre tag de release ou votre SHA de commit afin qu’AppSignal puisse associer les erreurs aux sourcemaps.
Ces exemples incluent toutes les options de l’install flow. Remplacez api.example.com/** par l’hôte et le chemin de votre API pour le tracing distribué. Remplacez les sélecteurs CSS, les tags et l’exemple de routeur par les valeurs de votre application.
- Plain JS
- React
1. Initialisez AppSignal dans Importez-le en premier dans votre point d’entrée :2. Rapportez les changements de route depuis votre routeur. Remplacez 3. Ajoutez des tags après la connexion. Utilisez des valeurs de l’utilisateur ou du compte connecté. Appelez 4. Rapportez les erreurs que vous capturez vous-même. Remplacez
appsignal.js.appsignal.js
main.js
router.on par le hook de navigation de votre routeur. Rapportez aussi la route initiale, puis rapportez son modèle à chaque navigation.router.js
clearTags() à la déconnexion pour effacer les tags enregistrés.account.js
save() par votre propre opération.save.js
appsignal.js plus simple. Remplacez <YOUR_APP_REVISION> par votre tag de release ou votre SHA de commit :
appsignal.js en premier dans votre point d’entrée, comme montré ci-dessus. Cette configuration plus simple n’ajoute pas d’en-têtes traceparent à vos requêtes API.
Pour toute configuration, active: false empêche le SDK de collecter ou d’envoyer des données. endpoint utilise par défaut l’origine de la page actuelle. Définissez-le sur https://appsignal-endpoint.net, sauf si vous faites transiter les requêtes AppSignal par votre propre domaine. Consultez toutes les options de configuration.
Installation sans bundler
Si votre site charge le JavaScript avec des balises<script> et n’utilise pas de bundler, utilisez le build UMD. Il expose le SDK sous le nom AppsignalBrowser sur window :
Signaler la route actuelle
Suivez cette étape pour une application monopage avec des routes comme/users/42. Passez le modèle de route, par exemple /users/:id, à chaque navigation de votre routeur. AppSignal l’utilise pour regrouper les erreurs et les web vitals par route. Les exemples complets ci-dessus montrent où appeler setRouteTemplate().
Si vous ne définissez pas de modèle de route, le SDK rapporte le chemin de la page actuelle. Cela signifie que /users/42 et /users/43 peuvent apparaître comme des groupes d’erreurs distincts. Consultez les exemples de route React pour React Router et Next.js.
Vérifier l’installation
-
Déployez un build avec
activedéfini surtrue. Vous pouvez temporairement utiliseractive: trueen développement. -
Ouvrez la page et exécutez ce code dans la console du navigateur :
Le timer permet à l’erreur d’atteindre le gestionnaire d’erreurs global de la page. Une erreur levée directement dans la console est généralement interceptée par la console elle-même.JavaScript
- Ouvrez Browser > Errors dans AppSignal et trouvez AppSignal test error.
Content Security Policy
Si votre site utilise une Content Security Policy, autorisez le point de terminaison AppSignal configuré dans sa directiveconnect-src. Par exemple, ajoutez le point de terminaison à vos sources déjà autorisées :
Assets hébergés sur un CDN
Suivez cette étape si le JavaScript de votre site se charge depuis une autre origine, comme un CDN. Sans accès cross-origin, le navigateur peut ne rapporter queScript error., sans stack trace ni numéro de ligne. Le SDK écarte ces erreurs opaques car elles ne peuvent pas être retracées jusqu’à votre code.
Servez le script avec un en-tête Access-Control-Allow-Origin qui autorise l’origine de votre page, et ajoutez crossorigin="anonymous" à la balise de script :
Désinstallation
- Retirez l’import
appsignal.jset les autres appels à@appsignal/browserde votre code. Retirez toutErrorBoundaryimporté depuis@appsignal/browser/react. - Retirez le package et mettez à jour votre lockfile avec
npm uninstall @appsignal/browser,yarn remove @appsignal/browseroupnpm remove @appsignal/browser. Si vous avez installé le build UMD, retirez plutôt sa balise<script>. - Déployez le changement. Le nouveau build cesse de rapporter des données du navigateur.
- Si cette application AppSignal ne servait qu’au browser monitoring, vous pouvez éventuellement supprimer l’application.
destroy(). Cela envoie les données en attente et arrête la collecte jusqu’à la prochaine exécution de init(), par exemple après un rechargement de page.