Monitorizarea erorilor cu ajutorul Sentry în aplicațiile front-end scrise în JavaScript: Partea 1

Serviciu Sentry permite monitorizarea de la distanță a bug-urilor în aplicațiile front-end scrise în JavaScript.

Monitorizarea erorilor cu ajutorul Sentry în aplicațiile front-end scrise în JavaScript: Partea 1

Încercarea de a remedia problemele în aplicațiile front-end pe JavaScript poate fi o provocare, deoarece acestea apar în browserul utilizatorului, la care, adesea, nu aveți acces. Totuși, Sentry oferă posibilitatea de a monitoriza bug-urile de la distanță.

Aici puteți descărca soluțiile discutate în acest articol.

Ce este necesar

Dacă doriți să utilizați aceste exemple, veți avea nevoie de:

  • Node.js: Un instrument multifuncțional de dezvoltare care nu face parte din aplicație. Noi am descărcat ultima versiune LTS (8.12.0)
  • Sentry: Un cont în serviciul Sentry (puteți înregistra gratuit până la 10.000 de bug-uri pe lună) sau un Sentry local instalat — https://github.com/getsentry/onpremise

Instalarea pe serverul dvs.

Pentru a instala Sentry On-Premise pe serverul dvs., puteți urma 2 căi

  1. Să colectați rpm-urile și să le instalați — https://habr.com/ru/post/500632/

  2. Utilizați installerul oficial:

    Instalați pe server docker și docker-compose
    git clone https://github.com/getsentry/onpremise.git
    ./install.sh

Utilizarea standard

Pentru a începe, adăugați un nou Sentry-proiect pentru aplicație. După selectarea limbajului dorit, veți primi documentația corespunzătoare. În cazul nostru, am ales JavaScript.

Primul exemplu — standardul JavaScript. Aici sunt două butoane: «Hello» (Salut) și «Error» (Eroare).

După ce ați dat clic pe buton «Hello», ecranul se va reîncărca, iar blocul try va detecta și va captura bug-ul. După ce bug-ul este «capturat», raportul de eroare este trimis manual către serviciu Sentry.

Butonul «Error» permite doar descoperirea bug-ului.

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://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>

Observații:

  • Sentry este instalat din CDN și este afișat ca o variabilă globală
  • Cu puțin timp în urmă, am lansat Sentry în JavaScript-ul nostru

Pentru a testa acest exemplu, putem folosi o platformă de server web static Node.js: server HTTP. Accesați folderul unde este stocat fișierul index.html, și introduceți (opțiunea cu dezactivarea cache-ului) următoarea linie pentru a deschide în browser adresa http://localhost:8080.

Cum sunt afișate bug-urile capturate

În primul rând, dăm clic pe buton «Hello».

Monitorizarea erorilor cu ajutorul Sentry în aplicațiile front-end scrise în JavaScript: Partea 1

Am capturat un bug, așa că acesta nu va urca înapoi în stiva de apeluri, prin urmare nu este monitorizat în consolă. Cu toate acestea, deoarece trimitem Sentry raportul despre bug manual, vom vedea un mesaj despre acesta în contul nostru.

Monitorizarea erorilor cu ajutorul Sentry în aplicațiile front-end scrise în JavaScript: Partea 1

Observații:

  • Putem urmări în ce linie (24) s-a strecurat bug-ul
  • În plus, lanțul de navigație afișează acțiunile browserului care au dus la eroare.

Cum sunt afișate bug-urile necapturate

Facem clic pe buton „Eroare”.

Monitorizarea erorilor cu ajutorul Sentry în aplicațiile front-end scrise în JavaScript: Partea 1

Buga apare în sus în stiva de apeluri și, astfel, pe consolă apare mesajul de eroare. După aceasta, Sentry monitorizează automat bugul, fără alte acțiuni suplimentare.

Monitorizarea erorilor cu ajutorul Sentry în aplicațiile front-end scrise în JavaScript: Partea 1

Observații:

  • Putem vedea în ce linie (30) s-a pierdut bugul
  • Nu este prevăzută o lanț de navigare (nu înțeleg exact de ce)

Cum să asigurăm securitatea proiectului

Probabil ați observat cum controlăm paginile care pot trimite rapoarte de erori în proiectul nostru Sentry; prin intermediul dsn înregistrărilor. Problema este că oricine poate vedea intrarea, care vizualizează codul sursă al paginii dvs.

Pentru a evita acest lucru, trebuie limitat numărul de domenii care pot trimite rapoarte de erori în proiectul nostru. În acest exemplu, am folosit localhost (localhost). Această opțiune se configurează în tab-ul de setări Sentry-proiectului, Setarea Proiectului Sentry.

Monitorizarea erorilor cu ajutorul Sentry în aplicațiile front-end scrise în JavaScript: Partea 1

Lansări

Dacă ne gândim la modul în care să folosim Sentry în diferite variante ale aplicației noastre, este necesar un mecanism care să marcheze erorile cu un număr de versiune.

Nu dorim ca bugul pe care l-am corectat să reapară, iar noi să credem că ceea ce am rezolvat nu a funcționat. Este posibil ca utilizatorul să fi lansat o versiune mai veche, memorizată a aplicației.

Pentru a rezolva problema, trebuie să introducem identificatorul lansare (versiunii) la pornire Sentry.

vanilla / index.html

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

După aceasta, toate erorile noi vor fi marcate ca release (0.1.0), adică vor fi legate de versiunea corectă a codului.

Monitorizarea erorilor cu ajutorul Sentry în aplicațiile front-end scrise în JavaScript: Partea 1

Observații:

  • Am discutat o modalitate simplă de a folosi lansările
  • Sentry permite aplicarea unui mod mai complex al acestora utilizarea, care este strâns legat de GitHub. Această funcție oferă posibilitatea de a urmări bugurile înainte de a efectua anumite operațiuni.

P.S. A doua parte este mai lungă, prin urmare va fi într-o postare separată.

P.S. Grupul Telegram Sentry https://t.me/sentry_ru

P.S. Am uitat să menționez că acesta este un traducere a postării https://codeburst.io/sentry-error-reporting-by-example-part-1-999b2df11556

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster