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-logsnpm install --save @datadog/browser-logs - Ensuite, vous devrez vous rendre sur Datadog, dans
Integrations>APIpuisClient 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
eune fonctionnait pas (renvoie une 403), câĂ©tait peut-ĂȘtre un problĂšme liĂ© Ă Datadog ou autre mais jâai dĂ» passer par le Datacenterus. - 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
Un gars qui code, enfin ça c'était avant.