Övervakning av fel med hjĂ€lp av Sentry i frontend-applikationer skrivna i JavaScript: Del 1

TjÀnsten Sentry möjliggör fjÀrrövervakning av buggar i frontend-applikationer som Àr skrivna i JavaScript.

Övervakning av fel med hjĂ€lp av Sentry i frontend-applikationer skrivna i JavaScript: Del 1

Försöket att ÄtgÀrda problem i frontend-applikationer pÄ JavaScript kan vara en utmanande uppgift, eftersom de uppstÄr i anvÀndarens webblÀsare, som ni ofta inte har tillgÄng till. Men Sentry ger möjlighet till fjÀrrövervakning av buggar.

HÀr kan du ladda ner lösningar som diskuterades i denna artikel.

Vad som behövs

Om du vill anvÀnda dessa exempel behöver du:

  • Node.js: Ett multifunktionellt utvecklingsverktyg som inte Ă€r en del av applikationen. Vi laddade ner den senaste LTS-versionen (8.12.0)
  • Sentry: Antingen ett konto pĂ„ Sentry (du kan gratis logga upp till 10 000 buggar i mĂ„naden) eller en installerad lokal Sentry - https://github.com/getsentry/onpremise

Installation pÄ din server

För att installera Sentry On-Premise pÄ din server kan du gÄ tvÄ vÀgar

  1. Bygga rpm och installera dem - https://habr.com/ru/post/500632/

  2. AnvÀnda den officiella installationsprogrammet:

    Installera Docker och docker-compose pÄ servern
    	git clone https://github.com/getsentry/onpremise.git
    	./install.sh

StandardanvÀndning

För att börja, lĂ€gg till ett nytt projekt för applikationen frĂ„n tjĂ€nstens webbplats. Efter att ha valt rĂ€tt sprĂ„k fĂ„r du motsvarande dokumentation. I vĂ„rt fall valde vi SentryDet första exemplet — standard JavaScript.

. HÀr finns tvÄ knappar: JavaScript«Hello» (Hej) och «Error» (Fel). NÀr du klickar pÄ knappen

, kommer skÀrmen att laddas om, och blocket (Hej) ochupptÀcker och fÄngar buggen. Efter att buggen har blivit "fÄngad" skickas felrapporten manuellt till tjÀnsten försök Knappen «Error» gör det enkelt att upptÀcka buggar. Sentry.

vanilla / index.html

Sentry installeras frÄn CDN och visas som en global variabel

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Vanilla</title>
</head>
<body>
  <button id="hello">Hej</button>
  <button id="error">Error</button>
  <div id="output"></div>
  <script src="https://browser.sentry-cdn.com/4.0.5/bundle.min.js" crossorigin="anonymous"></script>
  <script>
    (function () {
      'use strict';
      Sentry.init({ dsn: 'https://b5bf359072254626aba8e64368e77b7d@sentry.io/1289664' });
      var helloEl = document.getElementById('hello');
      var errorEl = document.getElementById('error');
      var outputEl = document.getElementById('output');
      helloEl.addEventListener('click', handleHelloClick);
      errorEl.addEventListener('click', handleErrorClick);
      function handleHelloClick() {
        outputEl.innerHTML = 'Hello World';
        try {
          throw new Error('Caught');
        } catch (err) {
          Sentry.captureException(err);
        }
      }
      function handleErrorClick() {
        throw new Error('Uncaught');
      }
    })();
  </script>
</body>
</html>

Noteringar:

  • Tidigare körde vi Sentry i vĂ„r JavaScript
  • För att testa detta exempel kan vi anvĂ€nda en statisk webbserverplattform

http-server. Node.js: Vi gÄr in i mappen dÀr filen finns, och skriver (alternativet stÀnger av caching) följande rad för att öppna i webblÀsaren adressen index.htmlHur fÄngade buggar visas http://localhost:8080.

Vi klickar först pÄ knappen

Vi har fÄngat en bugg, sÄ den kommer inte att bubbla upp i anropsstacken och dÀrför övervakas den inte i konsolen. Men eftersom vi manuellt skickar in (Hej) och.

Övervakning av fel med hjĂ€lp av Sentry i frontend-applikationer skrivna i JavaScript: Del 1

felrapporten, kommer vi att se meddelandet om det i vÄrt konto. Sentry Vi kan följa vilken rad (24) buggen dolde sig i

Övervakning av fel med hjĂ€lp av Sentry i frontend-applikationer skrivna i JavaScript: Del 1

Noteringar:

  • Dessutom visar navigeringskedjan de Ă„tgĂ€rder som webblĂ€saren vidtog som ledde till felet.
  • Hur ouppsnappade buggar visas

Hur ouppsnappade buggar visas

Klicka pÄ knappen «Fel».

Övervakning av fel med hjĂ€lp av Sentry i frontend-applikationer skrivna i JavaScript: Del 1

Felet dyker upp högre i anropsstacken och dÀrmed visas ett felmeddelande i konsolen. Efter detta övervakar Sentry automatiskt felet utan nÄgra ytterligare ÄtgÀrder.

Övervakning av fel med hjĂ€lp av Sentry i frontend-applikationer skrivna i JavaScript: Del 1

Noteringar:

  • Vi kan se pĂ„ vilken rad (30) felet gömde sig
  • Det finns ingen navigationskedja (jag förstĂ„r inte riktigt varför)

Hur man sÀkerstÀller projektets sÀkerhet

Du har kanske noterat hur vi kontrollerar sidor som kan skicka felrapporter till vÄrt projekt Sentry; med hjÀlp av dsn plÄtar. Problemet Àr att vem som helst som tittar pÄ din sidas kÀllkod kan se detta.

För att förhindra detta mÄste antalet domÀner som kan logga felrapporter till vÄrt projekt begrÀnsas. I det hÀr exemplet anvÀnde vi localhost (lokal vÀrd). Detta alternativ stÀlls in i instÀllningsfliken Sentry-projektet, Sentry ProjektinstÀllning.

Övervakning av fel med hjĂ€lp av Sentry i frontend-applikationer skrivna i JavaScript: Del 1

Releaser

Om man tÀnker pÄ hur man ska anvÀnda Sentry i olika varianter av vÄr applikation, sÄ behövs en mekanism som markerar fel med versionsnumret.

Det Àr ju inte sÄ att vi vill att ett fel som vi har rÀttat ska dyka upp igen, och vi tÀnker att det vi fixade inte fungerade. Det kan vara sÄ att anvÀndaren har kört en Àldre, cachad version av applikationen.

För att lösa problemet mÄste vi ange identifieraren lanseringen (versionen) vid starten Sentry.

Sentry installeras frÄn CDN och visas som en global variabel

...
var RELEASE = '0.1.0';
Sentry.init({
  dsn: 'https://b5bf359072254626aba8e64368e77b7d@sentry.io/1289664',
  release: RELEASE,
});
...

Efter detta kommer alla nya fel att markeras som release (0.1.0), det vill sÀga de kommer att kopplas till rÀtt version av koden.

Övervakning av fel med hjĂ€lp av Sentry i frontend-applikationer skrivna i JavaScript: Del 1

Noteringar:

  • Vi har diskuterat ett enkelt sĂ€tt att anvĂ€nda versioner
  • Sentry tillĂ„ter mer komplexa dem anvĂ€ndningen av, som Ă€r tĂ€tt kopplade till GitHub. Denna funktion möjliggör att spĂ„ra fel före vissa operationer.

P.S. Den andra delen Àr lÀngre, sÄ den kommer att publiceras i ett separat inlÀgg.

P.S Telegramchatten Sentry https://t.me/sentry_ru

P.S. Jag glömde nÀmna att detta Àr en översÀttning av inlÀgget https://codeburst.io/sentry-error-reporting-by-example-part-1-999b2df11556

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster