Vöktun á villum með Sentry í Front-End forritum Skrifað í JavaScript: Part 1

Service Sentry gerir þér kleift að fjarfylgjast með villum í framendaforritum sem eru skrifaðar inn JavaScript.

Vöktun á villum með Sentry í Front-End forritum Skrifað í JavaScript: Part 1

Reynt að laga vandamál í framendaforritum á JavaScript geta verið erfiðar vegna þess að þær eiga uppruna sinn í vafra notandans, sem þú hefur oft ekki aðgang að. Hins vegar, Sentry gerir það mögulegt að fjarfylgjast með villum.

Hér Þú getur halað niður lausnunum sem fjallað er um í þessari grein.

Hvað er nauðsynlegt

Ef þú vilt nota þessi dæmi þarftu:

  • Node.js: Eiginleikaríkt þróunarverkfæri sem er ekki hluti af forritinu. Við sóttum nýjustu LTS útgáfuna (8.12.0)
  • Sentry: Annaðhvort reikningur í Sentry þjónustunni (þú getur tekið upp allt að 10 þúsund villur á mánuði ókeypis) eða uppsett staðbundið Sentry - https://github.com/getsentry/onpremise

Uppsetning á netþjóninum þínum

Til að setja Sentry On-Premise á netþjóninn þinn geturðu farið á 2 vegu

  1. Byggðu snúninga á mínútu og settu þá upp - https://habr.com/ru/post/500632/

  2. Notaðu opinbera uppsetningarforritið:

    Установить на сервер docker и docker-compose
    git clone https://github.com/getsentry/onpremise.git
    ./install.sh

Venjuleg notkun

Til að byrja skaltu bæta við nýjum af þjónustuvefsíðunni Sentry-verkefni fyrir umsóknina. Eftir að þú hefur valið viðkomandi tungumál færðu samsvarandi skjöl. Í okkar tilviki völdum við JavaScript.

Fyrsta dæmið er staðlað JavaScript. Það eru tveir hnappar hér: "Halló" (Halló) og "Villa" (Villa).

Eftir að þú smellir á hnappinn "Halló", mun skjárinn endurræsa og blokkin reyna mun greina og ná villunni. Eftir að villan er „fangað“ er villuskýrslan send handvirkt til þjónustunnar Sentry.

„Villa“ hnappurinn gerir þér kleift að greina villu auðveldlega.

vanilla/index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Vanilla</title>
</head>
<body>
  <button id="hello">Hello</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://[email protected]/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>

Skýringar:

  • Sentry er sett upp frá CDN og afhjúpað sem alþjóðleg breyta
  • Nokkru fyrr settum við af stað Sentry í JavaScript okkar

Til að prófa þetta dæmi getum við notað kyrrstæðan vefþjónsvettvang Node.js: http þjónn. Farðu í möppuna þar sem skráin er geymd index.html, og sláðu inn (valkostur með slekkur á skyndiminni) eftirfarandi línu til að opna heimilisfangið í vafranum http://localhost:8080.

Hvernig veiddar pöddur birtast

Smelltu fyrst á hnappinn "Halló".

Vöktun á villum með Sentry í Front-End forritum Skrifað í JavaScript: Part 1

Við lentum í villu, þannig að hún mun ekki skjóta upp símtalsbunkanum og því er ekki fylgst með henni í stjórnborðinu. Hins vegar, þar sem við sendum til Sentry tilkynntu villu handvirkt, við munum sjá skilaboð um hana á reikningnum þínum.

Vöktun á villum með Sentry í Front-End forritum Skrifað í JavaScript: Part 1

Skýringar:

  • Við getum rakið hvaða lína (24) inniheldur villuna
  • Að auki sýnir breadcrumb slóðin vafraaðgerðirnar sem leiddu til villunnar.

Hvernig óveiddar villur birtast

Með því að smella á hnappinn "Villa".

Vöktun á villum með Sentry í Front-End forritum Skrifað í JavaScript: Part 1

Villan bólar upp símtalabunkann og þannig birtast villuboð á stjórnborðinu. Eftir þetta fylgist Sentry sjálfkrafa með villunni, án frekari aðgerða.

Vöktun á villum með Sentry í Front-End forritum Skrifað í JavaScript: Part 1

Skýringar:

  • Við getum séð í hvaða línu (30) villan er týnd
  • Það er engin brauðmola slóð (ég skil ekki alveg hvers vegna)

Hvernig á að tryggja öryggi verkefna

Þú gætir hafa tekið eftir því hvernig við stjórnum hvaða síður geta tilkynnt villur í verkefnið okkar Sentry; með aðstoð DSN skrár. Vandamálið er að hver sá sem skoðar frumkóðann á síðunni þinni getur séð inntakið.

Til að forðast þetta þurfum við að takmarka fjölda léna sem geta sent villuskýrslur í verkefnið okkar. Í þessu dæmi notuðum við localhost (staðbundinn gestgjafi). Þessi valkostur er stilltur í stillingaflipanum Sentry-verkefni, Sentry Verkefnastilling.

Vöktun á villum með Sentry í Front-End forritum Skrifað í JavaScript: Part 1

Útgáfur

Ef þú hugsar um hvernig á að nota Sentry í mismunandi afbrigðum af forritinu okkar, þá þurfum við einhvers konar vélbúnað sem mun merkja villur með útgáfunúmeri.

Þegar öllu er á botninn hvolft viljum við ekki að villan sem við lagfærðum birtist aftur og við teljum að það sem við laguðum hafi ekki virkað. Það getur líka verið að notandinn hafi sett af stað eldri útgáfu af forritinu í skyndiminni.

Til að leysa vandamálið þarftu að slá inn auðkennið slepptu (útgáfur) við ræsingu Sentry.

vanilla/index.html

...
var RELEASE = '0.1.0';
Sentry.init({
  dsn: 'https://[email protected]/1289664',
  release: RELEASE,
});
...

Eftir þetta verða allar nýjar villur merktar sem útgáfa (0.1.0), það er, þeir verða bundnir við rétta útgáfu kóðans.

Vöktun á villum með Sentry í Front-End forritum Skrifað í JavaScript: Part 1

Skýringar:

  • Við höfum fundið út einfalda leið til að nota útgáfur
  • Sentry gerir þér kleift að nota meira flókið þeirra notkun, sem er náskyld GitHub. Þessi aðgerð gerir það mögulegt að fylgjast með villum áður en tilteknar aðgerðir eru framkvæmdar.

PS Seinni hlutinn er lengri, svo hann verður í sérstakri færslu.

PS Telegram spjall Sentry https://t.me/sentry_ru

PS ég gleymdi að gefa til kynna að þetta er þýðing á færslunni https://codeburst.io/sentry-error-reporting-by-example-part-1-999b2df11556

Heimild: www.habr.com

Bæta við athugasemd