Incident Response mit Freigabe
Nachts um drei ist die knappste Ressource nicht Rechenleistung, sondern Aufmerksamkeit. Ein Agent, der Alerts korreliert, Logs liest und einen begründeten Rollback vorschlägt, verkürzt die Zeit bis zur Entscheidung — die Entscheidung selbst trifft weiterhin ein Mensch.
Incident Response mit Agenten verkürzt die Zeit zwischen Alarm und Entscheidung. Der Agent korreliert Alerts, liest Logs und Metriken, prüft die letzten Deployments und legt einen Rollback-Vorschlag mit Begründung vor. Ausgeführt wird er erst nach Freigabe — danach schreibt der Agent das Postmortem aus den Trace-Daten.
1. Ausgangslage
Ein mittelständischer Betrieb mit rund 120 Servern, Monitoring über Prometheus und Grafana, SIEM-Ereignisse aus Wazuh, Rufbereitschaft mit zwei Personen im Wechsel.
| Kennzahl | Wert | Anmerkung |
|---|---|---|
| Alerts je Woche | 340 | nach Deduplizierung |
| davon echte Vorfälle | 6 % | rund 20 Fälle |
| Zeit bis zur ersten Diagnose | 22 min | Median, nachts deutlich länger |
| Postmortems geschrieben | 35 % | der Rest bleibt undokumentiert |
Die letzte Zeile ist die teuerste: Nicht geschriebene Postmortems bedeuten, dass dieselbe Ursache mehrfach auftritt und niemand die Wiederholung erkennt.
2. Agent-Design
- correlate-agent — bündelt Alerts nach Zeitfenster, betroffenem Dienst und Abhängigkeit. Werkzeuge: Prometheus-Abfragen, Wazuh-Alerts, Deployment-Historie. Ausschließlich lesend.
- diagnose-agent — liest Logs rund um den Zeitpunkt, vergleicht mit dem letzten funktionierenden Zustand und formuliert eine Hypothese mit Konfidenz. Größeres Modell, keine Werkzeuge mit Schreibrecht.
- remediate-agent — führt genau vier vordefinierte Maßnahmen aus: Deployment zurückrollen, Dienst neu starten, Node aus dem Loadbalancer nehmen, Skalierung erhöhen. Jede erst nach Freigabe.
- postmortem-agent — erzeugt aus Trace, Alerts und ausgeführten Maßnahmen einen Entwurf nach Ihrer Vorlage.
Guardrails: Der remediate-Agent kennt keine freien Kommandos, sondern nur benannte Maßnahmen mit festen Parametern — kein ssh, keine Shell. Maßnahmen sind auf die Systeme des betroffenen Dienstes begrenzt. Jede Ausführung erzeugt einen Eintrag im Audit-Log mit der Person, die freigegeben hat.
Wir bauen hier keinen selbstheilenden Betrieb. Ein Agent, der nachts eigenmächtig zurückrollt, kann aus einer Teilstörung einen Totalausfall machen. Der Gewinn liegt in der Diagnosezeit, nicht in der Autonomie.
3. Architektur
4. Code
import { defineAgent, step, approval } from "@hostspezial/agent-sdk";
// Der Agent kennt genau diese vier Massnahmen. Kein freies
// Kommando, keine Shell — das ist der eigentliche Guardrail.
const ACTIONS = ["rollback_deployment", "restart_service",
"drain_node", "scale_up"] as const;
export default defineAgent({
name: "incident-responder",
budget: { eur: 0.40, wallClockMs: 600_000 },
async run(ctx, alert) {
const cluster = await step(ctx, "correlate", () =>
ctx.tools.prometheus.window({ service: alert.service, minutes: 30 }));
const hypothesis = await step(ctx, "diagnose", { model: "gross" }, () =>
ctx.reason({ cluster, deployments: ctx.tools.git.recent(alert.service) }));
// Unter 0.7 Konfidenz gibt es keinen Vorschlag, sondern eine
// Zusammenfassung. Ein unsicherer Vorschlag kostet mehr Zeit,
// als er spart — er muss zusaetzlich widerlegt werden.
if (hypothesis.confidence < 0.7) return { summary: hypothesis.text };
const ok = await approval(ctx, {
queue: "oncall", ttlMinutes: 30,
proposal: { action: hypothesis.action, reason: hypothesis.text },
});
if (!ok.approved) return { status: "declined", by: ok.actor };
await step(ctx, "remediate", { idempotencyKey: `${ctx.runId}:fix` }, () =>
ctx.tools.ops.execute(hypothesis.action, { service: alert.service }));
return step(ctx, "postmortem", () => ctx.writePostmortem(ctx.runId));
},
});
5. Ergebnis
Die mittlere Zahl bedeutet nicht, dass 62 Prozent der Alerts ignoriert werden. Sie bedeutet, dass der Agent sie korreliert, als bekanntes Muster einordnet und gebündelt in den Morgenbericht schreibt — statt jemanden zu wecken. Jeder dieser Fälle bleibt im Trace nachvollziehbar.
… Störungen, deren Ursache außerhalb der instrumentierten Systeme liegt — ein Netzproblem beim Provider sieht der Agent nur als Symptom. … Erstvorfällen ohne Vergleichsdaten: Die Diagnosequalität hängt an der Historie. … Umgebungen ohne saubere Deployment-Historie; ohne die Frage „was hat sich zuletzt geändert“ fällt der wichtigste Hinweis weg. Und der Agent ersetzt keine Rufbereitschaft — er bereitet ihre Entscheidung vor.
Verwandte Seiten
Erst mitlesen, dann mitentscheiden
Wir schalten den Agenten zunächst nur beobachtend auf Ihre Alerts. Nach vier Wochen vergleichen Sie seine Diagnosen mit dem, was Ihr Team tatsächlich gefunden hat — und entscheiden dann über Aktionsrechte.