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
puisClient 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 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
CTO le jour, codeur la nuit, je partage mon quotidien de tech et d'autres trucs qui me passionnent.