Hibák figyelése Sentry segítségével JavaScript-re írt frontend alkalmazásokban: 1. rész

Szolgáltatás Sentry lehetővé teszi a hibák távoli nyomon követését a frontend alkalmazásokban, amelyeket JavaScript.

Hibák figyelése Sentry segítségével JavaScript-re írt frontend alkalmazásokban: 1. rész

A frontend alkalmazások hibáinak elhárítása JavaScript nem mindig egyszerű feladat, mivel ezek a felhasználó böngészőjében jelentkeznek, amelyhez gyakran nincs hozzáférésed. Ugyanakkor, Sentry lehetővé teszi a hibák távoli nyomon követését.

Itt lehet letölteni a cikkben bemutatott megoldásokat.

Amire szükség van

Ha szeretnéd használni ezeket a példákat, akkor szükséged lesz:

  • Node.js: Olyan multifunkcionális fejlesztői eszköz, amely nem része az alkalmazásnak. Mi az utolsó LTS-verziót (8.12.0) töltöttük le.
  • Sentry: Vagy fiók a Sentry szolgáltatásban (ingyenesen rögzíthető havi 10 ezer hiba) vagy egy telepített helyi Sentry — https://github.com/getsentry/onpremise

Telepítés a szerveredre

A Sentry On-Premise telepítéséhez a szerveredre két utat választhatsz

  1. RPM csomagokat gyűjteni és telepíteni — https://habr.com/ru/post/500632/

  2. Használj hivatalos telepítőt:

    Telepítsd a szerverre a dockert és a docker-compose-t
    git clone https://github.com/getsentry/onpremise.git
    ./install.sh

Alapvető használat

Az indításhoz adj hozzá egy új projektet a szolgáltatás website-járól. SentryA megfelelő nyelv kiválasztása után megkapod a vonatkozó dokumentációt. A mi esetünkben JavaScript.

Az első példa - standard JavaScript. Itt két gomb található: "Hello" (Helló) és "Error" (Hiba).

Miután rákattintottál a gombra "Hello", a képernyő újratöltődik, és a blokk try észleli és elkapja a hibát. Miután a hiba "elkapva" van, a hiba jelentése kézzel kerül továbbításra a szolgáltatásra. Sentry.

Az "Error" gomb egyszerűen csak a hiba észlelésére szolgál.

vanilla / index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Vanilla</title>
</head>
<body>
  <button id="hello">Helló</button>
  <button id="error">Hiba</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>

Megjegyzések:

  • A Sentry CDN-ből települ, és globális változóként jelenik meg.
  • Kicsit korábban elindítottuk a Sentry-t a JavaScriptünkben.

Ennek a példa tesztelésére használhatunk statikus webszerver platformot Node.js: http-szervert. Menjünk abba a mappába, ahol a fájl található, és írjunk be (a lehetőség a gyorsítótár letiltására) a következő sort annak érdekében, hogy a böngészőben megnyissuk a címet index.htmlHogyan jelennek meg a elkapott hibák http://localhost:8080.

Először rákattintunk a gombra

Elkaptuk a hibát, így nem fog felemelkedni a hívási veremben, ezért nem kerül nyomon követésre a konzolban. Azonban mivel kézileg elküldjük a "Hello".

Hibák figyelése Sentry segítségével JavaScript-re írt frontend alkalmazásokban: 1. rész

hibajelentést, látni fogjuk az üzenetet a fiókban. Sentry Nyomon követhetjük, hogy melyik sorban (24) bújt meg a hiba.

Hibák figyelése Sentry segítségével JavaScript-re írt frontend alkalmazásokban: 1. rész

Megjegyzések:

  • Ezenkívül a navigációs lánc megjeleníti a böngésző által végrehajtott cselekvéseket, amelyek a hibához vezettek.
  • Hogyan jelennek meg a nem elkapott hibák

Hogyan jelennek meg a meg nem fogott hibák

Kattints a gombra «Hiba».

Hibák figyelése Sentry segítségével JavaScript-re írt frontend alkalmazásokban: 1. rész

A hiba felugrik a hívási veremben, így a konzolon megjelenik a hibaüzenet. Ezt követően a Sentry automatikusan figyeli a hibát, további lépések nélkül.

Hibák figyelése Sentry segítségével JavaScript-re írt frontend alkalmazásokban: 1. rész

Megjegyzések:

  • Láthatjuk, hogy melyik sorban (30) tűnt el a hiba
  • Nincs előirányzott navigációs lánc (nem igazán értem, miért)

Hogyan biztosítsuk a projekt biztonságát

Valószínűleg észrevetted, hogyan ellenőrizzük azokat az oldalakat, amelyek hibajelentéseket küldhetnek a projektünkbe Sentry; ennek segítségével dsn rekordok. A probléma az, hogy bárki, aki megnézi az oldalad forráskódját, láthatja a bejegyzéseket.

Ennek elkerülése érdekében korlátozni kell azokat a domaineket, amelyek hibajelentéseket küldhetnek a projektünkbe. Ebben a példában localhost (helyi hoszt) használtuk. Ez az opció a beállítások fülön konfigurálható Sentry-projektek, Sentry Projekt Beállítás.

Hibák figyelése Sentry segítségével JavaScript-re írt frontend alkalmazásokban: 1. rész

Kiadások

Ha arra gondolunk, hogyan használhatjuk Sentry különböző változataiban a alkalmazásunknak, szükség van egy mechanizmusra, amely a hibák verziószámmal való jelölését végzi.

Nem szeretnénk, ha a javított hiba újra megjelenne, míg mi azt gondoljuk, hogy az, amit javítottunk, nem működött. Az is lehet, hogy a felhasználó egy régebbi, gyorsítótárazott verziót indított el.

A probléma megoldásához a kiadási azonosítót kell felírni kiadás (verzió) induláskor Sentry.

vanilla / index.html

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

Ezt követően minden új hiba úgy lesz megjelölve, mint release (0.1.0), vagyis a megfelelő kódverzióhoz lesznek kötve.

Hibák figyelése Sentry segítségével JavaScript-re írt frontend alkalmazásokban: 1. rész

Megjegyzések:

P.S Sentry Telegram csoport

P.S. Elfelejtettem megemlíteni, hogy ez egy fordítás poszt https://t.me/sentry_ru

A Sentry szolgáltatás lehetővé teszi a hibák távoli megfigyelését JavaScript alapú frontend alkalmazásokban. https://codeburst.io/sentry-error-reporting-by-example-part-1-999b2df11556

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster