{"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,"notes":"This emailSend node performs automated tasks as part of the workflow."},{"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,"notes":"This ssh node performs automated tasks as part of the workflow."},{"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,"notes":"This ssh node performs automated tasks as part of the workflow."},{"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,"notes":"This ssh node performs automated tasks as part of the workflow."},{"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,"notes":"This merge node performs automated tasks as part of the workflow."},{"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,"notes":"This if node performs automated tasks as part of the workflow."},{"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,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"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,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"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,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"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,"notes":"This scheduleTrigger node performs automated tasks as part of the workflow."}],"connections":{"Send Email":{"main":[[],[],[],[],[],[],[],[]]}},"name":"Emailsend Workflow","settings":{"executionOrder":"v1","saveManualExecutions":true,"callerPolicy":"workflowsFromSameOwner","errorWorkflow":null,"timezone":"UTC","executionTimeout":3600,"maxExecutions":1000,"retryOnFail":true,"retryCount":3,"retryDelay":1000},"description":"Automated workflow: Emailsend Workflow. This workflow integrates 7 different services: stickyNote, scheduleTrigger, merge, ssh, stopAndError. It contains 11 nodes and follows best practices for error handling and security.","meta":{"instanceId":"workflow-d9f8c326","versionId":"1.0.0","createdAt":"2025-09-29T07:07:51.972058","updatedAt":"2025-09-29T07:07:51.972130","owner":"n8n-user","license":"MIT","category":"automation","status":"active","priority":"high","environment":"production"},"notes":"Excellent quality workflow: Emailsend Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}