ื ื™ื˜ื•ืจ ืฉื’ื™ืื•ืช ืขื Sentry ื‘ื™ื™ืฉื•ืžื™ Front-End ืฉื ื›ืชื‘ื• ื‘-JavaScript: ื—ืœืง 1

ืฉื™ืจื•ืช Sentry ืžืืคืฉืจ ืœืš ืœืขืงื•ื‘ ืžืจื—ื•ืง ืื—ืจ ื‘ืื’ื™ื ื‘ื™ื™ืฉื•ืžื™ื ื—ื–ื™ืชื™ื™ื ืฉื ื›ืชื‘ื• ื‘ JavaScript.

ื ื™ื˜ื•ืจ ืฉื’ื™ืื•ืช ืขื Sentry ื‘ื™ื™ืฉื•ืžื™ Front-End ืฉื ื›ืชื‘ื• ื‘-JavaScript: ื—ืœืง 1

ืžื ืกื” ืœืชืงืŸ ื‘ืขื™ื•ืช ื‘ื™ื™ืฉื•ืžื™ ืงืฆื” ืขืœ JavaScript ื™ื›ื•ืœ ืœื”ื™ื•ืช ืžืกื•ื‘ืš ืžื›ื™ื•ื•ืŸ ืฉื”ื ืžืงื•ืจื ื‘ื“ืคื“ืคืŸ ืฉืœ ื”ืžืฉืชืžืฉ, ืฉืœืขืชื™ื ืงืจื•ื‘ื•ืช ืื™ืŸ ืœืš ื’ื™ืฉื” ืืœื™ื•. ืœืžืจื•ืช ื–ืืช, Sentry ืžืืคืฉืจ ืœื ื˜ืจ ืžืจื—ื•ืง ื‘ืื’ื™ื.

ื›ืืŸ ืืชื” ื™ื›ื•ืœ ืœื”ื•ืจื™ื“ ืืช ื”ืคืชืจื•ื ื•ืช ื”ื ื“ื•ื ื™ื ื‘ืžืืžืจ ื–ื”.

ืžื” ืฉืฆืจื™ืš

ืื ืืชื” ืจื•ืฆื” ืœื”ืฉืชืžืฉ ื‘ื“ื•ื’ืžืื•ืช ืืœื”, ืชืฆื˜ืจืš:

  • Node.js: ื›ืœื™ ืคื™ืชื•ื— ืขืฉื™ืจ ื‘ืชื›ื•ื ื•ืช ืฉืื™ื ื• ื—ืœืง ืžื”ืืคืœื™ืงืฆื™ื”. ื”ื•ืจื“ื ื• ืืช ื’ืจืกืช ื”-LTS ื”ืขื“ื›ื ื™ืช ื‘ื™ื•ืชืจ (8.12.0)
  • Sentry: ืื• ื—ืฉื‘ื•ืŸ ื‘ืฉื™ืจื•ืช Sentry (ืชื•ื›ืœ ืœื”ืงืœื™ื˜ ืขื“ 10 ืืœืฃ ื‘ืื’ื™ื ืœื—ื•ื“ืฉ ื‘ื—ื™ื ื) ืื• Sentry ืžืงื•ืžื™ ืžื•ืชืงืŸ - https://github.com/getsentry/onpremise

ื”ืชืงื ื” ื‘ืฉืจืช ืฉืœืš

ื›ื“ื™ ืœื”ืชืงื™ืŸ Sentry On-Premise ื‘ืฉืจืช ืฉืœืš ืืชื” ื™ื›ื•ืœ ืœืœื›ืช ื‘-2 ื“ืจื›ื™ื

  1. ื‘ื ื” ืกืœ"ื“ ื•ื”ืชืงืŸ ืื•ืชื - https://habr.com/ru/post/500632/

  2. ื”ืฉืชืžืฉ ื‘ืžืชืงื™ืŸ ื”ืจืฉืžื™:

    ะฃัั‚ะฐะฝะพะฒะธั‚ัŒ ะฝะฐ ัะตั€ะฒะตั€ docker ะธ docker-compose
    git clone https://github.com/getsentry/onpremise.git
    ./install.sh

ืฉื™ืžื•ืฉ ืจื’ื™ืœ

ื›ื“ื™ ืœื”ืชื—ื™ืœ, ื”ื•ืกืฃ ืื—ื“ ื—ื“ืฉ ืžืืชืจ ื”ืฉื™ืจื•ืช Sentry-ืคืจื•ื™ืงื˜ ืขื‘ื•ืจ ื”ื™ื™ืฉื•ื. ืœืื—ืจ ื‘ื—ื™ืจืช ื”ืฉืคื” ื”ืจืฆื•ื™ื”, ืชืงื‘ืœ ืืช ื”ืชื™ืขื•ื“ ื”ืžืชืื™ื. ื‘ืžืงืจื” ืฉืœื ื• ื‘ื—ืจื ื• JavaScript.

ื”ื“ื•ื’ืžื” ื”ืจืืฉื•ื ื” ื”ื™ื ืกื˜ื ื“ืจื˜ื™ืช JavaScript. ื™ืฉ ื›ืืŸ ืฉื ื™ ื›ืคืชื•ืจื™ื: "ืฉืœื•ื" (ืฉืœื•ื ื• "ืฉืึฐื’ึดื™ืึธื”" (ืฉืึฐื’ึดื™ืึธื”).

ืœืื—ืจ ืฉืชืœื—ืฅ ืขืœ ื”ื›ืคืชื•ืจ "ืฉืœื•ื", ื”ืžืกืš ื™ืืชื—ืœ ื•ื”ื—ืกื™ืžื” ืœื ืกื•ืช ื™ื–ื”ื” ื•ื™ืชืคื•ืก ืืช ื”ื‘ืื’. ืœืื—ืจ ืฉื”ื‘ืื’ "ื ืชืคืก", ื“ื•ื— ื”ืฉื’ื™ืื” ื ืฉืœื— ื™ื“ื ื™ืช ืœืฉื™ืจื•ืช Sentry.

ื›ืคืชื•ืจ "ืฉื’ื™ืื”" ืžืืคืฉืจ ืœืš ืœื–ื”ื•ืช ื‘ืื’ ื‘ืงืœื•ืช.

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>

ื”ืขืจื•ืช:

  • Sentry ืžื•ืชืงืŸ ืž-CDN ื•ื ื—ืฉืฃ ื›ืžืฉืชื ื” ื’ืœื•ื‘ืœื™
  • ืงืฆืช ืงื•ื“ื ืœื›ืŸ ื”ืฉืงื ื• ืืช Sentry ื‘-JavaScript ืฉืœื ื•

ื›ื“ื™ ืœื‘ื“ื•ืง ื“ื•ื’ืžื” ื–ื•, ืื ื• ื™ื›ื•ืœื™ื ืœื”ืฉืชืžืฉ ื‘ืคืœื˜ืคื•ืจืžืช ืฉืจืช ืื™ื ื˜ืจื ื˜ ืกื˜ื˜ื™ืช Node.js: ืฉืจืช http. ืขื‘ื•ืจ ืืœ ื”ืชื™ืงื™ื” ืฉื‘ื” ื”ืงื•ื‘ืฅ ืžืื•ื—ืกืŸ index.html, ื•ื”ื–ืŸ (ืืคืฉืจื•ืช ืขื ืžืฉื‘ื™ืช ืžื˜ืžื•ืŸ) ืืช ื”ืฉื•ืจื” ื”ื‘ืื” ื›ื“ื™ ืœืคืชื•ื— ืืช ื”ื›ืชื•ื‘ืช ื‘ื“ืคื“ืคืŸ http://localhost:8080.

ื›ื™ืฆื“ ืžื•ืฆื’ื™ื ื‘ืื’ื™ื ืฉื ืชืคืกื•

ืชื—ื™ืœื” ืœื—ืฅ ืขืœ ื”ื›ืคืชื•ืจ "ืฉืœื•ื".

ื ื™ื˜ื•ืจ ืฉื’ื™ืื•ืช ืขื Sentry ื‘ื™ื™ืฉื•ืžื™ Front-End ืฉื ื›ืชื‘ื• ื‘-JavaScript: ื—ืœืง 1

ืชืคืกื ื• ื‘ืื’, ืื– ื”ื•ื ืœื ื™ืงืคื•ืฅ ืืช ืขืจื™ืžืช ื”ืฉื™ื—ื•ืช, ื•ืœื›ืŸ ืื™ื ื• ืžื ื•ื˜ืจ ื‘ืงื•ื ืกื•ืœื”. ืขื ื–ืืช, ืžืื– ืื ื—ื ื• ืฉื•ืœื—ื™ื ืœ Sentry ื“ื•ื•ื— ืขืœ ื‘ืื’ ื‘ืื•ืคืŸ ื™ื“ื ื™, ื ืจืื” ื”ื•ื“ืขื” ืœื’ื‘ื™ื• ื‘ื—ืฉื‘ื•ื ืš.

ื ื™ื˜ื•ืจ ืฉื’ื™ืื•ืช ืขื Sentry ื‘ื™ื™ืฉื•ืžื™ Front-End ืฉื ื›ืชื‘ื• ื‘-JavaScript: ื—ืœืง 1

ื”ืขืจื•ืช:

  • ืื ื• ื™ื›ื•ืœื™ื ืœืืชืจ ืื™ื–ื• ืฉื•ืจื” (24) ืžื›ื™ืœื” ืืช ื”ื‘ืื’
  • ื‘ื ื•ืกืฃ, ืฉื‘ื™ืœ ืคื™ืจื•ืจื™ ื”ืœื—ื ืžืฆื™ื’ ืืช ืคืขื•ืœื•ืช ื”ื“ืคื“ืคืŸ ืฉื”ื•ื‘ื™ืœื• ืœืฉื’ื™ืื”.

ื›ื™ืฆื“ ืžื•ืฆื’ื™ื ื‘ืื’ื™ื ืฉืœื ื ืชืคืกื•

ืœื—ืฅ ืขืœ ื”ื›ืคืชื•ืจ "ืฉืึฐื’ึดื™ืึธื”".

ื ื™ื˜ื•ืจ ืฉื’ื™ืื•ืช ืขื Sentry ื‘ื™ื™ืฉื•ืžื™ Front-End ืฉื ื›ืชื‘ื• ื‘-JavaScript: ื—ืœืง 1

ื”ื‘ืื’ ืžื‘ืขื‘ืข ื‘ืขืจื™ืžืช ื”ืฉื™ื—ื•ืช ื•ื›ืš ืžื•ืฆื’ืช ื”ื•ื“ืขืช ืฉื’ื™ืื” ื‘ืงื•ื ืกื•ืœื”. ืœืื—ืจ ืžื›ืŸ, Sentry ืขื•ืงื‘ ืื—ืจ ื”ื‘ืื’ ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™, ืœืœื ืคืขื•ืœื•ืช ื ื•ืกืคื•ืช.

ื ื™ื˜ื•ืจ ืฉื’ื™ืื•ืช ืขื Sentry ื‘ื™ื™ืฉื•ืžื™ Front-End ืฉื ื›ืชื‘ื• ื‘-JavaScript: ื—ืœืง 1

ื”ืขืจื•ืช:

  • ืื ื• ื™ื›ื•ืœื™ื ืœืจืื•ืช ื‘ืื™ื–ื• ืฉื•ืจื” (30) ื”ื‘ืื’ ืื‘ื“
  • ืื™ืŸ ืฉื‘ื™ืœ ืคื™ืจื•ืจื™ ืœื—ื (ืื ื™ ืœื ื›ืœ ื›ืš ืžื‘ื™ืŸ ืœืžื”)

ื›ื™ืฆื“ ืœื”ื‘ื˜ื™ื— ืืช ืื‘ื˜ื—ืช ื”ืคืจื•ื™ืงื˜

ืื•ืœื™ ืฉืžืชื ืœื‘ ืœืื•ืคืŸ ืฉื‘ื• ืื ื• ืฉื•ืœื˜ื™ื ื‘ืื™ืœื• ื“ืคื™ื ื™ื›ื•ืœื™ื ืœื“ื•ื•ื— ืขืœ ืฉื’ื™ืื•ืช ืœืคืจื•ื™ืงื˜ ืฉืœื ื• Sentry; ืขื ืขื–ืจื” dsn ืจืฉื•ืžื•ืช. ื”ื‘ืขื™ื” ื”ื™ื ืฉื›ืœ ืžื™ ืฉืฆื•ืคื” ื‘ืงื•ื“ ื”ืžืงื•ืจ ืฉืœ ื”ื“ืฃ ืฉืœืš ื™ื›ื•ืœ ืœืจืื•ืช ืืช ื”ืงืœื˜.

ื›ื“ื™ ืœื”ื™ืžื ืข ืžื›ืš, ืขืœื™ื ื• ืœื”ื’ื‘ื™ืœ ืืช ืžืกืคืจ ื”ื“ื•ืžื™ื™ื ื™ื ืฉื™ื›ื•ืœื™ื ืœืฉืœื•ื— ื“ื•ื—ื•ืช ืฉื’ื™ืื” ืœืคืจื•ื™ืงื˜ ืฉืœื ื•. ื‘ื“ื•ื’ืžื” ื–ื• ื”ืฉืชืžืฉื ื• localhost (ืžืืจื— ืžืงื•ืžื™). ืืคืฉืจื•ืช ื–ื• ืžื•ื’ื“ืจืช ื‘ืœืฉื•ื ื™ืช ื”ื”ื’ื“ืจื•ืช Sentry-ืคึผืจื•ึนื™ึถืงื˜, ื”ื’ื“ืจืช ืคืจื•ื™ืงื˜ Sentry.

ื ื™ื˜ื•ืจ ืฉื’ื™ืื•ืช ืขื Sentry ื‘ื™ื™ืฉื•ืžื™ Front-End ืฉื ื›ืชื‘ื• ื‘-JavaScript: ื—ืœืง 1

ืžืฉื—ืจืจ

ืื ืืชื” ื—ื•ืฉื‘ ืขืœ ืื™ืš ืœื”ืฉืชืžืฉ Sentry ื‘ื•ื•ืจื™ืืฆื™ื•ืช ืฉื•ื ื•ืช ืฉืœ ื”ืืคืœื™ืงืฆื™ื” ืฉืœื ื•, ืื– ืื ื—ื ื• ืฆืจื™ื›ื™ื ืกื•ื’ ืฉืœ ืžื ื’ื ื•ืŸ ืฉื™ืกืžืŸ ืฉื’ื™ืื•ืช ืขื ืžืกืคืจ ื’ืจืกื”.

ืื—ืจื™ ื”ื›ืœ, ืื ื—ื ื• ืœื ืจื•ืฆื™ื ืฉื”ื‘ืื’ ืฉืชื™ืงื ื• ื™ืฆื•ืฅ ืฉื•ื‘, ื•ืื ื—ื ื• ื—ื•ืฉื‘ื™ื ืฉืžื” ืฉืชื™ืงื ื• ืœื ืขื‘ื“. ื™ื™ืชื›ืŸ ื’ื ืฉื”ืžืฉืชืžืฉ ื”ืฉื™ืง ื’ืจืกื” ื™ืฉื ื” ื™ื•ืชืจ, ืฉืžื•ืจื” ื‘ืžื˜ืžื•ืŸ ืฉืœ ื”ืืคืœื™ืงืฆื™ื”.

ื›ื“ื™ ืœืคืชื•ืจ ืืช ื”ื‘ืขื™ื”, ืขืœื™ืš ืœื”ื–ื™ืŸ ืืช ื”ืžื–ื”ื” ืฉื—ืจื•ืจ (ื’ืจืกืื•ืช) ื‘ืขืช ื”ื”ืคืขืœื” Sentry.

vanilla/index.html

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

ืœืื—ืจ ืžื›ืŸ, ื›ืœ ื”ืฉื’ื™ืื•ืช ื”ื—ื“ืฉื•ืช ื™ืกื•ืžื ื• ื› ื’ืจืกื” (0.1.0), ื›ืœื•ืžืจ, ื”ื ื™ื”ื™ื• ืงืฉื•ืจื™ื ืœื’ืจืกื” ื”ื ื›ื•ื ื” ืฉืœ ื”ืงื•ื“.

ื ื™ื˜ื•ืจ ืฉื’ื™ืื•ืช ืขื Sentry ื‘ื™ื™ืฉื•ืžื™ Front-End ืฉื ื›ืชื‘ื• ื‘-JavaScript: ื—ืœืง 1

ื”ืขืจื•ืช:

  • ื’ื™ืœื™ื ื• ื“ืจืš ืคืฉื•ื˜ื” ืœื”ืฉืชืžืฉ ื‘ืžื”ื“ื•ืจื•ืช
  • Sentry ืžืืคืฉืจ ืœืš ืœื”ืฉืชืžืฉ ื‘ื™ื•ืชืจ ืžื•ืจื›ื‘ ืฉืœื”ื ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะต, ืืฉืจ ืงืฉื•ืจื” ืงืฉืจ ื”ื“ื•ืง ืœ GitHub. ืคื•ื ืงืฆื™ื” ื–ื• ืžืืคืฉืจืช ืœืขืงื•ื‘ ืื—ืจ ื‘ืื’ื™ื ืœืคื ื™ ื‘ื™ืฆื•ืข ืคืขื•ืœื•ืช ืžืกื•ื™ืžื•ืช.

ื .ื‘ ื”ื—ืœืง ื”ืฉื ื™ ืืจื•ืš ื™ื•ืชืจ, ืื– ื–ื” ื™ื”ื™ื” ื‘ืคื•ืกื˜ ื ืคืจื“.

ื .ื‘. ื˜ืœื’ืจื ืฆ'ืื˜ Sentry https://t.me/sentry_ru

ื .ื‘ ืฉื›ื—ืชื™ ืœืฆื™ื™ืŸ ืฉื–ื” ืชืจื’ื•ื ืฉืœ ื”ืคื•ืกื˜ https://codeburst.io/sentry-error-reporting-by-example-part-1-999b2df11556

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”