Monitoramento de erros com Sentry em aplicações frontend escritas em JavaScript: Parte 1

Serviço Sentry permite monitorar remotamente bugs em aplicações frontend escritas em JavaScript.

Monitoramento de erros com Sentry em aplicações frontend escritas em JavaScript: Parte 1

Tentar resolver problemas em aplicações frontend em JavaScript pode ser uma tarefa desafiadora, uma vez que eles ocorrem no navegador do usuário, ao qual, muitas vezes, você não tem acesso. No entanto, Sentry oferece a capacidade de monitorar remotamente bugs.

Aqui é possível baixar as soluções discutidas neste artigo.

O que é necessário

Se você deseja usar esses exemplos, precisará de:

  • Node.js: Uma ferramenta multifuncional para desenvolvimento que não faz parte da aplicação. Nós baixamos a última versão LTS (8.12.0)
  • Sentry: Ou uma conta no serviço Sentry (é possível registrar até 10 mil bugs por mês gratuitamente) ou um Sentry local instalado — https://github.com/getsentry/onpremise

Instalação no seu servidor

Para instalar o Sentry On-Premise no seu servidor, você pode seguir 2 caminhos

  1. Construir rpm e instalá-los — https://habr.com/ru/post/500632/

  2. Utilizar o instalador oficial:

    Instalar docker e docker-compose no servidor
    git clone https://github.com/getsentry/onpremise.git
    ./install.sh

Uso padrão

Para começar, adicione um novo Sentry-projeto para a aplicação no site do serviço. Após selecionar o idioma desejado, você receberá a documentação correspondente. Em nosso caso, escolhemos JavaScript.

O primeiro exemplo é o padrão JavaScript. Aqui há dois botões: «Hello» (Olá) e «Error» (Erro).

Após clicar no botão «Hello», a tela será recarregada, e o bloco try detectará e capturará o bug. Depois que o bug for «capturado», o relatório de erro é enviado manualmente para o serviço Sentry.

O botão «Error» permite simplesmente detectar o bug.

vanilla / index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Baunilha</title>
</head>
<body>
  <button id="hello">Olá</button>
  <button id="error">Erro</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>

Notas:

  • Sentry é instalado a partir do CDN e aparece como uma variável global
  • Mais cedo, executamos o Sentry em nosso JavaScript

Para testar este exemplo, podemos usar uma plataforma de servidor web estático Node.js: servidor http. Vamos para a pasta onde o arquivo index.html, está localizado e digitamos (a opção desativa o cache) a seguinte linha para abrir no navegador o endereço http://localhost:8080.

Como os bugs capturados são exibidos

Primeiro, clicamos no botão «Hello».

Monitoramento de erros com Sentry em aplicações frontend escritas em JavaScript: Parte 1

Capturamos um bug, portanto ele não aparecerá no topo da pilha de chamadas, assim não será monitorado no console. No entanto, como estamos enviando Sentry o relatório de bug manualmente, veremos uma mensagem sobre ele na conta.

Monitoramento de erros com Sentry em aplicações frontend escritas em JavaScript: Parte 1

Notas:

  • Podemos verificar em qual linha (24) o bug se infiltrou
  • Além disso, a trilha de navegação mostra as ações do navegador que levaram ao erro.

Como erros capturados são exibidos

Clicamos no botão «Erro».

Monitoramento de erros com Sentry em aplicações frontend escritas em JavaScript: Parte 1

O bug aparece no topo da pilha de chamadas e, assim, a mensagem de erro é exibida no console. Em seguida, o Sentry monitora automaticamente o bug, sem nenhuma ação adicional.

Monitoramento de erros com Sentry em aplicações frontend escritas em JavaScript: Parte 1

Notas:

  • Podemos ver em qual linha (30) o bug se perdeu
  • Não está prevista a trilha de navegação (não entendo muito bem o porquê)

Como garantir a segurança do projeto

Você pode ter notado a forma como controlamos as páginas que podem enviar relatórios de erros para nosso projeto Sentry; através de dsn registros. O problema é que qualquer pessoa que visualizar o código-fonte da sua página pode ver a entrada.

Para evitar isso, precisamos limitar o número de domínios que podem enviar relatórios de erros para nosso projeto. Neste exemplo, usamos localhost (localhost). Esta opção é configurada na aba de configurações Sentry-do projeto, Configuração do Projeto Sentry.

Monitoramento de erros com Sentry em aplicações frontend escritas em JavaScript: Parte 1

Lançamentos

Se pensarmos em como usar Sentry em diferentes variações do nosso aplicativo, precisamos de um mecanismo que irá marcar os erros com o número da versão.

Não queremos que um bug que corrigimos reapareça, enquanto pensamos que aquilo que consertamos não funcionou. Pode acontecer que um usuário tenha iniciado uma versão mais antiga e armazenada em cache do aplicativo.

Para resolver o problema, precisamos inserir o identificador do lançamento (versão) ao iniciar Sentry.

vanilla / index.html

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

Depois disso, todos os novos erros serão marcados como release (0.1.0), ou seja, estarão vinculados à versão correta do código.

Monitoramento de erros com Sentry em aplicações frontend escritas em JavaScript: Parte 1

Notas:

  • Examinamos uma forma simples de usar lançamentos
  • O Sentry permite aplicar uma abordagem mais complexa delas uso, que está intimamente ligada a GitHub. Essa função permite rastrear bugs antes de certas operações serem realizadas.

P.S. A segunda parte é mais longa, então será em uma postagem separada.

P.S. Chat do Telegram Sentry https://t.me/sentry_ru

P.S. Esqueci de mencionar que esta é a tradução de uma postagem https://codeburst.io/sentry-error-reporting-by-example-part-1-999b2df11556

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster