O que sentry-elixir-sdk faz?
Configuração completa do SDK do Sentry para Elixir. Use quando for solicitado "adicionar Sentry ao Elixir", "instalar Sentry para Elixir" ou configurar monitoramento de erros, rastreamento, logging ou crons para aplicações Elixir, Phoenix ou Plug. Suporta Phoenix, Plug, LiveView, Oban e Quantum.
Funcionalidades
- Monitoramento de Erros: Capture e reporte exceções automaticamente.
- Rastreamento Distribuído: Rastreie requisições através de serviços.
- Logging Estruturado: Envie logs para o Sentry para análise.
- Crons: Monitore tarefas agendadas (crons) para garantir que estão sendo executadas.
Suporte a Frameworks
- Phoenix: Integração total com pipelines de requisições.
- Plug: Suporte para aplicações Plug simples.
- LiveView: Rastreamento de eventos e erros em tempo real.
- Oban: Monitoramento de jobs assíncronos.
- Quantum: Suporte para tarefas agendadas.
Instalação
Adicione a dependência no arquivo mix.exs:
defp deps do
[
{:sentry, "~> 8.0"}
]
end
Execute mix deps.get para instalar.
Configuração
Configure o Sentry no arquivo config/config.exs:
config :sentry,
dsn: "https://[email protected]/projectId",
environment_name: Mix.env(),
enable_source_code_context: true,
root_source_code_paths: [File.cwd!()],
tags: %{},
release: "[email protected]"
Para Phoenix
Adicione o plug Sentry.PlugContext no seu endpoint:
plug Sentry.PlugContext
plug Sentry.Plug.CatchAll
Para Plug
Adicione o middleware no pipeline:
defmodule MyApp.Router do
use Plug.Router
plug Sentry.PlugContext
plug :match
plug :dispatch
end
Para LiveView
Adicione o hook no arquivo app.js:
import { LiveSocket } from "phoenix_live_view"
import Sentry from "@sentry/browser"
Sentry.init({
dsn: "https://[email protected]/projectId"
})
let liveSocket = new LiveSocket("/live", Socket, {
hooks: {
Sentry: {
mounted() {
this.el.addEventListener("phx:error", (e) => {
Sentry.captureException(e.detail)
})
}
}
}
})
Uso
Capturando Erros Manualmente
Sentry.capture_exception(%RuntimeError{message: "Algo deu errado"})
Sentry.capture_message("Mensagem de log", level: :warning, extra: %{user_id: user.id})
Rastreamento de Performance
Sentry.Transaction.start("transaction_op", "transaction_name")
|> Sentry.Transaction.finish()
Configuração Avançada
Veja a documentação oficial do SDK para configurações avançadas como filtros, callbacks e integração com bibliotecas externas.
Problemas Comuns
- Erro de DSN inválido: Verifique se o DSN foi copiado corretamente do dashboard do Sentry.
- Erros não reportados: Certifique-se de que o plug
Sentry.Plug.CatchAllestá no lugar correto no pipeline. - Crons não funcionando: Verifique a configuração do adaptador de crons (ex: Quantum).