Surveillance des erreurs

Obtenez des informations exploitables pour résoudre les problèmes de code les plus importants. Suivez, déboguez et corrigez les erreurs dans n'importe quel langage ou framework, avec un contexte adapté pour identifier la cause profonde à chaque fois.

Toléré par 4 millions de développeurs.

Tous les outils dont vous avez besoin pour corriger rapidement le code défectueux

Évitez de perdre du temps à reproduire les erreurs. Obtenez le contexte comme la ligne de code, les actions de l'utilisateur et les fonctions ayant conduit à l'erreur pour déboguer et corriger rapidement.
Sachez quand votre code échoue et qui peut le corriger. Attribuez automatiquement les problèmes au développeur qui a introduit le code défectueux, et informez votre équipe sur Slack lorsque l'erreur survient pour la première fois, se reproduit ou s'aggrave.
Obtenez une visibilité immédiate sur toutes les versions grâce à des informations clés telles que les sessions sans crash, le taux d'adoption des versions et les taux d'échec. Sachez quand une version commence à se dégrader afin de pouvoir revenir rapidement en arrière… si nécessaire.
Getting Started Platforms Scrolling Logo Background Getting Started Platforms Scrolling Logo Background Getting Started Platforms Scrolling Logo Background Getting Started Platforms Scrolling Logo Background Getting Started Platforms Scrolling Logo Background Getting Started Platforms Scrolling Logo Background

Commencer avec Sentry est simple

Nous prenons en charge toutes les technologies (sauf celles que nous ne prenons pas en charge). Commencez avec seulement quelques lignes de code.

Inscrivez-vous et installez Sentry avec une seule ligne de code:

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

Récupérez le SDK Sentry Go:

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

La configuration doit avoir lieu le plus tôt possible dans le cycle de vie de votre application:

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,
		// Spécifiez un taux d'échantillonnage fixe :
		// Nous recommandons d'ajuster cette valeur en production
		TracesSampleRate: 1.0,
		// Ou fournissez un taux d'échantillonnage personnalisé :
		TracesSampler: sentry.TracesSampler(func(ctx sentry.SamplingContext) float64 {
			// À titre d'exemple, cela n'envoie pas certaines
			// transactions à Sentry en fonction de leur nom.
			if ctx.Span.Name == "GET /health" {
				return 0.0
			}

			return 1.0
		}),
	})
	if err != nil {
		log.Fatalf("sentry.Init: %s", err)
	}
	// Videz les événements en mémoire tampon avant la fin du programme.
	// Définissez le délai d'attente sur la durée maximale que le programme peut se permettre d'attendre.
	defer sentry.Flush(2 * time.Second)
}

Installez avec une seule ligne de code:

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

Ajoutez la dépendance Sentry:

Copied!Click to Copy
dotnet add package Sentry.AspNetCore

Configurez Sentry dans appsettings.json:

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

Ajoutez ensuite le SDK en appelant simplement UseSentry

Copied!Click to Copy
public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            // Ajoutez la ligne suivante :
            webBuilder.UseSentry();
        });

Exécutez simplement cette commande pour installer et enregistrer l'intégration Astro de Sentry:

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

Et ajoutez votre DSN et la configuration de votre projet à votre fichier 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,
    }),
  ],
});

Installez le package NuGet pour ajouter la dépendance Sentry:

Copied!Click to Copy
dotnet add package Sentry

Initialisez le SDK le plus tôt possible, comme dans la méthode Main dans Program.cs/Program.fs:

Copied!Click to Copy
using (SentrySdk.Init(o => {
  // Indique à quel projet dans Sentry envoyer les événements:
  o.Dsn = "https://<key>@sentry.io/<project>";
  // Lors de la configuration initiale, pour voir ce que fait le SDK:
  o.Debug = true;
  // Définissez TracesSampleRate sur 1.0 pour capturer 100% des transactions pour le traçage.
  // Nous recommandons d'ajuster cette valeur en production.
  o.TracesSampleRate = 1.0; }))
{
  // Le code de l'application va ici - Le dispose va vider les événements
}

Récupérez le SDK JavaScript Sentry:

Copied!Click to Copy
<script src="https://browser.sentry-cdn.com/<VERSION>/bundle.min.js"></script>

Configurez votre DSN:

Copied!Click to Copy
Sentry.init({ dsn: 'https://<key>@sentry.io/<project>',
// Cela active l'instrumentation automatique (fortement recommandée),
  // mais n'est pas nécessaire pour une utilisation purement manuelle
  // Si vous souhaitez uniquement utiliser une instrumentation personnalisée :
  // * Supprimez l'intégration BrowserTracing
  // * ajoutez Sentry.addTracingExtensions() avant votre appel à Sentry.init()
  integrations: [Sentry.browserTracingIntegration()],

  // Nous recommandons d'ajuster cette valeur en production, ou d'utiliser tracesSampler
  // pour un contrôle plus précis
  tracesSampleRate: 1.0,

  // Définissez tracePropagationTargets pour contrôler les URL pour lesquelles le traçage distribué doit être activé
  tracePropagationTargets: ['localhost', /^https:\/\/yourserver\.io\/api/],
});

Installez le package sentry/sentry-laravel avec Composer:

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

Ajouter les rapports Sentry à 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();

Activer Sentry Tracing dans config/sentry.php:

Copied!Click to Copy
// Spécifiez un taux d'échantillonnage fixe :
'traces_sample_rate' => 0.2,
// Ou fournissez un échantillonneur personnalisé :
'traces_sampler' => function (\Sentry\Tracing\SamplingContext $context): float {
    // retournez un nombre entre 0 et 1
},

Exécutez cette commande Artisan pour configurer le Sentry DSN:

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

Installez le package sentry/sentry avec Composer:

Copied!Click to Copy
composer require sentry/sentry

Pour capturer toutes les erreurs, même celle lors du démarrage de votre application, vous devez initialiser le SDK Sentry PHP dès que possible:

Copied!Click to Copy
\Sentry\init(['dsn' => 'https://<key>@sentry.io/<project>',
    // Spécifiez un taux d'échantillonnage fixe :
    'traces_sample_rate' => 0.2,
    // Ou fournissez un échantillonneur personnalisé :
    'traces_sampler' => function (\Sentry\Tracing\SamplingContext $context): float {
        // retournez un nombre entre 0 et 1
    }, ]);

Récupérez le SDK Sentry Python:

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

Configurez votre DSN:

Copied!Click to Copy
import sentry_sdk

sentry_sdk.init(
    "https://<key>@sentry.io/<project>",

    # Définissez traces_sample_rate à 1.0 pour capturer 100%
    # des transactions pour le traçage.
    # Nous recommandons d'ajuster cette valeur en production.
    enable_tracing=True,
    traces_sample_rate=1.0,
)

Récupérez le SDK Sentry React :

Copied!Click to Copy
npm install @sentry/react

Configurez votre DSN:

Copied!Click to Copy
import React from "react";
import ReactDOM from "react-dom";
import * as Sentry from "@sentry/react";
import App from "./App";

Sentry.init({
  dsn: "https://<key>@sentry.io/<project>",
  // Cela permet une instrumentation automatique (fortement recommandée).
  // Si vous souhaitez uniquement utiliser une instrumentation personnalisée :
  // * Supprimez l'intégration BrowserTracing
  // * ajoutez Sentry.addTracingExtensions() avant votre appel à Sentry.init()
  integrations: [
    Sentry.browserTracingIntegration(),
    // Ou, si vous utilisez react router, utilisez l'intégration appropriée
    // Consultez la documentation pour le support des différentes versions de react router
    // https://docs.sentry.io/platforms/javascript/guides/react/configuration/integrations/react-router/
    Sentry.reactRouterV6BrowserTracingIntegration({
      useEffect: React.useEffect,
      useLocation,
      useNavigationType,
      createRoutesFromChildren,
      matchRoutes,
    }),
  ],

  // Pour un contrôle plus précis des transactions envoyées, vous pouvez ajuster cette valeur, ou
  // utiliser tracesSampler
  tracesSampleRate: 1.0,

  // Définissez tracePropagationTargets pour contrôler les URL pour lesquelles le traçage distribué doit être activé
  tracePropagationTargets: ['localhost', /^https:\/\/yourserver\.io\/api/],
});

ReactDOM.render(<App />, document.getElementById("root"));

Ajoutez la gemme sentry-ruby à votre Gemfile:

Copied!Click to Copy
gem "sentry-ruby"

Configurez votre DSN:

Copied!Click to Copy
Sentry.init do |config|
  config.dsn = 'https://<key>@sentry.io/<project>'

  # Définissez une fréquence d'échantillonnage uniforme comprise entre 0,0 et 1,0.
  # Nous recommandons d'ajuster la valeur en production:
  config.traces_sample_rate = 1.0

  # ou l'échantillonnage de contrôle dynamique
  config.traces_sampler = lambda do |sampling_context|
    # Le contexte d'échantillonnage [:contexte de transaction] contient les informations relatives à la transaction.
    # Le contexte d'échantillonnage [:échantillon parent] contient la décision d'échantillonnage du parent de la transaction.
    true # La valeur de retour peut être un booléen ou un nombre flottant compris entre 0,0 et 1,0.
  end
end

Pour utiliser le SDK, initialisez Sentry dans votre point d'entrée Solid index.jsx avant de rendre votre application Solid:

Copied!Click to Copy
// index.jsx / index.tsx

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

// Initialisez le SDK Sentry ici
Sentry.init({
  dsn: "__DSN__",
  integrations: [Sentry.browserTracingIntegration()],

  // Surveillance des performances
  tracesSampleRate: 1.0, //  Capture 100 % des transactions
  // Configurez 'tracePropagationTargets' pour contrôler les URL pour lesquelles la propagation des traces doit être activée.
  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)

Récupérez le SDK Sentry Java:

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

Configurez votre DSN dans application.properties:

Copied!Click to Copy
sentry.dsn=https://<key>@sentry.io/<project>
# Définissez traces_sample_rate à 1.0 pour capturer 100%
# des transactions pour la surveillance des performances.
# Nous recommandons d'ajuster cette valeur en production.
sentry.traces-sample-rate=1.0

Pour utiliser le SDK, initialisez Sentry dans votre point d'entrée Svelte main.js avant de démarrer votre application Svelte:

Copied!Click to Copy
// main.js / main.ts

import App from "./App.svelte";

import * as Sentry from "@sentry/svelte";

// Initialisez le SDK Sentry ici
Sentry.init({
  dsn: "__DSN__",
  release: "my-project-name@2.3.12",

  integrations: [Sentry.browserTracingIntegration()],

  // Nous recommandons d'ajuster cette valeur en production.
  tracesSampleRate: 1.0,

  // Configurez tracePropagationTargets pour contrôler les URL pour lesquelles le traçage distribué doit être activé.
  tracePropagationTargets: ['localhost', /^https:\/\/yourserver\.io\/api/],
});

// Ensuite, initialisez votre application Svelte.
const app = new App({
  target: document.getElementById("app"),
});

export default app;

Pour intégrer Sentry dans votre projet Xcode, spécifiez-le dans votre Podfile, puis exécutez pod install:

Copied!Click to Copy
platform :ios, '9.0'
use_frameworks! # C'est important

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

Initialisez le SDK dès que possible dans le cycle de vie de votre application, par exemple dans votre méthode AppDelegate application:didFinishLaunchingWithOptions:

Copied!Click to Copy
import Sentry // Assurez-vous d'importer 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 // Activer le débogage lors de la première installation est toujours utile.
        // Exemple de taux d'échantillonnage uniforme : capture de 100 % des transactions pour le traçage
        options.tracesSampleRate = 1.0
    }

    return true
}

Récupérez le SDK Sentry Vue:

Copied!Click to Copy
npm install @sentry/vue

Configurez votre 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>"",
  // Cela active l'instrumentation automatique (fortement recommandée),
  // mais n'est pas nécessaire pour une utilisation purement manuelle.
  // Si vous souhaitez uniquement utiliser une instrumentation personnalisée :
  // * Supprimez l'intégration BrowserTracing
  // * Ajoutez Sentry.addTracingExtensions() avant votre appel à Sentry.init()
  integrations: [Sentry.browserTracingIntegration()],

  // Nous recommandons d'ajuster cette valeur en production, ou d'utiliser tracesSampler
  // pour un contrôle plus précis
  tracesSampleRate: 1.0,
  // Configurez tracePropagationTargets pour contrôler les URL pour lesquelles le traçage distribué doit être activé.
  tracePropagationTargets: ['localhost', /^https:\/\/yourserver\.io\/api/],
});

app.mount("#app");

Exécutez simplement cette commande pour vous inscrire et installer Sentry.

Copied!Click to Copy
brew install getsentry/tools/sentry-wizard && sentry-wizard -i android

La quantité de détails fournie dans un ticket @getsentry est juste DINGUE! - informations sur le navigateur - référence à la ligne de code précise - erreur spécifique avec traçage (jusqu'au backend) Et cela n'inclut même pas les replays de session!

James Q Quick

@jamesqquick,

Quelqu'un m'a demandé quel outil j'avais finalement choisi pour surveiller mon application frontend, et c'était @getsentry. Jusqu'à présent, je suis vraiment satisfait de la facilité de configuration et de la possibilité de voir ce qui se passe dans mon application.

Dan Vega

@therealdanvega,

Le plus fou dans tout ça, c'est que j'aurais probablement gardé ce bug pendant des mois sans jamais m'en rendre compte. Je commence à comprendre qu'utiliser Sentry améliore réellement l'expérience utilisateur, car on corrige une multitude de petits problèmes dont on ignorait même l'existence.

Dan Mindru

@d4m1n,

J'adore les détails des erreurs affichées par @getsentry

K.O.O

@Dominus_Kelvin,

J'ai enfin corrigé mon intégration avec @getsentry sur mon site personnel, et franchement, pourquoi ai-je attendu si longtemps ? Cet outil est incroyable.

Kent C. Dodds

@kentcdodds,

J'utilise désormais Sentry tous les jours et je peux enfin profiter de ce que nous avons construit ensemble. Sentry est devenu un outil essentiel pour désencombrer et corriger une application critique pour l'entreprise - vous savez laquelle!

Maciej Walkowiak

@maciejwalkowiak,