Automatisation n8n : surveillance des ressources serveur par email
Ce workflow n8n a pour objectif de surveiller les ressources d'un serveur, notamment l'utilisation de la RAM, du disque et du CPU, et d'envoyer des alertes par email en cas de dépassement de seuils critiques. Dans un contexte métier où la performance des serveurs est cruciale, cette automatisation n8n permet d'anticiper les problèmes avant qu'ils n'affectent les opérations. Les cas d'usage incluent la gestion des infrastructures IT, le monitoring des performances et la prévention des pannes. Étape 1 : Le workflow commence par un déclencheur programmé qui active la vérification des ressources à intervalles réguliers. Étape 2 : Les noeuds SSH sont utilisés pour exécuter des commandes qui vérifient l'utilisation de la RAM, du disque et du CPU. Étape 3 : Les résultats de ces vérifications sont ensuite fusionnés pour une analyse globale. Étape 4 : Une condition vérifie si les résultats dépassent les seuils définis. Si c'est le cas, un email est envoyé pour alerter l'équipe technique. Grâce à cette automatisation, les entreprises peuvent réduire les temps d'arrêt, améliorer la réactivité face aux incidents et optimiser la gestion de leurs ressources informatiques. Tags clés : automatisation, monitoring, serveurs.
Vue d'ensemble du workflow n8n
Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.
Détail des nœuds du workflow n8n
Inscris-toi pour voir l'intégralité du workflow
Inscription gratuite
S'inscrire gratuitementBesoin d'aide ?{
"nodes": [
{
"id": "ba168090-4727-4b72-a0cf-3f15ef3a9f17",
"name": "Send Email",
"type": "n8n-nodes-base.emailSend",
"position": [
580,
360
],
"parameters": {
"text": "=System resources are above the threshold.\n\nCPU: {{ $json.CPU.toNumber().round(2) }}%\nRAM: {{ $json.RAM.toNumber().round(2) }}%\nDisk: {{ $json.Disk.toNumber().round(2) }}%",
"options": {},
"subject": "System Resource Alert",
"toEmail": "change@me.com",
"fromEmail": "change@me.com"
},
"credentials": {
"smtp": {
"id": "EuaQtRc5t8pWPY9b",
"name": "SMTP account"
}
},
"typeVersion": 1
},
{
"id": "79afc30f-c3db-4ba1-8f0d-a1000b5e0abe",
"name": "Check RAM usage",
"type": "n8n-nodes-base.ssh",
"position": [
160,
40
],
"parameters": {
"command": "free | awk '/Mem:/ {printf \"%.2f\", (1 - $7/$2) * 100}'"
},
"credentials": {
"sshPassword": {
"id": "VMCCUQkaq46q3CpB",
"name": "SSH Password account"
}
},
"executeOnce": false,
"typeVersion": 1
},
{
"id": "d09aa314-8d60-42a8-9933-d7e8d73e2c7d",
"name": "Check Disk usage",
"type": "n8n-nodes-base.ssh",
"position": [
380,
40
],
"parameters": {
"command": "df -h | awk '$NF==\"/\"{printf \"%.2f\", $5}'"
},
"credentials": {
"sshPassword": {
"id": "VMCCUQkaq46q3CpB",
"name": "SSH Password account"
}
},
"executeOnce": false,
"typeVersion": 1
},
{
"id": "bc6a0df2-f4cc-484a-ac39-c92e8795175e",
"name": "Check CPU usage",
"type": "n8n-nodes-base.ssh",
"position": [
580,
40
],
"parameters": {
"command": "top -bn 1 | grep \"Cpu(s)\" | sed \"s/.*, *\\([0-9.]*\\)%* id.*/\\1/\" | awk '{print 100 - $1}'"
},
"credentials": {
"sshPassword": {
"id": "VMCCUQkaq46q3CpB",
"name": "SSH Password account"
}
},
"executeOnce": false,
"typeVersion": 1
},
{
"id": "de0df734-1e4a-4bf0-9f7d-d60b52e06f48",
"name": "Merge check results",
"type": "n8n-nodes-base.merge",
"position": [
-40,
380
],
"parameters": {
"mode": "combineBySql",
"query": "SELECT input1.stdout as CPU, input2.stdout as Disk, input3.stdout as RAM FROM input1 LEFT JOIN input2 ON input1.name = input2.id LEFT JOIN input3 ON input1.name = input3.id",
"numberInputs": 3
},
"typeVersion": 3
},
{
"id": "7b7d6c0a-3f46-48b3-aa1d-191839540196",
"name": "Check results against thresholds",
"type": "n8n-nodes-base.if",
"position": [
240,
380
],
"parameters": {
"conditions": {
"number": [
{
"value1": "={{ $json.CPU }}",
"value2": 80,
"operation": "largerEqual"
},
{
"value1": "={{ $json.Disk }}",
"value2": 80,
"operation": "largerEqual"
},
{
"value1": "={{ $json.RAM }}",
"value2": 80,
"operation": "largerEqual"
}
]
},
"combineOperation": "any"
},
"typeVersion": 1
},
{
"id": "92331c38-cab8-4719-8746-6fb341954516",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
560,
260
],
"parameters": {
"width": 320,
"height": 280,
"content": "## Update email addresses\nUpdate From and To email addresses in this node to receive notifications"
},
"typeVersion": 1
},
{
"id": "3117fdbc-fde9-469b-bd47-59f45c349162",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-260,
-120
],
"parameters": {
"width": 320,
"height": 260,
"content": "## Check VPS resource usage every 15 minutes\nThis workflow checks VPS CPU, RAM and Disk usage every 15 minutes and if any of it exceeds 80% will inform you by email"
},
"typeVersion": 1
},
{
"id": "45b4c33a-8f02-4535-b67f-56d9d0aaf2ae",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
180,
260
],
"parameters": {
"width": 360,
"height": 280,
"content": "## Update threshold\nIf needed, you can increase/decrease the 80% threshold in this node individually per resource "
},
"typeVersion": 1
},
{
"id": "0bf83ea8-b1c4-40f7-8a60-39f765e8ec2c",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-40,
40
],
"parameters": {
"rule": {
"interval": [
{
"field": "minutes",
"minutesInterval": 15
}
]
}
},
"typeVersion": 1.2
}
],
"pinData": {},
"connections": {
"Check CPU usage": {
"main": [
[
{
"node": "Merge check results",
"type": "main",
"index": 0
}
]
]
},
"Check RAM usage": {
"main": [
[
{
"node": "Check Disk usage",
"type": "main",
"index": 0
},
{
"node": "Merge check results",
"type": "main",
"index": 2
}
]
]
},
"Check Disk usage": {
"main": [
[
{
"node": "Check CPU usage",
"type": "main",
"index": 0
},
{
"node": "Merge check results",
"type": "main",
"index": 1
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Check RAM usage",
"type": "main",
"index": 0
}
]
]
},
"Merge check results": {
"main": [
[
{
"node": "Check results against thresholds",
"type": "main",
"index": 0
}
]
]
},
"Check results against thresholds": {
"main": [
[
{
"node": "Send Email",
"type": "main",
"index": 0
}
]
]
}
}
}Pour qui est ce workflow ?
Ce workflow s'adresse aux équipes IT et aux responsables de la gestion des infrastructures, notamment dans les PME et les grandes entreprises. Il est conçu pour des utilisateurs ayant un niveau technique intermédiaire, familiarisés avec les concepts de monitoring et d'automatisation.
Problème résolu
Ce workflow résout le problème de la surveillance manuelle des ressources serveur, qui peut entraîner des temps d'arrêt imprévus et des pertes de performance. En automatisant cette tâche, les utilisateurs peuvent recevoir des alertes en temps réel, ce qui leur permet d'agir rapidement pour éviter des interruptions de service. Cela réduit également le stress lié à la gestion des incidents et améliore l'efficacité opérationnelle.
Étapes du workflow
Étape 1 : Le workflow est déclenché selon un calendrier défini par le noeud 'Schedule Trigger'. Étape 2 : Les noeuds 'Check CPU usage', 'Check RAM usage' et 'Check Disk usage' exécutent des commandes SSH pour collecter des données sur l'utilisation des ressources. Étape 3 : Les résultats sont fusionnés dans le noeud 'Merge check results'. Étape 4 : Le noeud 'Check results against thresholds' évalue si les valeurs dépassent les seuils critiques. Étape 5 : Si les conditions sont remplies, un email est envoyé via le noeud 'Send Email' pour alerter l'équipe.
Guide de personnalisation du workflow n8n
Pour personnaliser ce workflow, vous pouvez modifier les seuils de vérification dans le noeud 'Check results against thresholds' selon vos besoins spécifiques. Il est également possible de changer l'adresse email de destination dans le noeud 'Send Email' pour diriger les alertes vers les bonnes personnes. Si vous souhaitez ajouter d'autres vérifications, vous pouvez intégrer des noeuds supplémentaires pour surveiller d'autres métriques. Assurez-vous de tester le workflow après chaque modification pour garantir son bon fonctionnement.