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
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:
npx @sentry/wizard@latest -i nextjsRécupérez le SDK Sentry Go:
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:
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:
npx @sentry/wizard@latest -i angularAjoutez la dépendance Sentry:
dotnet add package Sentry.AspNetCoreConfigurez Sentry dans appsettings.json:
"Sentry": {
"Dsn": "https://examplePublicKey@o0.ingest.sentry.io/0",
"Debug": true,
},Ajoutez ensuite le SDK en appelant simplement UseSentry
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:
npx astro add @sentry/astroEt ajoutez votre DSN et la configuration de votre projet à votre fichier 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,
}),
],
});Installez le package NuGet pour ajouter la dépendance Sentry:
dotnet add package SentryInitialisez le SDK le plus tôt possible, comme dans la méthode Main dans Program.cs/Program.fs:
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:
<script src="https://browser.sentry-cdn.com/<VERSION>/bundle.min.js"></script>Configurez votre DSN:
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:
composer require sentry/sentry-laravelAjouter les rapports Sentry à 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();Activer Sentry Tracing dans config/sentry.php:
// 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:
php artisan sentry:publish --dsn=<paste-your-DSN-here>Installez le package sentry/sentry avec Composer:
composer require sentry/sentryPour 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:
\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:
pip install --upgrade sentry-sdkConfigurez votre DSN:
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 :
npm install @sentry/reactConfigurez votre DSN:
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:
gem "sentry-ruby"Configurez votre DSN:
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
endPour utiliser le SDK, initialisez Sentry dans votre point d'entrée Solid index.jsx avant de rendre votre application Solid:
// 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:
<dependency>
<groupId>io.sentry</groupId>
<artifactId>sentry-spring-boot-starter</artifactId>
<version><VERSION></version>
</dependency>Configurez votre DSN dans application.properties:
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.0Pour utiliser le SDK, initialisez Sentry dans votre point d'entrée Svelte main.js avant de démarrer votre application Svelte:
// 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:
platform :ios, '9.0'
use_frameworks! # C'est important
target 'YourApp' do
pod 'Sentry', :git => 'https://github.com/getsentry/sentry-cocoa.git', :tag => '<VERSION>'
endInitialisez le SDK dès que possible dans le cycle de vie de votre application, par exemple dans votre méthode AppDelegate application:didFinishLaunchingWithOptions:
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:
npm install @sentry/vueConfigurez votre DSN :
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.
brew install getsentry/tools/sentry-wizard && sentry-wizard -i androidLa 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!
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.
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.
J'adore les détails des erreurs affichées par @getsentry
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.
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!