n8n Monitoring & Alerts: Fehler automatisch an Microsoft Teams senden
n8n Monitoring & Alerts: Fehler automatisch an Microsoft Teams senden
In diesem Leitfaden zeige ich dir, wie du n8n-Fehler automatisch in Microsoft Teams versendest – sauber formatiert, mit Kontext zur fehlgeschlagenen Ausführung und robust gegen Rate Limits. Du lernst außerdem sinnvolle Fallback-Optionen (Graph-API, Teams Workflows) kennen und bekommst Best Practices für den Betrieb.
Hinweis: Für Self-Hosting-Grundlagen siehe Setup-Artikel und Härtung/Backups
Warum das Ganze?
Wenn ein Flow in der Produktion fehlschlägt, zählt jede Minute. Ein zentraler Fehler-Feed in Teams stellt sicher, dass dein Team sofort reagieren kann: mit Link zur n8n-Ausführung, Stacktrace, letztem Node und klaren nächsten Schritten. n8n bringt dafür Error Workflows mit – ein dediziertes Alarm-System, das bei jedem Fehler automatisch startet.
Überblick: Lösungsarchitektur
- n8n Error Workflow mit Error Trigger als Startnode
- Aufbereitung der Fehlerinformationen (Titel, Zusammenfassung, Deep-Link zur Ausführung)
- Versand an Teams über eine der folgenden Optionen:
- Incoming Webhook (einfach & schnell; Microsoft-Hinweise zu Connectors beachten)
- Microsoft Graph API (voller Funktionsumfang, granularere Berechtigungen)
- Teams „Workflows" App (No-Code-Option; „When a Teams webhook request is received")
Voraussetzungen
- n8n-Instanz (Self-hosted oder Cloud) mit Zugriff auf Executions
- Microsoft Teams-Kanal für Alerts
- Für Incoming Webhook: Berechtigung zum Hinzufügen eines Kanalkonnektors (Tenant-Policy prüfen)
- Für Graph API: Azure App Registration, passende Permissions (z.B.
ChannelMessage.Send), Token-Handling
1) Error-Workflow in n8n anlegen
- Neuen Workflow erstellen und Startnode Error Trigger setzen
- Produktions-Workflow öffnen → Settings → Error workflow auswählen
- Speichern – der Error-Workflow startet nun automatisch bei jedem Fehler
Tipp: Der Error Trigger liefert strukturierte Daten wie
execution.id,execution.url,lastNodeExecuted,error.message,error.stack. Bei Trigger-Fehlern weicht die Struktur leicht ab (mehr Daten intrigger{}als inexecution{}).
2) Teams-Empfänger wählen
| Option | Vorteile | Nachteile | Geeignet für |
|---|---|---|---|
| Incoming Webhook | Sehr einfach, schnell, Adaptive Cards möglich | Microsoft 365 Connectors werden schrittweise eingeschränkt/abgeschafft; Tenant-Policy kann blockieren | Schneller Start, PoC |
| Microsoft Graph API | Voller Funktionsumfang, langfristig stabil | Azure-App + Permissions, OAuth Token Handling | Enterprise, Compliance |
| Teams Workflows | No-Code, integrierte Vorlagen | Bindung an Benutzer/Owner, Einschränkungen | Low-Code-Teams, Fachbereiche |
Variante A: Incoming Webhook (einfach & schnell)
Warnung: Microsoft reduziert/ersetzt klassische Connectors schrittweise. Prüfe, ob Incoming Webhook in deinem Tenant noch verfügbar ist.
A1 – Webhook in Teams einrichten
- Im gewünschten Kanal: App hinzufügen → Incoming Webhook → Namen/Icon wählen → Webhook-URL kopieren
- Die URL sicher im n8n Credentials Store ablegen
A2 – n8n Nodes verbinden
- Error Trigger → optional Function (Felder mappen/kürzen) → HTTP Request (POST) zur Webhook-URL
- Header:
Content-Type: application/json
Beispiel: Adaptive Card (kompakt)
{
"type": "message",
"attachments": [
{
"contentType": "application/vnd.microsoft.card.adaptive",
"content": {
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.4",
"body": [
{
"type": "TextBlock",
"size": "Large",
"weight": "Bolder",
"text": "n8n Fehler-Alarm"
},
{
"type": "TextBlock",
"wrap": true,
"text": "${$json.execution.error.message}"
},
{
"type": "TextBlock",
"isSubtle": true,
"wrap": true,
"text": "Workflow: ${$json.workflow.name} • Node: ${$json.execution.lastNodeExecuted}"
},
{
"type": "TextBlock",
"wrap": true,
"text": "Stacktrace (gekürzt): ${$json.execution.error.stack?.slice(0,500) + '…'}"
},
{
"type": "ActionSet",
"actions": [
{
"type": "Action.OpenUrl",
"title": "Execution öffnen",
"url": "${$json.execution.url}"
}
]
}
]
}
}
]
}Test via cURL:
curl -H 'Content-Type: application/json' \
-d '{"text":"Hello from n8n"}' \
https://outlook.office.com/webhook/... # deine Teams-Webhook-URLRate Limits: Bei 429-Antworten Exponential Backoff verwenden. Webhooks haben dokumentierte Grenzwerte.
Variante B: Microsoft Graph API (zukunftssicher)
Wenn Connectors blockiert sind oder du mehr Kontrolle benötigst, versende Nachrichten per Graph API:
- Azure App Registration erstellen, passende Permissions vergeben (z.B.
ChannelMessage.Send/Group.ReadWrite.All), Admin Consent einholen - In n8n: HTTP Request mit OAuth2-Credential zum Graph-Endpoint, z.B.
POST /teams/{team-id}/channels/{channel-id}/messages
Beispiel-Body (vereinfacht):
{
"body": {
"contentType": "html",
"content": "<b>n8n Fehler:</b> {{$json.execution.error.message}}<br/>Workflow: {{$json.workflow.name}}<br/><a href='{{$json.execution.url}}'>Execution öffnen</a>"
}
}Hinweis: Teams hat HTML-Einschränkungen – nicht alle Tags/Styles sind erlaubt.
Konfiguration & Sicherheit
- Secrets/URLs im Credentials Store speichern, niemals im Node hardcoden
- Least Privilege: Für Graph API nur benötigte Permissions vergeben
- PII/Logs: Stacktraces können sensible Daten enthalten → filtern/kürzen
- Rate Limits: Webhook & Graph API drosseln → Backoff/Retry einplanen
- Tenant-Policy: Prüfen, ob Connectors erlaubt oder eingeschränkt sind
Best Practices & häufige Fehlerquellen
- Einen Error-Workflow für mehrere Flows verwenden; Metadaten per Expressions dynamisch generieren
- Trigger-Fehler abfangen: Payload-Struktur unterscheidet sich (Trigger vs. Node)
- Deduplication: Wiederholte Retries nicht mehrfach posten (Hash/Key verwenden)
- Alert-Hygiene: Noise vermeiden (nur „hard fails", Schwellwerte definieren)
- Deep-Links:
execution.urlmitsenden → Ein Klick zur Root Cause
Praxisbeispiel: Minimaler n8n Error-Flow
Nodes:
- Error Trigger
- Set/Function – Felder mappen:
title:n8n Fehler – {{$json.workflow.name}}summary:{{$json.execution.error.message}}executionUrl:{{$json.execution.url}}
- HTTP Request – POST an Teams (Webhook oder Graph)
HTTP Request (Webhook) – Body (Expression aktiviert):
{{
{
"type": "message",
"attachments": [
{
"contentType": "application/vnd.microsoft.card.adaptive",
"content": {
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.4",
"body": [
{ "type": "TextBlock", "size": "Large", "weight": "Bolder", "text": $json.title },
{ "type": "TextBlock", "wrap": true, "text": $json.summary },
{ "type": "ActionSet", "actions": [
{ "type": "Action.OpenUrl", "title": "Execution öffnen", "url": $json.executionUrl }
]}
]
}
}
]
}
}}Alternativen & Fallbacks
- Teams Workflows (Power Automate in Teams): No-Code „When a Teams webhook request is received" – n8n sendet per HTTP → gut für Fachbereiche
- E-Mail/Slack: n8n-Nodes out-of-the-box verfügbar; sinnvoll als Fallback, falls Teams im Tenant eingeschränkt ist
- Observability: Bei vielen Flows zusätzlich Log-Streaming/Monitoring in n8n aktivieren
Häufig gestellte Fragen (FAQ)
Wie bekomme ich den Link zur fehlgeschlagenen Ausführung?
Über execution.url in der Error-Payload. Voraussetzung: Executions werden gespeichert.
Warum werden meine Adaptive Cards beim Incoming Webhook nicht angezeigt?
Struktur prüfen (type: message, attachments[], contentType = AdaptiveCard). Ältere MessageCard-Formate sind teilweise inkompatibel.
Unser Tenant blockiert Connectors – was nun?
Auf Microsoft Graph API umsteigen (App Registration + Permissions) oder Teams Workflows verwenden.
Ich bekomme 429/Throttling-Fehler – was tun?
Bei 429-Antworten Backoff/Retry implementieren (z.B. exponentiell mit Jitter).
Löst der Error Trigger auch bei manuellem Testen aus?
Nein, er reagiert nur auf automatische Workflow-Fehler, nicht bei manuellen Ausführungen.
Fazit
Mit einem zentralen Error-Workflow in n8n und automatischem Versand nach Microsoft Teams hast du einen schnellen, zuverlässigen Incident-Kanal. Für den Start ist der Incoming Webhook am einfachsten – plane jedoch Graph API oder Teams Workflows als nachhaltige Lösung ein.
Nächste Schritte:
- Error-Workflow anlegen und auf Produktions-Workflows anwenden
- Teams-Empfangsweg wählen (Webhook → Graph/Workflows langfristig planen)
- Rate-Limit-sichere Retries/Backoff implementieren
- Alerts regelmäßig auf Verständlichkeit und Umsetzbarkeit prüfen
