Klaidų stebėjimas naudojant „Sentry“ priekinėse programose, parašytose „JavaScript“: 1 dalis

Tarnyba Sargybinis leidžia nuotoliniu būdu stebėti įvestų priekinių programų klaidas JavaScript.

Klaidų stebėjimas naudojant „Sentry“ priekinėse programose, parašytose „JavaScript“: 1 dalis

Bandoma išspręsti įjungtų priekinių programų problemas JavaScript gali būti sudėtinga, nes jie kilę iš vartotojo naršyklės, prie kurios jūs dažnai neturite prieigos. Tačiau Sargybinis leidžia nuotoliniu būdu stebėti klaidas.

Čia Galite atsisiųsti šiame straipsnyje aptartus sprendimus.

Kas yra būtina

Jei norite naudoti šiuos pavyzdžius, jums reikės:

  • Node.js: daug funkcijų turintis kūrimo įrankis, kuris nėra programos dalis. Atsisiuntėme naujausią LTS versiją (8.12.0)
  • Sargybinis: arba paskyra „Sentry“ paslaugoje (galite nemokamai įrašyti iki 10 tūkst. klaidų per mėnesį) arba įdiegta vietinė „Sentry“ - https://github.com/getsentry/onpremise

Diegimas jūsų serveryje

Norėdami įdiegti „Sentry On-Premise“ savo serveryje, galite atlikti du būdus

  1. Sukurkite apsukų skaičių ir įdiekite juos - https://habr.com/ru/post/500632/

  2. Naudokite oficialią diegimo programą:

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

Standartinis naudojimas

Norėdami pradėti, pridėkite naują iš paslaugos svetainės Sargybinis- paraiškos projektas. Pasirinkę norimą kalbą gausite atitinkamą dokumentaciją. Mūsų atveju pasirinkome JavaScript.

Pirmasis pavyzdys yra standartinis JavaScript. Čia yra du mygtukai: "Sveiki" (Sveiki) ir "Klaida" (Klaida).

Spustelėjus mygtuką "Sveiki", ekranas bus paleistas iš naujo ir blokuojamas pabandyti aptiks ir pagaus klaidą. „Pagavus“ klaidą, klaidos ataskaita rankiniu būdu siunčiama tarnybai Sargybinis.

Mygtukas „Klaida“ leidžia lengvai aptikti klaidą.

vanilė/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>

Pastabos:

  • Sentry įdiegiamas iš CDN ir rodomas kaip visuotinis kintamasis
  • Šiek tiek anksčiau paleidome „Sentry“ savo „JavaScript“.

Norėdami išbandyti šį pavyzdį, galime naudoti statinę žiniatinklio serverio platformą Node.js: http serveris. Eikite į aplanką, kuriame saugomas failas index.html, ir įveskite (parinktis, kai išjungiamas kaupimas talpykloje) šią eilutę, kad atidarytumėte adresą naršyklėje http://localhost:8080.

Kaip rodomos sugautos klaidos

Pirmiausia spustelėkite mygtuką "Sveiki".

Klaidų stebėjimas naudojant „Sentry“ priekinėse programose, parašytose „JavaScript“: 1 dalis

Mes užfiksavome klaidą, todėl ji nebus rodoma skambučių krūvoje, todėl konsolėje nėra stebima. Tačiau kadangi mes siunčiame į Sargybinis praneškite apie klaidą rankiniu būdu, jūsų paskyroje matysime pranešimą apie tai.

Klaidų stebėjimas naudojant „Sentry“ priekinėse programose, parašytose „JavaScript“: 1 dalis

Pastabos:

  • Galime atsekti, kurioje eilutėje (24) yra klaida
  • Be to, naršymo kelyje rodomi naršyklės veiksmai, dėl kurių įvyko klaida.

Kaip rodomos nepagautos klaidos

Spustelėjus mygtuką "Klaida".

Klaidų stebėjimas naudojant „Sentry“ priekinėse programose, parašytose „JavaScript“: 1 dalis

Klaida pakyla į skambučių krūvą, todėl konsolėje rodomas klaidos pranešimas. Po to Sentry automatiškai stebi klaidą be jokių papildomų veiksmų.

Klaidų stebėjimas naudojant „Sentry“ priekinėse programose, parašytose „JavaScript“: 1 dalis

Pastabos:

  • Matome, kurioje eilutėje (30) klaida pamesta
  • Nėra džiūvėsėlių tako (nelabai suprantu kodėl)

Kaip užtikrinti projekto saugumą

Galbūt pastebėjote, kaip mes kontroliuojame, kurie puslapiai gali pranešti apie mūsų projekto klaidas Sargybinis; su pagalba DSN įrašų. Problema ta, kad įvestį gali matyti visi, kurie peržiūri jūsų puslapio šaltinio kodą.

Norėdami to išvengti, turime apriboti domenų, galinčių pateikti mūsų projektui klaidų ataskaitas, skaičių. Šiame pavyzdyje mes naudojome localhost (vietinis šeimininkas). Ši parinktis sukonfigūruota nustatymų skirtuke Sargybinis- projektas, Sentry projekto nustatymas.

Klaidų stebėjimas naudojant „Sentry“ priekinėse programose, parašytose „JavaScript“: 1 dalis

Išleidimai

Jei galvojate, kaip naudoti Sargybinis skirtinguose mūsų programos variantuose, tada mums reikia kažkokio mechanizmo, kuris pažymėtų klaidas versijos numeriu.

Juk nenorime, kad klaida, kurią ištaisėme, vėl pasirodytų, ir manome, kad tai, ką ištaisėme, neveikė. Taip pat gali būti, kad vartotojas paleido senesnę talpykloje saugomą programos versiją.

Norėdami išspręsti problemą, turite įvesti identifikatorių paleisti (versijos) paleidžiant Sargybinis.

vanilė/index.html

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

Po to visos naujos klaidos bus pažymėtos kaip leidimas (0.1.0), tai yra, jie bus susieti su teisinga kodo versija.

Klaidų stebėjimas naudojant „Sentry“ priekinėse programose, parašytose „JavaScript“: 1 dalis

Pastabos:

  • Mes sugalvojome paprastą leidimų naudojimo būdą
  • Sentry leidžia naudoti daugiau kompleksasиспользование, kuris yra glaudžiai susijęs su GitHub. Ši funkcija leidžia sekti klaidas prieš atliekant tam tikras operacijas.

PS Antroji dalis ilgesnė, tad bus atskirame įraše.

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

PS Pamiršau nurodyti, kad tai yra įrašo vertimas https://codeburst.io/sentry-error-reporting-by-example-part-1-999b2df11556

Šaltinis: www.habr.com

Добавить комментарий