Fehlerüberwachung

Erhalte umsetzbare Einblicke, um die wichtigsten codebezogenen Probleme zu beheben. Verfolge, debugge und behebe Fehler in jeder Sprache oder jedem Framework mit maßgeschneidertem Kontext, um jedes Mal die Ursache zu finden.

Von 4 Millionen Entwicklern toleriert.

Alle Tools, die du benötigst, um fehlerhaften Code schnell zu beheben

Verschwende keine Zeit mit der Reproduktion von Fehlern. Erhalte Kontext wie die Codezeile, Benutzeraktionen und Funktionen, die zum Fehler führen, um ihn schnell zu debuggen und zu beheben.
Wisse, wann dein Code ausfällt und wer bei der Behebung helfen kann. Weise Probleme automatisch dem Entwickler zu, der den fehlerhaften Code verursacht hat, und benachrichtige dein Team über Slack, wenn der Fehler zum ersten Mal auftritt, wiederkehrt oder sich verschlimmert.
Erhalte sofortige Transparenz über alle Releases hinweg, mit Einblicken in Kernmetriken wie absturzfreie Sitzungen, Versionsakzeptanz und Fehlerraten. Erkenne, wann sich ein Release zu verschlechtern beginnt, damit du schnell zurücksetzen kannst… falls nötig.
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

Der Einstieg bei Sentry ist einfach

Wir unterstützen jede Technologie (außer die, die wir nicht unterstützen). Leg mit nur wenigen Codezeilen los.

Registriere dich und installiere Sentry mit nur einer Codezeile:

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

Schnappen Sie sich das Sentry Go SDK:

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

Die Konfiguration sollte so früh wie möglich im Lebenszyklus Ihrer Anwendung erfolgen:

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,
		// Geben Sie eine feste Abtastrate an:
		// Wir empfehlen, diesen Wert in der Produktion anzupassen
		TracesSampleRate: 1.0,
		// Oder geben Sie eine benutzerdefinierte Abtastrate an:
		TracesSampler: sentry.TracesSampler(func(ctx sentry.SamplingContext) float64 {
			// Als Beispiel sendet dies einige
			// Transaktionen basierend auf ihrem Namen nicht an Sentry.
			if ctx.Span.Name == "GET /health" {
				return 0.0
			}

			return 1.0
		}),
	})
	if err != nil {
		log.Fatalf("sentry.Init: %s", err)
	}
	// Gepufferte Ereignisse leeren, bevor das Programm beendet wird.
	// Legen Sie das Timeout auf die maximale Dauer fest, die das Programm warten kann.
	defer sentry.Flush(2 * time.Second)
}

Installation mit einer Codezeile:

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

Fügen Sie die Sentry-Abhängigkeit hinzu:

Copied!Click to Copy
dotnet add package Sentry.AspNetCore

Konfigurieren Sie Sentry in appsettings.json.:

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

Fügen Sie dann das SDK hinzu, indem Sie einfach „UseSentry“ aufrufen:

Copied!Click to Copy
public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            // Fügen Sie die folgende Zeile hinzu:
            webBuilder.UseSentry();
        });

Führen Sie einfach diesen Befehl aus, um die Astro-Integration von Sentry zu installieren und zu registrieren:

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

Und fügen Sie Ihren DSN und Ihre Projektkonfiguration zu Ihrer Datei astro.config.mjs hinzu:

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,
    }),
  ],
});

Installieren Sie das NuGet-Paket, um die Sentry-Abhängigkeit hinzuzufügen:

Copied!Click to Copy
dotnet add package Sentry

Initialisieren Sie das SDK so früh wie möglich, wie in der Methode Main in Program.cs/Program.fs:

Copied!Click to Copy
using (SentrySdk.Init(o => {
  // Gibt an, an welches Projekt in Sentry Ereignisse gesendet werden sollen:
  o.Dsn = "https://<key>@sentry.io/<project>";
  // Bei der ersten Konfiguration, um zu sehen, was das SDK macht:
  o.Debug = true;
  // Setzen Sie TracesSampleRate auf 1.0, um 100 % der Transaktionen für Tracing zu erfassen.
  // Wir empfehlen, diesen Wert in der Produktion anzupassen.
  o.TracesSampleRate = 1.0; }))
{
  // App-Code kommt hierher - Disposing leert Ereignisse
}

Besorgen Sie sich das Sentry JavaScript SDK:

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

Konfigurieren Sie Ihren DSN:

Copied!Click to Copy
Sentry.init({ dsn: 'https://<key>@sentry.io/<project>',
// Dies ermöglicht automatische Instrumentierung (sehr empfohlen),
  // ist aber nicht für rein manuelle Verwendung erforderlich
  // Wenn Sie nur benutzerdefinierte Instrumentierung verwenden möchten:
  // * Entfernen Sie die BrowserTracing-Integration
  // * fügen Sie Sentry.addTracingExtensions() über Ihrem Sentry.init()-Aufruf hinzu
  integrations: [Sentry.browserTracingIntegration()],

  // Wir empfehlen, diesen Wert in der Produktion anzupassen oder tracesSampler zu verwenden
  // für feinere Kontrolle
  tracesSampleRate: 1.0,

  // Setzen Sie tracePropagationTargets, um zu steuern, für welche URLs verteiltes Tracing aktiviert werden soll
  tracePropagationTargets: ['localhost', /^https:\/\/yourserver\.io\/api/],
});

Installieren Sie das Paket sentry/sentry-laravel mit Composer:

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

Fügen Sie Sentry-Berichte zu bootstrap/app.php hinzu:

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();

Aktivieren Sie Sentry Tracing in config/sentry.php:

Copied!Click to Copy
// Geben Sie eine feste Abtastrate an:
'traces_sample_rate' => 0.2,
// Oder geben Sie einen benutzerdefinierten Sampler an:
'traces_sampler' => function (\Sentry\Tracing\SamplingContext $context): float {
    // geben Sie eine Zahl zwischen 0 und 1 zurück
},

Führen Sie diesen Artisan-Befehl aus, um den Sentry DSN zu konfigurieren:

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

Installieren Sie das Paket sentry/sentry mit Composer:

Copied!Click to Copy
composer require sentry/sentry

Um alle Fehler zu erfassen, auch die beim Start Ihrer Anwendung, sollten Sie das Sentry PHP SDK so schnell wie möglich initialisieren:

Copied!Click to Copy
\Sentry\init(['dsn' => 'https://<key>@sentry.io/<project>',
    // Geben Sie eine feste Abtastrate an:
    'traces_sample_rate' => 0.2,
    // Oder geben Sie einen benutzerdefinierten Sampler an:
    'traces_sampler' => function (\Sentry\Tracing\SamplingContext $context): float {
        // geben Sie eine Zahl zwischen 0 und 1 zurück
    }, ]);

Besorgen Sie sich das Sentry Python SDK:

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

Konfigurieren Sie Ihren DSN:

Copied!Click to Copy
import sentry_sdk

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

    # Setzen Sie traces_sample_rate auf 1.0, um 100 % zu erfassen
    # der Transaktionen für Tracing.
    # Wir empfehlen, diesen Wert in der Produktion anzupassen.
    enable_tracing=True,
    traces_sample_rate=1.0,
)

Schnappen Sie sich das Sentry React SDK:

Copied!Click to Copy
npm install @sentry/react

Konfigurieren Sie Ihren 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>",
  // Dies ermöglicht automatische Instrumentierung (sehr empfohlen)
  // Wenn Sie nur benutzerdefinierte Instrumentierung verwenden möchten:
  // * Entfernen Sie die BrowserTracing-Integration
  // * fügen Sie Sentry.addTracingExtensions() über Ihrem Sentry.init()-Aufruf hinzu
  integrations: [
    Sentry.browserTracingIntegration(),
    // Oder, wenn Sie React Router verwenden, verwenden Sie die entsprechende Integration
    // Siehe Dokumentation für Unterstützung verschiedener Versionen von React Router
    // https://docs.sentry.io/platforms/javascript/guides/react/configuration/integrations/react-router/
    Sentry.reactRouterV6BrowserTracingIntegration({
      useEffect: React.useEffect,
      useLocation,
      useNavigationType,
      createRoutesFromChildren,
      matchRoutes,
    }),
  ],

  // Für eine feinere Kontrolle der gesendeten Transaktionen können Sie diesen Wert anpassen oder
  // tracesSampler verwenden
  tracesSampleRate: 1.0,

  // Setzen Sie tracePropagationTargets, um zu steuern, für welche URLs verteiltes Tracing aktiviert werden soll
  tracePropagationTargets: ['localhost', /^https:\/\/yourserver\.io\/api/],
});

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

Fügen Sie den Edelstein sentry-ruby zu Ihrer Gemfile hinzu:

Copied!Click to Copy
gem "sentry-ruby"

Konfigurieren Sie Ihren DSN:

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

  # Legen Sie eine einheitliche Abtastrate zwischen 0,0 und 1,0 fest
  # Wir empfehlen, den Wert in der Produktion anzupassen:
  config.traces_sample_rate = 1.0

  # oder die Stichprobenentnahme dynamisch steuern
  config.traces_sampler = lambda do |sampling_context|
    # sampling_context[:transaction_context] enthält die Informationen über die Transaktion
    # sampling_context[:parent_sampled] enthält die Stichprobenentscheidung des übergeordneten Elements der Transaktion
    true # Rückgabewert kann ein boolescher Wert oder ein Float zwischen 0,0 und 1,0 sein
  end
end

Um das SDK zu verwenden, initialisieren Sie Sentry in Ihrem Solid-Einstiegspunkt index.jsx, bevor Sie Ihre Solid-App rendern:

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";

// Initialisieren Sie das Sentry SDK hier
Sentry.init({
  dsn: "__DSN__",
  integrations: [Sentry.browserTracingIntegration()],

  // Leistungsüberwachung
  tracesSampleRate: 1.0, //  Erfassen Sie 100 % der Transaktionen
  // Setzen Sie 'tracePropagationTargets', um zu steuern, für welche URLs die Trace-Weitergabe aktiviert werden soll
  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)

Besorgen Sie sich das Sentry Java SDK:

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

Konfigurieren Sie Ihren DSN in application.properties.:

Copied!Click to Copy
sentry.dsn=https://<key>@sentry.io/<project>
# Setzen Sie traces_sample_rate auf 1.0, um 100 % zu erfassen
# der Transaktionen zur Leistungsüberwachung.
# Wir empfehlen, diesen Wert in der Produktion anzupassen.
sentry.traces-sample-rate=1.0

Um das SDK zu verwenden, initialisieren Sie Sentry in Ihrem Svelte-Einstiegspunkt main.js, bevor Sie Ihre Svelte-App booten:

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

import App from "./App.svelte";

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

// Initialisieren Sie das Sentry SDK hier
Sentry.init({
  dsn: "__DSN__",
  release: "my-project-name@2.3.12",

  integrations: [Sentry.browserTracingIntegration()],

  // Wir empfehlen, diesen Wert in der Produktion anzupassen
  tracesSampleRate: 1.0,

  // Setzen Sie tracePropagationTargets, um zu steuern, für welche URLs verteiltes Tracing aktiviert werden soll
  tracePropagationTargets: ['localhost', /^https:\/\/yourserver\.io\/api/],
});

// Dann starten Sie Ihre Svelte-App
const app = new App({
  target: document.getElementById("app"),
});

export default app;

Um Sentry in Ihr Xcode-Projekt zu integrieren, geben Sie es in Ihrer Podfile an und führen Sie dann pod install aus:

Copied!Click to Copy
platform :ios, '9.0'
use_frameworks! # Das ist wichtig

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

Initialisieren Sie das SDK so schnell wie möglich in Ihrem Anwendungslebenszyklus, z. B. in Ihrer AppDelegate-Methode application:didFinishLaunchingWithOptions.:

Copied!Click to Copy
import Sentry // Stellen Sie sicher, dass Sie Sentry importieren

func application(_ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    SentrySDK.start { options in
        options.dsn = "https://<key>@sentry.io/<project>"
        options.debug = true // Die Aktivierung von Debug bei der ersten Installation ist immer hilfreich
        // Beispiel einheitliche Abtastrate: 100 % der Transaktionen für Tracing erfassen
        options.tracesSampleRate = 1.0
    }

    return true
}

Schnappen Sie sich das Sentry Vue SDK:

Copied!Click to Copy
npm install @sentry/vue

Konfigurieren Sie Ihren 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>"",
  // Dies ermöglicht automatische Instrumentierung (sehr empfohlen),
  // ist aber nicht für rein manuelle Verwendung erforderlich
  // Wenn Sie nur benutzerdefinierte Instrumentierung verwenden möchten:
  // * Entfernen Sie die BrowserTracing-Integration
  // * fügen Sie Sentry.addTracingExtensions() über Ihrem Sentry.init()-Aufruf hinzu
  integrations: [Sentry.browserTracingIntegration()],

  // Wir empfehlen, diesen Wert in der Produktion anzupassen oder tracesSampler zu verwenden
  // für feinere Kontrolle
  tracesSampleRate: 1.0,
  // Setzen Sie tracePropagationTargets, um zu steuern, für welche URLs verteiltes Tracing aktiviert werden soll
  tracePropagationTargets: ['localhost', /^https:\/\/yourserver\.io\/api/],
});

app.mount("#app");

Führen Sie einfach diesen Befehl aus, um sich bei Sentry anzumelden und es zu installieren:

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

Die Menge an Details, die du bei einem @getsentry Problem bekommst, ist WAHNSINNNN - Browser-Infos - Verweis auf eine bestimmte Codezeile - Spezifischer Fehler mit Tracing (bis zum Backend) Das deckt nicht einmal Sitzungswiedergaben ab!

James Q Quick

@jamesqquick,

Jemand hat gefragt, welches Tool ich zur Überwachung meiner Frontend-Anwendung gewählt habe, und es war @getsentry. Bisher bin ich wirklich zufrieden damit, wie einfach die Einrichtung war und mit der Möglichkeit, zu sehen, was in meiner Anwendung passiert.

Dan Vega

@therealdanvega,

Das Verrückteste daran ist, dass ich diesen Bug wahrscheinlich monatelang gehabt hätte und nie davon gewusst hätte. Mir wird langsam klar, dass Sentry letztendlich zu einer besseren UX führt, weil man so viele dieser kleinen Fehler behebt, von denen man nicht wusste, dass man sie hat.

Dan Mindru

@d4m1n,

Okay, ich liebe die Details der @getsentry Fehler

K.O.O

@Dominus_Kelvin,

Ich habe endlich meine Integration mit @getsentry auf meiner persönlichen Seite repariert und, meine Güte, warum habe ich so lange damit gewartet? Das Ding ist unglaublich.

Kent C. Dodds

@kentcdodds,

Ich benutze Sentry jetzt jeden Tag und kann endlich nutzen, was wir zusammen entwickelt haben. Sentry ist zu einem entscheidenden Werkzeug geworden, um die geschäftskritische App zu optimieren und zu reparieren, du weißt schon wo!

Maciej Walkowiak

@maciejwalkowiak,