Monitoreo de errores

Código se rompe. Corrígelo más rápido. Rastrea y depura errores en cualquier lenguaje o framework, con el contexto completo para llegar a la causa raíz, cada vez.

Aguantado por más de 4 millones de desarrolladores.

  • GitHub
  • Disney
  • Atlassian
  • Linear
  • Vercel
  • Cloudflare
  • Slack
  • Metronome
  • Autodesk
  • Microsoft
  • Instacart
  • Lyft
  • Bolt
  • Monday
  • Cursor
  • Anthropic
  • Factory AI
  • Sentry
  • Baseten
  • Runlayer
  • Convex

Contexto a nivel de código

No pierdas tiempo reproduciendo errores. Accede al contexto que necesitas para depurar y corregir más rápido: la línea exacta, qué hizo el usuario y las funciones que llevaron al error.

Ver la documentación

Automatiza el triage de issues.

Identifica cuándo falla tu código y quién puede ayudar a repararlo. Asigna incidentes automáticamente al desarrollador que introdujo el error y notifica a tu equipo por Slack cuando el error ocurra por primera vez, se repita o empeore.

Ver la documentación

Garantiza la calidad y estabilidad de cada release.

Detecta cuándo falla tu código y quién debe arreglarlo. Asigna automáticamente los issues al desarrollador que introdujo el cambio que lo rompió y notifica a tu equipo en Slack cuando el error ocurre por primera vez, vuelve a aparecer o empeora.

Ver la documentación

Empezar con Sentry es fácil.

Soportamos todas las tecnologías (excepto las que no). Comienza con solo unas pocas líneas de código.

Regístrate e instala Sentry con una sola línea de código:

Copied!Click to Copy
npx @sentry/wizard@latest -i nextjs

Obtén el SDK de Sentry para Go:

Copied!Click to Copy
go get "github.com/getsentry/sentry-go"

La configuración debe realizarse lo antes posible en el ciclo de vida de tu aplicación:

Copied!Click to Copy
package main

import (
	"log"
	"time"

	"github.com/getsentry/sentry-go"
)

func main() {
	err := sentry.Init(sentry.ClientOptions{
		Dsn: "https://<key>@sentry.io/<project>",
		EnableTracing: true,
		TracesSampleRate: 1.0,
		TracesSampler: sentry.TracesSampler(func(ctx sentry.SamplingContext) float64 {
			if ctx.Span.Name == "GET /health" {
				return 0.0
			}
			return 1.0
		}),
	})
	if err != nil {
		log.Fatalf("sentry.Init: %s", err)
	}
	defer sentry.Flush(2 * time.Second)
}

Regístrate e instala Sentry con una sola línea de código:

Copied!Click to Copy
npx @sentry/wizard@latest -i angular

Agrega la dependencia de Sentry:

Copied!Click to Copy
dotnet add package Sentry.AspNetCore

Configura Sentry en appsettings.json:

Copied!Click to Copy
"Sentry": {
  "Dsn": "https://examplePublicKey@o0.ingest.sentry.io/0",
  "Debug": true,
},

Luego agrega el SDK simplemente llamando a UseSentry:

Copied!Click to Copy
public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            // Agrega la siguiente línea:
            webBuilder.UseSentry();
        });

Ejecuta este comando para instalar y registrar la integración de Sentry con Astro:

Copied!Click to Copy
npx astro add @sentry/astro

Y agrega tu DSN y la configuración del proyecto a tu archivo astro.config.mjs:

Copied!Click to Copy
import { defineConfig } from "astro/config";
import sentry from "@sentry/astro";

export default defineConfig({
  integrations: [
    sentry({
      dsn: "__DSN__",
      sourceMapsUploadOptions: {
        project: "your-project-slug",
        authToken: process.env.SENTRY_AUTH_TOKEN,
      },
      tracesSampleRate: 1.0,
    }),
  ],
});

Instala el paquete NuGet para agregar la dependencia de Sentry:

Copied!Click to Copy
dotnet add package Sentry

Inicializa el SDK lo antes posible, como en el método Main en Program.cs/Program.fs:

Copied!Click to Copy
using (SentrySdk.Init(o => {
  o.Dsn = "https://<key>@sentry.io/<project>";
  o.Debug = true;
  o.TracesSampleRate = 1.0; }))
{
  // El código de la aplicación va aquí - Dispose vaciará los eventos
}

Regístrate e instala Sentry con una sola línea de código:

Copied!Click to Copy
npm install @sentry/browser

Instala el paquete sentry/sentry-laravel con Composer:

Copied!Click to Copy
composer require sentry/sentry-laravel

Agrega los reportes de Sentry a bootstrap/app.php:

Copied!Click to Copy
<?php

use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
use Sentry\Laravel\Integration;

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {
        //
    })
    ->withExceptions(function (Exceptions $exceptions) {
        Integration::handles($exceptions);
    })->create();

Activa Sentry Tracing en config/sentry.php:

Copied!Click to Copy
'traces_sample_rate' => 0.2,
'traces_sampler' => function (\Sentry\Tracing\SamplingContext $context): float {
    // retorna un número entre 0 y 1
},

Ejecuta este comando Artisan para configurar el DSN de Sentry:

Copied!Click to Copy
php artisan sentry:publish --dsn=<paste-your-DSN-here>

Instala el paquete sentry/sentry con Composer:

Copied!Click to Copy
composer require sentry/sentry

Para capturar todos los errores, incluso los del arranque de tu aplicación, debes inicializar el SDK de Sentry para PHP lo antes posible:

Copied!Click to Copy
\Sentry\init(['dsn' => 'https://<key>@sentry.io/<project>',
    'traces_sample_rate' => 0.2,
    'traces_sampler' => function (\Sentry\Tracing\SamplingContext $context): float {
        // retorna un número entre 0 y 1
    }, ]);

Regístrate e instala Sentry con una sola línea de código:

Copied!Click to Copy
pip install --upgrade sentry-sdk

Regístrate e instala Sentry con una sola línea de código:

Copied!Click to Copy
npx @sentry/wizard@latest -i react

Agrega la gema sentry-ruby a tu Gemfile:

Copied!Click to Copy
gem "sentry-ruby"

Configura tu DSN:

Copied!Click to Copy
Sentry.init do |config|
  config.dsn = 'https://<key>@sentry.io/<project>'
  config.traces_sample_rate = 1.0
  config.traces_sampler = lambda do |sampling_context|
    true
  end
end

Para usar el SDK, inicializa Sentry en tu punto de entrada Solid index.jsx antes de renderizar tu aplicación Solid:

Copied!Click to Copy
import * as Sentry from "@sentry/solid";
import { useBeforeLeave, useLocation } from "@solidjs/router";
import { render } from "solid-js/web";
import App from "./app";

Sentry.init({
  dsn: "__DSN__",
  integrations: [Sentry.browserTracingIntegration()],
  tracesSampleRate: 1.0,
  tracePropagationTargets: ["localhost", /^https:\/\/yourserver\.io\/api/],
});

const app = document.getElementById("app");
if (!app) throw new Error("No #app element found in the DOM.");
render(() => <App />, app)

Obtén el SDK de Sentry para Java:

Copied!Click to Copy
<dependency>
  <groupId>io.sentry</groupId>
  <artifactId>sentry-spring-boot-starter</artifactId>
  <version><VERSION></version>
</dependency>

Configura tu DSN en application.properties:

Copied!Click to Copy
sentry.dsn=https://<key>@sentry.io/<project>
sentry.traces-sample-rate=1.0

Para usar el SDK, inicializa Sentry en tu punto de entrada Svelte main.js antes de iniciar tu aplicación Svelte:

Copied!Click to Copy
import App from "./App.svelte";
import * as Sentry from "@sentry/svelte";

Sentry.init({
  dsn: "__DSN__",
  release: "my-project-name@2.3.12",
  integrations: [Sentry.browserTracingIntegration()],
  tracesSampleRate: 1.0,
  tracePropagationTargets: ['localhost', /^https:\/\/yourserver\.io\/api/],
});

const app = new App({
  target: document.getElementById("app"),
});

export default app;

Para integrar Sentry en tu proyecto Xcode, especifícalo en tu Podfile y luego ejecuta pod install:

Copied!Click to Copy
platform :ios, '9.0'
use_frameworks!

target 'YourApp' do
  pod 'Sentry', :git => 'https://github.com/getsentry/sentry-cocoa.git', :tag => '<VERSION>'
end

Inicializa el SDK lo antes posible en el ciclo de vida de tu aplicación:

Copied!Click to Copy
import Sentry

func application(_ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    SentrySDK.start { options in
        options.dsn = "https://<key>@sentry.io/<project>"
        options.debug = true
        options.tracesSampleRate = 1.0
    }
    return true
}

Obtén el SDK de Sentry para Vue:

Copied!Click to Copy
npm install @sentry/vue

Configura tu DSN:

Copied!Click to Copy
import { createApp } from "vue";
import * as Sentry from "@sentry/vue";

const app = createApp({});

Sentry.init({
  app,
  dsn: "https://<key>@sentry.io/<project>",
  integrations: [Sentry.browserTracingIntegration()],
  tracesSampleRate: 1.0,
  tracePropagationTargets: ['localhost', /^https:\/\/yourserver\.io\/api/],
});

app.mount("#app");

Regístrate e instala Sentry con una sola línea de código:

Copied!Click to Copy
npx @sentry/wizard@latest -i android

Lo más loco es que probablemente he tenido este bug durante meses sin haberme dado cuenta.

Me estoy dando cuenta de que tener Sentry mejora la experiencia de usuario (UX) porque corriges muchísimos de esos pequeños detalles que no sabías que tenías.

Dan Mindru

@d4m1n,

La cantidad de detalles que obtienes en un incidente de @getsentry es una LOCURA

- información del navegador
- referencia a la línea de código específica
- error específico con rastreo (hasta el backend)

¡Y esto ni siquiera incluye los Session Replays!

James Q Quick

@jamesqquick,

Finalmente corregí mi integración con @getsentry en mi sitio personal y, cielos, ¿por qué esperé tanto para hacerlo? Esta cosa es increíble.

Kent C. Dodds

@kentcdodds,