Workflow: Schedule HTTP Monitor

Workflow Details

Download Workflow
{
    "id": "pcLi17oUJK9pSaee",
    "meta": {
        "instanceId": "10ac0d272b984a3e01d44645b4be41105d42352c9db9f4c0c7f5be7946b87d41",
        "templateCredsSetupCompleted": true
    },
    "name": "Web Server Monitor.",
    "tags": [],
    "nodes": [
        {
            "id": "014e1202-3822-4d3f-817e-31f64c8bd5f5",
            "name": "Sticky Note",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -680,
                -440
            ],
            "parameters": {
                "width": 560,
                "height": 540,
                "content": "\ud83d\udcd8 Node Descriptions for Your Web Server Monitor Workflow\n\n\u23f0 1. Schedule Trigger  \nTriggers the workflow every minute to initiate regular checks on server availability.\n\n\ud83d\udcc4 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 \u2014 no need to edit the workflow to add\/remove servers.\n\n\ud83c\udf10 3. Server Alive Check (HTTP) \nSends an HTTP GET request to each server (e.g., http:\/\/your-server.com).  \nIf the request fails, the error path is triggered.  \n\n\ud83d\udcdd 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\ud83d\udea8\ud83d\udce7 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\ud83d\udcdd 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
        },
        {
            "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.1999999999999999555910790149937383830547332763671875
        },
        {
            "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": "https:\/\/docs.google.com\/spreadsheets\/d\/1OiwBkf3bs3tcfi5cAIrOl_GrXw2EfQLdcPbh6SaBFKQ\/edit#gid=524060827",
                    "cachedResultName": "Server_List"
                },
                "documentId": {
                    "__rl": true,
                    "mode": "list",
                    "value": "1OiwBkf3bs3tcfi5cAIrOl_GrXw2EfQLdcPbh6SaBFKQ",
                    "cachedResultUrl": "https:\/\/docs.google.com\/spreadsheets\/d\/1OiwBkf3bs3tcfi5cAIrOl_GrXw2EfQLdcPbh6SaBFKQ\/edit?usp=drivesdk",
                    "cachedResultName": "Server-Monitor"
                }
            },
            "credentials": {
                "googleSheetsOAuth2Api": {
                    "id": "8cXGgTelVK5DewVr",
                    "name": "Google Sheets account"
                }
            },
            "typeVersion": 4.5
        },
        {
            "id": "c168a1f9-1f3f-40b8-95d0-51f6259d8096",
            "name": "HTTP Request",
            "type": "n8n-nodes-base.httpRequest",
            "onError": "continueErrorOutput",
            "position": [
                440,
                0
            ],
            "parameters": {
                "url": "=http:\/\/{{ $json.Server }}",
                "options": []
            },
            "typeVersion": 4.20000000000000017763568394002504646778106689453125
        },
        {
            "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": "https:\/\/docs.google.com\/spreadsheets\/d\/1OiwBkf3bs3tcfi5cAIrOl_GrXw2EfQLdcPbh6SaBFKQ\/edit#gid=303958634",
                    "cachedResultName": "Server_Status_Alive"
                },
                "documentId": {
                    "__rl": true,
                    "mode": "list",
                    "value": "1OiwBkf3bs3tcfi5cAIrOl_GrXw2EfQLdcPbh6SaBFKQ",
                    "cachedResultUrl": "https:\/\/docs.google.com\/spreadsheets\/d\/1OiwBkf3bs3tcfi5cAIrOl_GrXw2EfQLdcPbh6SaBFKQ\/edit?usp=drivesdk",
                    "cachedResultName": "Server-Monitor"
                }
            },
            "credentials": {
                "googleSheetsOAuth2Api": {
                    "id": "8cXGgTelVK5DewVr",
                    "name": "Google Sheets account"
                }
            },
            "typeVersion": 4.5
        },
        {
            "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\ud83d\udd3b Server Down: {{ $json[\"Server\"] }}  \n\nPlease investigate immediately to prevent service disruption. \n\nAutomated Monitoring System\n",
                "options": [],
                "subject": "=\ud83d\udd3b Server Down: {{ $json[\"Server\"] }}: {{ $today.format('yyyy-MM-dd') }}"
            },
            "credentials": {
                "gmailOAuth2": {
                    "id": "C1RVeb9JgdvkMkP4",
                    "name": "Gmail account 2"
                }
            },
            "typeVersion": 2.100000000000000088817841970012523233890533447265625
        },
        {
            "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": "https:\/\/docs.google.com\/spreadsheets\/d\/1OiwBkf3bs3tcfi5cAIrOl_GrXw2EfQLdcPbh6SaBFKQ\/edit#gid=0",
                    "cachedResultName": "Server_Status_Down"
                },
                "documentId": {
                    "__rl": true,
                    "mode": "list",
                    "value": "1OiwBkf3bs3tcfi5cAIrOl_GrXw2EfQLdcPbh6SaBFKQ",
                    "cachedResultUrl": "https:\/\/docs.google.com\/spreadsheets\/d\/1OiwBkf3bs3tcfi5cAIrOl_GrXw2EfQLdcPbh6SaBFKQ\/edit?usp=drivesdk",
                    "cachedResultName": "Server-Monitor"
                }
            },
            "credentials": {
                "googleSheetsOAuth2Api": {
                    "id": "8cXGgTelVK5DewVr",
                    "name": "Google Sheets account"
                }
            },
            "typeVersion": 4.5
        }
    ],
    "active": false,
    "pinData": [],
    "settings": {
        "executionOrder": "v1"
    },
    "versionId": "21468219-4434-4a0c-a3c4-9068baccc3cc",
    "connections": {
        "Gmail": {
            "main": [
                [
                    {
                        "node": "Server_Status_Down",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "HTTP Request": {
            "main": [
                [
                    {
                        "node": "Server_Status_Alive",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "Gmail",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Server-Monitor": {
            "main": [
                [
                    {
                        "node": "HTTP Request",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Schedule Trigger": {
            "main": [
                [
                    {
                        "node": "Server-Monitor",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    }
}
Back to Workflows

Related Workflows

Splitout GoogleCalendar Send Webhook
View
Motion-illustration Workflow Generated with Midjourney and Kling API
View
Schedule Twilio Automation Webhook
View
Manual Awss3 Automate Triggered
View
Obsidian Notes Read Aloud: Available as a Podcast Feed
View
Receive updates when a new list is created in Affinity
View
Summarize emails with A.I. then send to messenger
View
Wait Code Update Webhook
View
Code Schedule Export Scheduled
View
Search news using Perplexity AI and post to X (Twitter)
View