Sentry Triage
Sentry-Issues, Ereignisse und verdächtige Commits direkt über die Composio-CLI in den Agenten laden – ohne Kopieren und Einfügen von Stack-Traces.
Verwendung
- Neuer Sentry-Alarm und du möchtest, dass der Agent die Ursache untersucht, nicht nur die Betreffzeile zitiert.
- Diagnose einer Regression: Finde Releases, verdächtigen Commit und betroffene Dateien.
- Erstelle eine Übersicht der „Top 10 ungelösten Issues“ mit Reproduktionshinweisen.
Voraussetzungen
curl -fsSL https://composio.dev/install | bash
composio login
composio link sentry # Auth-Token mit event:read + project:read
Tools entdecken
composio search "get sentry issue" --toolkits sentry
composio search "list events for issue" --toolkits sentry
composio tools list sentry
Häufige Slugs (mit --get-schema überprüfen):
SENTRY_GET_AN_ISSUESENTRY_LIST_AN_ISSUES_EVENTSSENTRY_RETRIEVE_AN_EVENT_FOR_A_PROJECTSENTRY_LIST_A_PROJECTS_ISSUESSENTRY_UPDATE_AN_ISSUE
Ein einzelnes Issue diagnostizieren
- Issue abrufen (über die Kurz-ID wie
PROJ-1F4oder numerische ID):composio execute SENTRY_GET_AN_ISSUE -d '{"issue_id":"PROJ-1F4"}' - Letztes Ereignis holen mit vollständigem Stack + Breadcrumbs:
composio execute SENTRY_LIST_AN_ISSUES_EVENTS \ -d '{"issue_id":"PROJ-1F4","full":true,"limit":1}' - Jeden Frame auf lokale Quelle abbilden. Für jedes
filenameundlinenoim Stack öffnet der Agent die Datei und liest ±20 Zeilen – kein manuelles Kopieren/Einfügen. - Verdächtige Commits prüfen (Sentry hängt diese an, wenn Release-Tracking eingerichtet ist) – mit
git show <sha>lokal anzeigen. - Einen Fix vorschlagen mit Diff, Tests ausführen und – sofern erfolgreich – das Issue als gelöst markieren:
composio execute SENTRY_UPDATE_AN_ISSUE \ -d '{"issue_id":"PROJ-1F4","status":"resolved","statusDetails":{"inNextRelease":true}}'
Batch-Triage
composio execute SENTRY_LIST_A_PROJECTS_ISSUES -d '{
"organization_slug":"acme",
"project_slug":"api",
"query":"is:unresolved age:-24h",
"sort":"freq",
"limit":20
}'
Zur Rangliste mit jq weiterleiten:
composio execute SENTRY_LIST_A_PROJECTS_ISSUES -d '{"organization_slug":"acme","project_slug":"api","query":"is:unresolved"}' \
| jq -r '.[] | "\(.count)\t\(.shortId)\t\(.title)"' | sort -rn | head
Workflow-Datei
scripts/sentry-diag.ts, ausführen mit composio run --file scripts/sentry-diag.ts -- --id PROJ-1F4:
const id = process.argv[process.argv.indexOf("--id") + 1];
const issue = await execute("SENTRY_GET_AN_ISSUE", { issue_id: id });
const [event] = await execute("SENTRY_LIST_AN_ISSUES_EVENTS", {
issue_id: id, full: true, limit: 1
});
const frames = (event?.entries ?? [])
.filter(e => e.type === "exception")
.flatMap(e => e.data.values.flatMap(v => v.stacktrace?.frames ?? []))
.filter(f => f.inApp)
.map(f => ({ file: f.filename, line: f.lineno, fn: f.function }));
console.log(JSON.stringify({ title: issue.title, culprit: issue.culprit, frames }, null, 2));
Der Agent liest dann jede file bei line ± 20 und entwirft einen Patch.
Weiterleitung an Linear / Slack
Tools verketten, um für das oberste ungelöste Issue ein Ticket zu öffnen:
composio run '
const [top] = await execute("SENTRY_LIST_A_PROJECTS_ISSUES", {
organization_slug: "acme", project_slug: "api",
query: "is:unresolved", sort: "freq", limit: 1
});
await execute("LINEAR_CREATE_ISSUE", {
teamId: "TEAM_ID",
title: `[Sentry] ${top.title}`,
description: `Short ID: ${top.shortId}\nPermalink: ${top.permalink}\nCount: ${top.count}`
});
'
Fehlerbehebung
404 on issue_id→ Verwende die Kurz-ID (PROJ-1F4), nicht den URL-Slug.- Leere Ereignisse → Das Issue wurde gelöst/archiviert; mit
query:"is:resolved"abfragen oderlimiterhöhen. - Fehlender verdächtiger Commit → Release-Tracking ist in Sentry nicht konfiguriert; richte
sentry-cli releasesin CI ein. - Keine
inApp-Frames → Source Maps wurden nicht hochgeladen; der Stack zeigt nur Vendor-Code.
Vollständige CLI-Referenz: docs.composio.dev/docs/cli