Doku
In 2 Minuten eingerichtet.
Ein Script für Websites, die offiziellen Open-Source-SDKs für jede Sprache oder eine einfache JSON-API. Wählen Sie Ihre Plattform.
Schnellstart
- Unter Projekte ein Projekt anlegen und die Plattform wählen.
- Der Assistent zeigt Ihren Schlüssel und Ihre DSN, zum Beispiel
https://3f9c2a7e5b1d4c8a9e6f0b2d7a4c1e85@monitor.agiledeveloper.de/48213. - Je nach Plattform eine der Anleitungen unten befolgen. Bei einem vorhandenen SDK genügt der Tausch der DSN.
- Im Assistenten auf Test-Ereignis senden klicken oder einen echten Fehler auslösen. Sobald „Erstes Ereignis empfangen“ erscheint, sind Sie fertig.
Agile Monitoring ist kompatibel mit den Sentry-SDKs: Der Eingang spricht deren Protokoll (Envelope und Store). Sie nutzen die offiziellen Open-Source-Pakete Ihrer Sprache und tragen nur unsere DSN ein.
Vorhandenes SDK umstellen1 Zeile
Sie nutzen schon ein Sentry-SDK (selbst gehostet oder Cloud)? Dann ersetzen Sie nur die DSN, meist in einer Umgebungsvariablen. Paket, Code und Einstellungen bleiben.
# vorher
SENTRY_DSN=https://abc123@o0.ingest.example.io/123
# nachher
SENTRY_DSN=https://3f9c2a7e5b1d4c8a9e6f0b2d7a4c1e85@monitor.agiledeveloper.de/48213- Angenommen werden Fehler, Meldungen, Cron-Check-ins (werden zu Heartbeats) und Transaktionen (Leistung, ohne Kontingent).
- Replays, Profiling, Anhänge und Logs verwerfen wir kostenlos. Setzen Sie
replaysSessionSampleRateundreplaysOnErrorSampleRateauf0, um Bandbreite zu sparen. - Für Leistungsdaten reicht
tracesSampleRate: 0.1.
Website mit Scriptohne Build
Für jede Website, auch ohne Build-Schritt: eine Zeile vor </body> oder im <head>. Das Script ist klein, setzt keine Cookies und trackt nicht.
<script src="https://monitor.agiledeveloper.de/m.js"
data-schluessel="3f9c2a7e5b1d4c8a9e6f0b2d7a4c1e85"
data-projekt="48213"
data-umgebung="production"
data-release="1.4.0" async></script>Es erfasst Fehler, abgelehnte Promises, console.error und fehlgeschlagene Anfragen (Status ab 500) und sammelt die Schritte davor (Klicks, Navigation, Konsole, Netzwerk). Gleiche Fehler werden entprellt.
Optionale Attribute
data-konsole="aus":console.errornicht erfassendata-netz="aus": fehlgeschlagenefetch/XHR-Anfragen nicht erfassendata-leistung="an": Seitenaufbau und Web Vitals (LCP, INP, CLS, FCP, TTFB) senden, für die Ansicht Leistungdata-endpunkt="/eigener-pfad": über einen eigenen Proxy-Pfad senden, falls Werbeblocker die Adresse sperren
Testen mit Headless-Browsern: Aufrufe von HeadlessChrome, Playwright, Puppeteer, Selenium und bekannten Bots verwirft der Bot-Filter. Wer mit automatisierten Browsern testet, schaltet unter Projekt › Einstellungen › Filter „Bots“ vorübergehend aus oder testet in einem normalen Browser.
Eigene Fehler und Nutzer melden
try {
await bestellen();
} catch (fehler) {
window.agileMonitor?.fehler(fehler, { warenkorb: 3 });
}
// Nutzer zuordnen (wird gekürzt und bereinigt gespeichert)
window.agileMonitor?.nutzer({ id: '4711', email: 'kunde@example.org' });
// Einfache Meldung
window.agileMonitor?.meldung('Zahlung abgebrochen', 'warning');Next.js
Mit dem offiziellen Paket @sentry/nextjs erfassen Sie Browser-, Server- und Edge-Fehler. Ein Konto beim SDK-Hersteller brauchen Sie nicht, withSentryConfig ist optional.
npm install @sentry/nextjsimport * as Sentry from '@sentry/nextjs';
Sentry.init({
dsn: 'https://3f9c2a7e5b1d4c8a9e6f0b2d7a4c1e85@monitor.agiledeveloper.de/48213',
environment: process.env.NODE_ENV,
tracesSampleRate: 0.1, // Leistung, zählt nicht ins Kontingent
});import * as Sentry from '@sentry/nextjs';
export async function register() {
if (process.env.NEXT_RUNTIME === 'nodejs') await import('./sentry.server.config');
if (process.env.NEXT_RUNTIME === 'edge') await import('./sentry.edge.config');
}
export const onRequestError = Sentry.captureRequestError;Lesbare Stacktraces im Browser: Next.js liefert Source Maps standardmäßig nicht aus. Mit productionBrowserSourceMaps: true in next.config lädt Agile Monitoring sie automatisch und zeigt Originaldatei und -zeile. Bedenken Sie, dass Ihr Quelltext damit öffentlich lesbar wird. Das Hochladen von Source Maps ohne Veröffentlichung folgt.
Lieber ohne Paket? Das Script funktioniert auch in Next.js (mit next/script), Serverfehler schicken Sie dann über die JSON-API.
React, Vue, Angular
import * as Sentry from '@sentry/react';
Sentry.init({
dsn: 'https://3f9c2a7e5b1d4c8a9e6f0b2d7a4c1e85@monitor.agiledeveloper.de/48213',
environment: 'production',
release: import.meta.env.VITE_RELEASE,
});import * as Sentry from '@sentry/vue';
const app = createApp(App);
Sentry.init({ app, dsn: 'https://3f9c2a7e5b1d4c8a9e6f0b2d7a4c1e85@monitor.agiledeveloper.de/48213', environment: 'production' });import * as Sentry from '@sentry/angular';
Sentry.init({ dsn: 'https://3f9c2a7e5b1d4c8a9e6f0b2d7a4c1e85@monitor.agiledeveloper.de/48213', environment: 'production' });Node.js und Express
npm install @sentry/nodeconst Sentry = require('@sentry/node');
Sentry.init({
dsn: 'https://3f9c2a7e5b1d4c8a9e6f0b2d7a4c1e85@monitor.agiledeveloper.de/48213',
environment: process.env.NODE_ENV,
});require('./instrument');
const Sentry = require('@sentry/node');
const express = require('express');
const app = express();
// … Ihre Routen …
Sentry.setupExpressErrorHandler(app);
app.listen(3000);Python: Django, FastAPI, Flask
pip install sentry-sdkimport sentry_sdk
sentry_sdk.init(
dsn="https://3f9c2a7e5b1d4c8a9e6f0b2d7a4c1e85@monitor.agiledeveloper.de/48213",
environment="production",
traces_sample_rate=0.1,
)Django, FastAPI, Flask, Celery und weitere Frameworks erkennt das SDK automatisch. Persönliche Daten sendet es standardmäßig nicht; was trotzdem ankommt, bereinigen wir.
PHP und Laravel
composer require sentry/sentry-laravelSENTRY_LARAVEL_DSN=https://3f9c2a7e5b1d4c8a9e6f0b2d7a4c1e85@monitor.agiledeveloper.de/48213use Sentry\Laravel\Integration;
->withExceptions(function (Exceptions $exceptions) {
Integration::handles($exceptions);
})PHP ohne Framework, WordPress, Symfony
// composer require sentry/sentry
\Sentry\init([
'dsn' => 'https://3f9c2a7e5b1d4c8a9e6f0b2d7a4c1e85@monitor.agiledeveloper.de/48213',
'environment' => 'production',
]);Go, Ruby, Java, .NET
import "github.com/getsentry/sentry-go"
err := sentry.Init(sentry.ClientOptions{
Dsn: "https://3f9c2a7e5b1d4c8a9e6f0b2d7a4c1e85@monitor.agiledeveloper.de/48213",
Environment: "production",
})
defer sentry.Flush(2 * time.Second)# Gemfile: gem "sentry-ruby", gem "sentry-rails"
Sentry.init do |config|
config.dsn = "https://3f9c2a7e5b1d4c8a9e6f0b2d7a4c1e85@monitor.agiledeveloper.de/48213"
config.environment = "production"
end# Abhängigkeit: io.sentry:sentry-spring-boot-starter-jakarta
sentry.dsn=https://3f9c2a7e5b1d4c8a9e6f0b2d7a4c1e85@monitor.agiledeveloper.de/48213
sentry.environment=production// dotnet add package Sentry.AspNetCore
builder.WebHost.UseSentry(o =>
{
o.Dsn = "https://3f9c2a7e5b1d4c8a9e6f0b2d7a4c1e85@monitor.agiledeveloper.de/48213";
o.Environment = "production";
});JSON-API (curl, Shell, alles andere)ohne SDK
Für Server ohne SDK: ein Ereignis oder bis zu 100 auf einmal als {"ereignisse": [...]}. Schlüssel per Authorization: Bearer oder Header X-Agile-Schluessel.
curl https://monitor.agiledeveloper.de/api/eingang/v1/ereignisse \
-H "Authorization: Bearer 3f9c2a7e5b1d4c8a9e6f0b2d7a4c1e85" \
-H "Content-Type: application/json" \
-d '{
"level": "error",
"umgebung": "production",
"release": "2.14.0",
"ausnahme": { "typ": "ImportFehler", "wert": "Datei leer", "stack": "…" },
"tags": { "kunde": "nord" }
}'Felder: level, meldung, ausnahme (typ, wert, stack oder frames), umgebung, release, server, transaktion, url, methode, status, nutzer, tags, extra, fingerprint, breadcrumbs. Alles optional außer einer Meldung oder Ausnahme. Details in der API-Doku.
Cronjobs und Heartbeats
Legen Sie unter Heartbeats einen Heartbeat mit Zeitplan an und kopieren Sie die Ping-Adresse. Ping nach dem Lauf, optional Start und Fehlschlag.
# Erfolg melden
0 3 * * * /opt/backup.sh && curl -fsS -m 10 https://monitor.agiledeveloper.de/api/ping/k7Qm2xV9pL4sT8wB
# Start melden (für die maximale Laufzeit) und Exitcode anhängen
0 3 * * * curl -fsS -m 10 https://monitor.agiledeveloper.de/api/ping/k7Qm2xV9pL4sT8wB/start; /opt/backup.sh; curl -fsS -m 10 https://monitor.agiledeveloper.de/api/ping/k7Qm2xV9pL4sT8wB/$?/opt/import.sh 2>&1 | tail -c 10000 | curl -fsS -m 10 --data-binary @- https://monitor.agiledeveloper.de/api/ping/k7Qm2xV9pL4sT8wB[Service]
Type=oneshot
ExecStart=/bin/sh -c '/opt/backup.sh; curl -fsS -m 10 https://monitor.agiledeveloper.de/api/ping/k7Qm2xV9pL4sT8wB/$?'command: ["sh", "-c", "/app/import && wget -qO- https://monitor.agiledeveloper.de/api/ping/k7Qm2xV9pL4sT8wB || wget -qO- https://monitor.agiledeveloper.de/api/ping/k7Qm2xV9pL4sT8wB/fail"]Mit einem SDK (Check-ins)
Cron-Check-ins der Sentry-SDKs werden automatisch zu Heartbeats, der Zeitplan kommt aus monitor_config. Per curl ohne Heartbeat-Anlage:
curl "https://monitor.agiledeveloper.de/api/48213/cron/nachtlauf/3f9c2a7e5b1d4c8a9e6f0b2d7a4c1e85/?status=ok"Releases und Umgebungen
Geben Sie bei jedem Deploy ein release und eine environment (bzw. data-release und data-umgebung) mit. Dann sehen Sie, seit welchem Release ein Fehler auftritt, und Agile Monitoring erkennt Rückfälle, wenn ein erledigter Fehler in einem neueren Release wiederkommt.
Deploys melden Sie zusätzlich über die REST-API oder per MCP-Werkzeug release_melden, zum Beispiel aus Ihrer CI. Siehe API-Doku.
Filter: Staging und Lärm ausschließen
Unter Projekt › Einstellungen › Filter schließen Sie Umgebungen (zum Beispiel staging), Releases, bekannte Bots, Browser-Erweiterungen, „Script error.“ ohne Ort, localhost und eigene Muster aus. Gefilterte Ereignisse zählen nicht ins Kontingent; die App zeigt, wie viele herausgefiltert wurden.
Für das Browser-Script können Sie erlaubte Herkunfts-Domains festlegen, damit niemand Ihren Schlüssel auf fremden Seiten nutzt.
Grenzen und Fehlerbehebung
- Antwort 429: Spitzenschutz oder Kontingent erreicht. Die Antwort enthält
Retry-After, die SDKs pausieren von selbst. Je Projekt sind im Tarif Team bis zu 3.000 Ereignisse pro Minute möglich. - Antwort 401 oder 403: Schlüssel fehlt, ist falsch oder widerrufen, oder das Projekt ist archiviert. Die Antwort sagt, was genau fehlt.
- Nichts kommt an aus automatisierten Tests: Headless-Browser (HeadlessChrome, Playwright, Puppeteer, Selenium) gelten als Bot und werden gefiltert, die Antwort ist trotzdem 200. Filter „Bots“ im Projekt vorübergehend ausschalten.
- Nichts kommt an: DSN prüfen (Schlüssel vor dem @, Nummer am Ende), Firewall für ausgehendes HTTPS zu monitor.agiledeveloper.de öffnen, Filter des Projekts prüfen.
- Größen: bis 1 MB komprimiert bzw. 10 MB entpackt je Sendung.
Bereit? Projekt anlegen.
Kostenlos starten, 14 Tage Team testen, ohne Kreditkarte.
14 Tage Team testen, ohne Kreditkarte · Danach kostenlos weiter oder Tarif wählen · Monatlich kündbar