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:

npx @sentry/wizard@latest -i nextjs

Obtén el SDK de Sentry para Go:

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

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

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:

npx @sentry/wizard@latest -i angular

Agrega la dependencia de Sentry:

dotnet add package Sentry.AspNetCore

Configura Sentry en appsettings.json:

"Sentry": {
  "Dsn": "https://examplePublicKey@o0.ingest.sentry.io/0",
  "Debug": true,
},

Luego agrega el SDK simplemente llamando a UseSentry:

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:

npx astro add @sentry/astro

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

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:

dotnet add package Sentry

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

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:

npm install @sentry/browser

Instala el paquete sentry/sentry-laravel con Composer:

composer require sentry/sentry-laravel

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

<?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:

'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:

php artisan sentry:publish --dsn=<paste-your-DSN-here>

Instala el paquete sentry/sentry con Composer:

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:

\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:

pip install --upgrade sentry-sdk

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

npx @sentry/wizard@latest -i react

Agrega la gema sentry-ruby a tu Gemfile:

gem "sentry-ruby"

Configura tu DSN:

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:

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:

<dependency>
  <groupId>io.sentry</groupId>
  <artifactId>sentry-spring-boot-starter</artifactId>
  <version><VERSION></version>
</dependency>

Configura tu DSN en application.properties:

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:

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:

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:

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:

npm install @sentry/vue

Configura tu DSN:

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:

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,