Logger son front (web ou extension de navigateur) avec Datadog

En tant que dĂ©veloppeur back-end, j’ai Ă©tĂ© amenĂ© Ă  utiliser Datadog pour monitorer mes applications web. Logs, Metrics, Monitor, Synthetics tests, Events
 J’ai pu tester Ă  peu prĂšs tous les services proposĂ©s par Datadog, certains m’ont plus, d’autres un peu moins mais globalement je suis assez fan du service proposĂ© par Datadog.

Un des points qui revient souvent quand on parle de Datadog c’est :

Ca serait bien de pouvoir monitorer aussi le front !

Ca tombe bien, depuis fin 2019 Datadog travaille sur Browser-SDK dont Browser-logs ! Browser-Logs est un package NPM Ă  installer qui met Ă  disposition un Logger qui se chargera automatiquement de push les logs Ă  Datadog. C’est simple Ă  mettre en place et en plus on y retrouve toutes les fonctionnalitĂ©s “classiques” de Datadog comme le fait d’avoir les attributs de GeoIP, User-Agent, Session, HTTP
 directement interprĂ©tĂ© dans Datadog.

Ca tombe doublement bien puisque j’ai actuellement besoin d’un outil pour logger mon extension Noteflix

Installation

  • Pour l’installation c’est simple, il vous suffira d’installer le package browser-logs
    npm install --save @datadog/browser-logs
    
  • Ensuite, vous devrez vous rendre sur Datadog, dans Integrations > API puis Client Tokens (ou directement via ce lien) et crĂ©er un nouveau token. Garder le dans un coin, il servira bientĂŽt.
  • IntĂ©grez ensuite l’initialisation du package comme suit :
datadogLogs.init({
      clientToken: '<votre token>', // Le token que vous avez crée juste avant
      datacenter: 'us', // Le datacenter de destination, "eu" ou "us" 
      forwardErrorsToLogs: true, // Si vous désirez envoyer les console.error() à datadog
      sampleRate: 100 // Le pourcentage de session que vous voulez surveiller, de 0 Ă  100 donc.
})
  • Une fois l’initialisation effectuĂ©e, vous pourrez envoyer votre premier log :
import { datadogLogs } from '@datadog/browser-logs';

datadogLogs.logger.info('TEST');

C’est aussi simple que ça ! L’API fournit par le logger est assez standard, elle vous permet de passer des contextes, crĂ©er diffĂ©rents logger etc.

À savoir

Je n’ai pas eu l’occasion de tester ça cotĂ© front mais il semblerait que Browser-Logs soit mieux supportĂ© cotĂ© front “standard” plutĂŽt que sur les extensions.

Spécificités aux extensions

J’ai effectivement rencontrĂ© quelques petits soucis avec l’intĂ©gration de Browser-Logs dans mon extension (voir cette issue)

  • Les extensions ne disposant pas du mĂȘme contexte d’exĂ©cution qu’une app front classique, Browser-Logs ne fonctionne pas avec l’option forwardErrorsToLogs, il vous faudra dĂ©sactiver cette option.

Spécificités globales

  • AprĂšs investigation, je me suis rendu compte que le datacenter eu ne fonctionnait pas (renvoie une 403), c’était peut-ĂȘtre un problĂšme liĂ© Ă  Datadog ou autre mais j’ai dĂ» passer par le Datacenter us.
  • Qui dit logger, dit “tracking”. Bien que ce ne soit pas spĂ©cialement ce que vous espĂ©rez faire, c’est ce que les bloqueurs de pub risque d’interprĂ©ter. J’ai fait quelques tests et il est Ă  noter qu’AdBlock ne semble pas bloquer les appels HTTP issu de Browser-Logs, par contre uBlock est lui plus restrictif et bloque automatiquement tous les appels. Vous devrez donc prendre en compte qu’une partie de vos utilisateurs ne seront pas monitorĂ©s.

Conclusion

L’intĂ©gration de Datadog pour logger notre application front est assez simple ! Il est Ă  noter qu’il est aussi possible de faire du RUM (Real User Monitoring) en utilisant Browser-RUM.

Vous avez désormais toutes les cartes en main pour monitorer votre application

Liens

Browser-Logs sur Github

Documentation Officielle

Exemple d’intĂ©gration dans une extension


CTO le jour, codeur la nuit, je partage mon quotidien de tech et d'autres trucs qui me passionnent.