JavaScript-da yozilgan front-end ilovalarida Sentry bilan kuzatuv xatolari: 1-qism

xizmat soqchi da yozilgan front-end ilovalaridagi xatolarni masofadan turib kuzatish imkonini beradi JavaScript.

JavaScript-da yozilgan front-end ilovalarida Sentry bilan kuzatuv xatolari: 1-qism

Front-end ilovalaridagi muammolarni tuzatishga urinish JavaScript qiyin bo'lishi mumkin, chunki ular foydalanuvchining brauzerida paydo bo'ladi, siz ko'pincha kirish imkoniga ega bo'lmaysiz. Biroq, soqchi xatolarni masofadan turib kuzatish imkonini beradi.

u Ushbu maqolada muhokama qilingan echimlarni yuklab olishingiz mumkin.

Nima kerak

Agar siz ushbu misollardan foydalanmoqchi bo'lsangiz, sizga kerak bo'ladi:

  • Node.js: Ilovaning bir qismi boΚ»lmagan funksiyalarga boy ishlab chiqish vositasi. Biz LTSning oxirgi versiyasini (8.12.0) yuklab oldik.
  • soqchi: Yoki Sentry xizmatidagi hisob (siz oyiga 10 mingtagacha xatoliklarni bepul yozib olishingiz mumkin) yoki o'rnatilgan mahalliy Sentry - https://github.com/getsentry/onpremise

Serveringizga o'rnatish

Sentry On-Premise-ni serveringizga o'rnatish uchun siz 2 usuldan foydalanishingiz mumkin

  1. rpmni yarating va ularni o'rnating - https://habr.com/ru/post/500632/

  2. Rasmiy o'rnatuvchidan foydalaning:

    Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π° сСрвСр docker ΠΈ docker-compose
    git clone https://github.com/getsentry/onpremise.git
    ./install.sh

Standart foydalanish

Boshlash uchun xizmat veb-saytidan yangisini qo'shing soqchi- ilova uchun loyiha. Kerakli tilni tanlaganingizdan so'ng siz tegishli hujjatlarni olasiz. Bizning holatlarimizda biz tanladik JavaScript.

Birinchi misol standartdir JavaScript. Bu erda ikkita tugma mavjud: "Salom" (Salom) va "Xato" (Xato).

Tugmani bosganingizdan so'ng "Salom", ekran qayta ishga tushadi va bloklanadi urinish xatoni aniqlaydi va ushlaydi. Xato "ushlangandan" so'ng, xatolik hisoboti qo'lda xizmatga yuboriladi soqchi.

"Xato" tugmasi xatoni osongina aniqlash imkonini beradi.

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

Remarks:

  • Sentry CDN-dan o'rnatiladi va global o'zgaruvchi sifatida namoyon bo'ladi
  • Biroz oldin biz JavaScript-da Sentry-ni ishga tushirdik

Ushbu misolni sinab ko'rish uchun biz statik veb-server platformasidan foydalanishimiz mumkin Node.js: http server. Fayl saqlanadigan papkaga o'ting index.html, va brauzerda manzilni ochish uchun quyidagi qatorni kiriting (keshlashni o'chirib qo'ygan variant). http://localhost:8080.

Qanday tutilgan xatolar ko'rsatiladi

Avval tugmani bosing "Salom".

JavaScript-da yozilgan front-end ilovalarida Sentry bilan kuzatuv xatolari: 1-qism

Biz xatoni aniqladik, shuning uchun u qo'ng'iroqlar to'plamini ochmaydi va shuning uchun konsolda kuzatilmaydi. Biroq, biz yuborganimizdan beri soqchi xato haqida qo'lda xabar bering, biz sizning hisobingizda bu haqda xabarni ko'ramiz.

JavaScript-da yozilgan front-end ilovalarida Sentry bilan kuzatuv xatolari: 1-qism

Remarks:

  • Qaysi qatorda (24) xato borligini kuzatishimiz mumkin
  • Bundan tashqari, non sindirish izi xatoga olib kelgan brauzer harakatlarini ko'rsatadi.

Qanday qilib ushlanmagan xatolar ko'rsatiladi

Tugmani bosish "Xato".

JavaScript-da yozilgan front-end ilovalarida Sentry bilan kuzatuv xatolari: 1-qism

Xato qo'ng'iroqlar to'plamini ko'paytiradi va shu bilan konsolda xato xabari ko'rsatiladi. Shundan so'ng Sentry hech qanday qo'shimcha harakatlarsiz xatoni avtomatik ravishda kuzatib boradi.

JavaScript-da yozilgan front-end ilovalarida Sentry bilan kuzatuv xatolari: 1-qism

Remarks:

  • Qaysi qatorda (30) xato yo'qolganligini ko'rishimiz mumkin
  • Non sindirish izi yo'q (nega buni tushunmayapman)

Loyiha xavfsizligini qanday ta'minlash kerak

Loyihamizdagi xatolar haqida qaysi sahifalar xabar berishi mumkinligini nazorat qilish usulini payqagandirsiz soqchi; yordamida dsn yozuvlar. Muammo shundaki, kiritilgan ma'lumotlarni sahifangizning manba kodini ko'rgan har bir kishi ko'rishi mumkin.

Bunga yo'l qo'ymaslik uchun loyihamizga xato hisobotlarini yuborishi mumkin bo'lgan domenlar sonini cheklashimiz kerak. Ushbu misolda biz foydalandik localhost (localhost). Ushbu parametr sozlamalar yorlig'ida sozlangan soqchi-loyiha, Sentry loyihasini sozlash.

JavaScript-da yozilgan front-end ilovalarida Sentry bilan kuzatuv xatolari: 1-qism

Relizlar

Agar siz qanday foydalanishni o'ylab ko'rsangiz soqchi ilovamizning turli xil o'zgarishlarida, biz xatolarni versiya raqami bilan belgilaydigan qandaydir mexanizmga muhtojmiz.

Oxir oqibat, biz tuzatgan xatoning yana paydo bo'lishini xohlamaymiz va biz tuzatgan narsa ishlamadi deb o'ylaymiz. Bundan tashqari, foydalanuvchi dasturning eski, keshlangan versiyasini ishga tushirgan bo'lishi mumkin.

Muammoni hal qilish uchun siz identifikatorni kiritishingiz kerak ozod qilish (versiyalar) ishga tushirilganda soqchi.

vanilya/index.html

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

Shundan so'ng, barcha yangi xatolar sifatida belgilanadi chiqarish (0.1.0), ya'ni ular kodning to'g'ri versiyasiga bog'langan bo'ladi.

JavaScript-da yozilgan front-end ilovalarida Sentry bilan kuzatuv xatolari: 1-qism

Remarks:

  • Biz relizlardan foydalanishning oddiy usulini topdik
  • Sentry sizga ko'proq foydalanish imkonini beradi murakkab ularning foydalanishbilan chambarchas bog'liq GitHub. Bu funksiya muayyan operatsiyalarni bajarishdan oldin xatolarni kuzatish imkonini beradi.

PS Ikkinchi qism uzunroq, shuning uchun u alohida postda bo'ladi.

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

PS Bu postning tarjimasi ekanligini ko'rsatishni unutibman https://codeburst.io/sentry-error-reporting-by-example-part-1-999b2df11556

Manba: www.habr.com

a Izoh qo'shish