Moniteur de journal d'erreurs avec des alertes Slack et création automatique de tickets d'erreur
Ceci est unDevOpsworkflow d'automatisation du domainecontenant 20 nœuds.Utilise principalement des nœuds comme If, Set, Ssh, Code, Jira. Moniteur de journaux d'erreurs avec alertes Slack et création de tickets Jira
- •Token Bot Slack ou URL Webhook
Nœuds utilisés (20)
Catégorie
{
"id": "VbL8CupBzmcRolP4",
"meta": {
"instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
"templateCredsSetupCompleted": true
},
"name": "Error Log Monitor with Slack Alerts & Auto Bug Ticket Creation",
"tags": [],
"nodes": [
{
"id": "44f0eba7-b92a-47f0-a7b0-c90eb5d9e8f0",
"name": "Déclencheur manuel",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-480,
60
],
"parameters": {},
"typeVersion": 1
},
{
"id": "19a920cb-28da-4388-80f2-a1b7bd87badb",
"name": "Définir la configuration",
"type": "n8n-nodes-base.set",
"position": [
-260,
160
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "cf9f1b38-541c-4311-9fea-c66d7fd39473",
"name": "Lire les journaux d'erreurs",
"type": "n8n-nodes-base.ssh",
"position": [
-40,
160
],
"parameters": {
"command": "tail -n 50 /var/log/application/error.log | grep -E '(CRITICAL|ERROR|FATAL)' || echo 'No critical errors found'",
"authentication": "privateKey"
},
"credentials": {
"sshPrivateKey": {
"id": "ilPh8oO4GfSlc0Qy",
"name": "SSH Password account - test "
}
},
"typeVersion": 1
},
{
"id": "87962f71-2a7b-4913-b660-c3b1d7ee328d",
"name": "Analyser les journaux",
"type": "n8n-nodes-base.code",
"position": [
400,
160
],
"parameters": {
"jsCode": "const logOutput = $input.first().json.stdout || '';\nconst lines = logOutput.split('\\n').filter(line => line.trim() !== '' && line !== 'No critical errors found');\n\nconst errors = [];\n\nlines.forEach((line, index) => {\n let errorLevel = 'ERROR';\n \n if (line.includes('CRITICAL') || line.includes('FATAL')) {\n errorLevel = 'CRITICAL';\n }\n \n const timestamp = new Date().toISOString();\n const errorId = `ERR-${Date.now()}-${index}`;\n \n errors.push({\n id: errorId,\n level: errorLevel,\n message: line.trim(),\n timestamp: timestamp,\n raw_log: line\n });\n});\n\nreturn errors.map(error => ({ json: error }));"
},
"typeVersion": 2
},
{
"id": "093e59c5-8c25-4c70-9f61-418cfded5f40",
"name": "SI erreur critique",
"type": "n8n-nodes-base.if",
"position": [
620,
160
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "={{ $json.level }}",
"operation": "equal",
"rightValue": "CRITICAL"
}
}
},
"typeVersion": 2
},
{
"id": "0ca2c626-4dd7-42f8-837d-559c9df7657b",
"name": "Envoyer une alerte Slack",
"type": "n8n-nodes-base.slack",
"position": [
840,
-180
],
"webhookId": "a6dc2a87-e06c-463e-b63c-c08f8bf457ca",
"parameters": {
"text": "🚨 CRITICAL ERROR DETECTED",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "C0987654"
},
"otherOptions": {}
},
"credentials": {
"slackApi": {
"id": "MQ0fgwuS8AzfwFvy",
"name": "Slack account - test "
}
},
"typeVersion": 2
},
{
"id": "05e1b571-702b-4744-a3b7-38300058e3ff",
"name": "Créer un ticket Jira",
"type": "n8n-nodes-base.jira",
"position": [
840,
160
],
"parameters": {
"project": {
"mode": "name",
"value": "BUG"
},
"summary": "Critical Error: {{ $json.id }}",
"issueType": {
"mode": "name",
"value": "Bug"
},
"additionalFields": {
"labels": [
"auto-generated",
"critical-error"
],
"priority": {
"mode": "name",
"value": "Highest"
},
"description": "**Error Details:**\\n\\nError ID: {{ $json.id }}\\nLevel: {{ $json.level }}\\nTimestamp: {{ $json.timestamp }}\\n\\n**Error Message:**\\n```\\n{{ $json.message }}\\n```\\n\\n**Raw Log:**\\n```\\n{{ $json.raw_log }}\\n```\\n\\n*This ticket was automatically created by the Error Monitoring System.*"
}
},
"credentials": {
"jiraSoftwareCloudApi": {
"id": "cP7JyAE1RB0zcBon",
"name": "Jira SW Cloud - test"
}
},
"typeVersion": 1
},
{
"id": "0b13473e-63de-4874-8d9e-843cc8e51c1d",
"name": "Envoyer une alerte non critique",
"type": "n8n-nodes-base.slack",
"position": [
860,
520
],
"webhookId": "7fdc3628-087e-4fc3-ba38-56c54461b293",
"parameters": {
"text": "⚠️ Error Detected: {{ $json.level }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "C098765"
},
"otherOptions": {}
},
"credentials": {
"slackApi": {
"id": "MQ0fgwuS8AzfwFvy",
"name": "Slack account - test "
}
},
"typeVersion": 2
},
{
"id": "4374ae68-f2a2-46f1-82e9-a98e3dc7886f",
"name": "Attendre tous les journaux",
"type": "n8n-nodes-base.wait",
"position": [
180,
160
],
"webhookId": "fdde8463-2899-4169-891b-7a5df07b4f34",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "d90c28f1-6013-4e04-b676-7f8d831ab1d3",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-280,
40
],
"parameters": {
"color": 5,
"width": 160,
"height": 280,
"content": "Configures basic parameters"
},
"typeVersion": 1
},
{
"id": "7e3948e4-5ac8-4a98-a45d-5c8097208b46",
"name": "Note adhésive1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-500,
-20
],
"parameters": {
"color": 4,
"width": 150,
"height": 220,
"content": "For testing"
},
"typeVersion": 1
},
{
"id": "702b64fb-c7b9-44b6-9d5f-d3597a2d366b",
"name": "Note adhésive2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-500,
300
],
"parameters": {
"color": 3,
"width": 150,
"height": 220,
"content": "Runs every 5 minutes automatically"
},
"typeVersion": 1
},
{
"id": "0ba8b489-3f92-4d0a-93f7-121aaca95771",
"name": "Planifier toutes les 5 min",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-480,
380
],
"parameters": {
"rule": {
"interval": [
{
"field": "minutes"
}
]
}
},
"typeVersion": 1
},
{
"id": "2250de6b-468a-49bb-a6ef-76be482fe3a9",
"name": "Note adhésive3",
"type": "n8n-nodes-base.stickyNote",
"position": [
360,
40
],
"parameters": {
"color": 3,
"width": 160,
"height": 280,
"content": "JavaScript code to parse and categorize errors"
},
"typeVersion": 1
},
{
"id": "2231a875-1367-47d0-aab0-7a4fcc03fe5c",
"name": "Note adhésive4",
"type": "n8n-nodes-base.stickyNote",
"position": [
140,
40
],
"parameters": {
"color": 6,
"width": 160,
"height": 280,
"content": "Wait for all error logs read"
},
"typeVersion": 1
},
{
"id": "f3c58543-431e-40aa-9e30-f5bc0a181c0d",
"name": "Note adhésive5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-60,
40
],
"parameters": {
"width": 160,
"height": 280,
"content": "SSH into server and reads error logs"
},
"typeVersion": 1
},
{
"id": "8e5766d8-d40b-4867-8a17-88fdf9a40b29",
"name": "Note adhésive6",
"type": "n8n-nodes-base.stickyNote",
"position": [
840,
400
],
"parameters": {
"color": 5,
"width": 160,
"height": 260,
"content": "Sends simple alert for non-critical errors"
},
"typeVersion": 1
},
{
"id": "c71bc4f9-a96e-4b08-beba-5b3c3bce86c7",
"name": "Note adhésive7",
"type": "n8n-nodes-base.stickyNote",
"position": [
820,
40
],
"parameters": {
"width": 160,
"height": 260,
"content": "Auto-creates bug ticket for critical errors"
},
"typeVersion": 1
},
{
"id": "fa119483-66e9-40e5-9e50-4837807f50e0",
"name": "Note adhésive8",
"type": "n8n-nodes-base.stickyNote",
"position": [
800,
-300
],
"parameters": {
"color": 6,
"width": 160,
"height": 280,
"content": " Sends detailed alert for critical errors"
},
"typeVersion": 1
},
{
"id": "7f07dd84-a237-4b62-9e32-7b431c844152",
"name": "Note adhésive9",
"type": "n8n-nodes-base.stickyNote",
"position": [
580,
40
],
"parameters": {
"color": 4,
"width": 160,
"height": 280,
"content": "Filters critical errors from regular errors\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "9ee70159-d6b0-4271-bda9-3ab79401d38e",
"connections": {
"87962f71-2a7b-4913-b660-c3b1d7ee328d": {
"main": [
[
{
"node": "093e59c5-8c25-4c70-9f61-418cfded5f40",
"type": "main",
"index": 0
}
]
]
},
"19a920cb-28da-4388-80f2-a1b7bd87badb": {
"main": [
[
{
"node": "cf9f1b38-541c-4311-9fea-c66d7fd39473",
"type": "main",
"index": 0
}
]
]
},
"44f0eba7-b92a-47f0-a7b0-c90eb5d9e8f0": {
"main": [
[
{
"node": "19a920cb-28da-4388-80f2-a1b7bd87badb",
"type": "main",
"index": 0
}
]
]
},
"cf9f1b38-541c-4311-9fea-c66d7fd39473": {
"main": [
[
{
"node": "4374ae68-f2a2-46f1-82e9-a98e3dc7886f",
"type": "main",
"index": 0
}
]
]
},
"0ca2c626-4dd7-42f8-837d-559c9df7657b": {
"main": [
[]
]
},
"093e59c5-8c25-4c70-9f61-418cfded5f40": {
"main": [
[
{
"node": "0ca2c626-4dd7-42f8-837d-559c9df7657b",
"type": "main",
"index": 0
},
{
"node": "05e1b571-702b-4744-a3b7-38300058e3ff",
"type": "main",
"index": 0
}
],
[
{
"node": "0b13473e-63de-4874-8d9e-843cc8e51c1d",
"type": "main",
"index": 0
}
]
]
},
"4374ae68-f2a2-46f1-82e9-a98e3dc7886f": {
"main": [
[
{
"node": "87962f71-2a7b-4913-b660-c3b1d7ee328d",
"type": "main",
"index": 0
}
]
]
},
"05e1b571-702b-4744-a3b7-38300058e3ff": {
"main": [
[]
]
},
"0ba8b489-3f92-4d0a-93f7-121aaca95771": {
"main": [
[
{
"node": "19a920cb-28da-4388-80f2-a1b7bd87badb",
"type": "main",
"index": 0
}
]
]
},
"0b13473e-63de-4874-8d9e-843cc8e51c1d": {
"main": [
[]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - DevOps
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Oneclick AI Squad
@oneclick-aiThe AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.
Partager ce workflow