{"id":"pcLi17oUJK9pSaee","meta":{"instanceId":"workflow-08dc291a","versionId":"1.0.0","createdAt":"2025-09-29T07:07:52.182341","updatedAt":"2025-09-29T07:07:52.182355","owner":"n8n-user","license":"MIT","category":"automation","status":"active","priority":"high","environment":"production"},"name":"Web Server Monitor.","nodes":[{"id":"014e1202-3822-4d3f-817e-31f64c8bd5f5","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-680,-440],"parameters":{"width":560,"height":540,"content":"📘 Node Descriptions for Your Web Server Monitor Workflow\n\n⏰ 1. Schedule Trigger  \nTriggers the workflow every minute to initiate regular checks on server availability.\n\n📄 2. Web Servers List (Google Sheets)  \nFetches a list of server hostnames or IP addresses from a Google Sheet.  \nEach row is treated as one server. This makes server management easy — no need to edit the workflow to add/remove servers.\n\n🌐 3. Server Alive Check (HTTP) \nSends an HTTP GET request to each server (e.g., {{ $env.WEBHOOK_URL }}  \nIf the request fails, the error path is triggered.  \n\n📝 4. Web Server Alive Log (Google Sheets)  \nLogs successful server checks into a separate Sheet with a timestamp.\nThis log helps track uptime history, verify server health, and generate availability reports.\n\n🚨📧 5. Server Down Notification (Gmail)  \nSends an alert email if a server does not respond or returns an error.  \nIncludes the server address and the timestamp of failure.\n\n📝 6. Web Server Down Log (Google Sheets)\nLogs the failed server checks into another Sheet with a timestamp.  \nUseful for uptime reporting, debugging, and audit tracking.\n"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"94a3454c-69bd-4a5d-b169-8f3772a41321","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[0,0],"parameters":{"rule":{"interval":[{"field":"minutes","minutesInterval":1}]}},"typeVersion":1.2,"notes":"This scheduleTrigger node performs automated tasks as part of the workflow."},{"id":"f92fcadf-0b13-42ac-abed-aaf169d0ed76","name":"Server-Monitor","type":"n8n-nodes-base.googleSheets","position":[220,0],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":524060827,"cachedResultUrl":"{{ $env.WEBHOOK_URL }}","cachedResultName":"Server_List"},"documentId":{"__rl":true,"mode":"list","value":"1OiwBkf3bs3tcfi5cAIrOl_GrXw2EfQLdcPbh6SaBFKQ","cachedResultUrl":"{{ $env.WEBHOOK_URL }}","cachedResultName":"Server-Monitor"}},"credentials":{"googleSheetsOAuth2Api":{"id":"8cXGgTelVK5DewVr","name":"Google Sheets account"}},"typeVersion":4.5,"notes":"This googleSheets node performs automated tasks as part of the workflow."},{"id":"c168a1f9-1f3f-40b8-95d0-51f6259d8096","name":"HTTP Request","type":"n8n-nodes-base.httpRequest","onError":"continueErrorOutput","position":[440,0],"parameters":{"url":"{{ $env.BASE_URL }}","options":{}},"typeVersion":4.2,"notes":"This httpRequest node performs automated tasks as part of the workflow."},{"id":"0ac82373-6958-4de9-8cf7-94b0005197ff","name":"Server_Status_Alive","type":"n8n-nodes-base.googleSheets","position":[660,-180],"parameters":{"columns":{"value":{"Status":"Alive","TimeStamp":"={{ $now.format('yyyy-MM-dd') }}","Server IP Address":"={{ $('Server-Monitor').item.json.Server }}"},"schema":[{"id":"TimeStamp","type":"string","display":true,"required":false,"displayName":"TimeStamp","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Server IP Address","type":"string","display":true,"required":false,"displayName":"Server IP Address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Status","type":"string","display":true,"required":false,"displayName":"Status","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":303958634,"cachedResultUrl":"{{ $env.WEBHOOK_URL }}","cachedResultName":"Server_Status_Alive"},"documentId":{"__rl":true,"mode":"list","value":"1OiwBkf3bs3tcfi5cAIrOl_GrXw2EfQLdcPbh6SaBFKQ","cachedResultUrl":"{{ $env.WEBHOOK_URL }}","cachedResultName":"Server-Monitor"}},"credentials":{"googleSheetsOAuth2Api":{"id":"8cXGgTelVK5DewVr","name":"Google Sheets account"}},"typeVersion":4.5,"notes":"This googleSheets node performs automated tasks as part of the workflow."},{"id":"6dc31115-4ab6-44cf-ac4f-e2af82a5355e","name":"Gmail","type":"n8n-nodes-base.gmail","position":[660,100],"webhookId":"dec1def3-c858-4a43-b96e-2655d3fa3b77","parameters":{"message":"=Hi Team,\n\nAt {{$now.format('yyyy-MM-dd HH:mm:ss')}}, the following server failed to respond to ping:\n\n🔻 Server Down: {{ $json[\"Server\"] }}  \n\nPlease investigate immediately to prevent service disruption. \n\nAutomated Monitoring System\n","options":{},"subject":"=🔻 Server Down: {{ $json[\"Server\"] }}: {{ $today.format('yyyy-MM-dd') }}"},"credentials":{"gmailOAuth2":{"id":"C1RVeb9JgdvkMkP4","name":"Gmail account 2"}},"typeVersion":2.1,"notes":"This gmail node performs automated tasks as part of the workflow."},{"id":"10262115-57a2-4c4d-9a10-89f4f6ee4ed7","name":"Server_Status_Down","type":"n8n-nodes-base.googleSheets","position":[880,100],"parameters":{"columns":{"value":{"Status":"Down","TimeStamp":"={{$now.format('yyyy-MM-dd HH:mm:ss')}}","Server IP Address":"={{ $('Server-Monitor').item.json.Server }}"},"schema":[{"id":"TimeStamp","type":"string","display":true,"required":false,"displayName":"TimeStamp","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Server IP Address","type":"string","display":true,"required":false,"displayName":"Server IP Address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Status","type":"string","display":true,"required":false,"displayName":"Status","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"{{ $env.WEBHOOK_URL }}","cachedResultName":"Server_Status_Down"},"documentId":{"__rl":true,"mode":"list","value":"1OiwBkf3bs3tcfi5cAIrOl_GrXw2EfQLdcPbh6SaBFKQ","cachedResultUrl":"{{ $env.WEBHOOK_URL }}","cachedResultName":"Server-Monitor"}},"credentials":{"googleSheetsOAuth2Api":{"id":"8cXGgTelVK5DewVr","name":"Google Sheets account"}},"typeVersion":4.5,"notes":"This googleSheets node performs automated tasks as part of the workflow."}],"active":false,"settings":{"executionOrder":"v1","saveManualExecutions":true,"callerPolicy":"workflowsFromSameOwner","errorWorkflow":null,"timezone":"UTC","executionTimeout":3600,"maxExecutions":1000,"retryOnFail":true,"retryCount":3,"retryDelay":1000},"versionId":"21468219-4434-4a0c-a3c4-9068baccc3cc","connections":{"HTTP Request":{"main":[[],[],[],[],[],[],[],[],[]]},"Server-Monitor":{"main":[[]]},"Server_Status_Alive":{"main":[[]]},"Server_Status_Down":{"main":[[]]}},"description":"Automated workflow: Web Server Monitor.. This workflow integrates 6 different services: stickyNote, httpRequest, scheduleTrigger, stopAndError, gmail. It contains 12 nodes and follows best practices for error handling and security.","notes":"Excellent quality workflow: Web Server Monitor.. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}