Automatisierte API-Uptime-Überwachung mit sofortigem Ausfall-Alarm

Experte

Dies ist ein DevOps-Bereich Automatisierungsworkflow mit 17 Nodes. Hauptsächlich werden If, Code, Wait, WhatsApp, HttpRequest und andere Nodes verwendet. API-Verfügbarkeitsüberwachung mit WhatsApp-Benachrichtigungen und Google Tabellen-Verwaltung

Voraussetzungen
  • Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
  • Google Sheets API-Anmeldedaten

Kategorie

Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "id": "pc2HHg8DLhcpoMg5",
  "meta": {
    "instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
    "templateCredsSetupCompleted": true
  },
  "name": "Automated API Uptime Monitoring with Instant Downtime Alerts",
  "tags": [],
  "nodes": [
    {
      "id": "6050fae8-e86d-481f-bcf5-98461f796b5f",
      "name": "Read API List",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -2640,
        260
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1VKlDZSHicdZhhj-fl-vIIH0mC6VDwdCS4-LqaDIeyw0/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1VKlDZSHicdZhhj-fl-vIIH0mC6VDwdCS4-LqaDIeyw0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1VKlDZSHicdZhhj-fl-vIIH0mC6VDwdCS4-LqaDIeyw0/edit?usp=drivesdk",
          "cachedResultName": "URL For Status Check"
        },
        "combineFilters": "AND"
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "rgIk6EXVdPbmPYAl",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "68940a15-d216-4366-8673-71b71305084d",
      "name": "Init Retry Counter",
      "type": "n8n-nodes-base.code",
      "position": [
        -2200,
        185
      ],
      "parameters": {
        "jsCode": "// Initialize retry counter for each API\nconst apiData = $json;\nif (!apiData.retryCount) {\n  apiData.retryCount = 0;\n}\nreturn apiData;"
      },
      "typeVersion": 2
    },
    {
      "id": "06b0731a-81c3-449f-b302-0e9f5e2f9b0d",
      "name": "Test API",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1980,
        185
      ],
      "parameters": {
        "url": "={{ $json.url }}",
        "method": "={{ $json.method }}",
        "options": {
          "timeout": 10000
        },
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2,
      "continueOnFail": true
    },
    {
      "id": "f4450c0b-48fe-40d2-9b68-c54b12980a01",
      "name": "Check Response",
      "type": "n8n-nodes-base.code",
      "position": [
        -1760,
        185
      ],
      "parameters": {
        "jsCode": "// Check if API responded\nconst response = $json;\nconst apiData = $('Init Retry Counter').first().json;\n\nlet hasResponse = response && typeof response === 'object' && Object.keys(response).length > 0;\n\nreturn {\n  ...apiData,\n  hasResponse: hasResponse\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "886d69dd-e847-4cf7-badb-5d5a02e8cfcd",
      "name": "If No Response",
      "type": "n8n-nodes-base.if",
      "position": [
        -1540,
        185
      ],
      "parameters": {
        "options": {
          "looseTypeValidation": true
        },
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "no-response",
              "operator": {
                "type": "boolean",
                "operation": "true"
              },
              "leftValue": "={{ $json.hasResponse }}",
              "rightValue": "=false"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "be9792e7-be19-47e3-9621-613f1cc8d611",
      "name": "Warten 10 Min",
      "type": "n8n-nodes-base.wait",
      "position": [
        -1320,
        110
      ],
      "webhookId": "b89a5cda-2fa5-40ad-b534-ed607a47c847",
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "4fdd9d39-af72-42d7-9d81-0e878920709b",
      "name": "Increment Retry",
      "type": "n8n-nodes-base.code",
      "position": [
        -1100,
        35
      ],
      "parameters": {
        "jsCode": "// Increment retry count\nconst data = $json;\ndata.retryCount = (data.retryCount || 0) + 1;\nreturn data;"
      },
      "typeVersion": 2
    },
    {
      "id": "c71871bb-7416-4a58-b5b6-d0c326856c62",
      "name": "Retry API",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -880,
        35
      ],
      "parameters": {
        "url": "={{ $json.url }}",
        "method": "={{ $json.method }}",
        "options": {
          "timeout": 10000
        },
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2,
      "continueOnFail": true
    },
    {
      "id": "5567bff2-495e-4b96-adbc-9d5aa290398a",
      "name": "Check Retry Response",
      "type": "n8n-nodes-base.code",
      "position": [
        -660,
        35
      ],
      "parameters": {
        "jsCode": "// Check retry response\nconst response = $json;\nconst apiData = $('Increment Retry').first().json;\n\nlet hasResponse = response && typeof response === 'object' && Object.keys(response).length > 0;\n\nreturn {\n  ...apiData,\n  hasResponse: hasResponse\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "56590da0-6e35-430b-b380-066322cdb528",
      "name": "If Still No Response",
      "type": "n8n-nodes-base.if",
      "position": [
        -440,
        35
      ],
      "parameters": {
        "options": {
          "looseTypeValidation": true
        },
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "still-no-response",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.expectedStatusCode === null || $json.expectedStatusCode === undefined || $json.expectedStatusCode === '' }}",
              "rightValue": "=false"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "1c206215-fe56-48f6-87f0-e1875e664d80",
      "name": "Format Down Alert",
      "type": "n8n-nodes-base.code",
      "position": [
        0,
        -40
      ],
      "parameters": {
        "jsCode": "// Create down alert message\nconst api = $json;\n\nconst alertMessage = `🚨 API DOWN ALERT\\n\\n📋 ${api.name}\\n🌐 ${api.url}\\n⏰ ${new Date().toISOString()}`;\n\nreturn {\n  ...api,\n  alertMessage: alertMessage\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "96024d21-5201-4629-9eef-547c49994d4f",
      "name": "Send WhatsApp Alert",
      "type": "n8n-nodes-base.whatsApp",
      "position": [
        220,
        -40
      ],
      "webhookId": "b8bca051-44db-4578-a849-6fdf7559609d",
      "parameters": {
        "textBody": "={{ $json.alertMessage }}",
        "operation": "send",
        "phoneNumberId": "550325331503475",
        "additionalFields": {},
        "recipientPhoneNumber": "+919974388925"
      },
      "credentials": {
        "whatsAppApi": {
          "id": "3hy4gzpVJrY1sFcR",
          "name": "WhatsApp account API"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "42753397-1223-4fc5-8df0-a340a64fc731",
      "name": "Continue Next API",
      "type": "n8n-nodes-base.code",
      "position": [
        440,
        260
      ],
      "parameters": {
        "jsCode": "// Continue to next API\nconst data = $json;\nif (data.hasResponse) {\n  data.retryCount = 0;\n}\nreturn data;"
      },
      "typeVersion": 2
    },
    {
      "id": "1f5c7218-68d3-4878-a238-36ca0ad31764",
      "name": "Process Each API1",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -2420,
        260
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "0b1af6a3-bf8e-4398-917e-f2526449ad6b",
      "name": "If Still No Retry > 4",
      "type": "n8n-nodes-base.if",
      "position": [
        -220,
        -40
      ],
      "parameters": {
        "options": {
          "looseTypeValidation": true
        },
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "still-no-response",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.retryCount >= 4}}",
              "rightValue": "=false"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "d2bb51d4-2ace-4a9c-8a7c-25c588de3063",
      "name": "Zeitplan-Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -2860,
        260
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes",
              "minutesInterval": 15
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "3fda8d5d-5311-4804-afef-4ec25ed3c92f",
      "name": "Haftnotiz",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2420,
        -340
      ],
      "parameters": {
        "color": 4,
        "width": 1220,
        "height": 340,
        "content": "## How It Works\n* **Schedule Trigger** → Triggers every 15 minutes.\n* **Read API List** → Fetches all API URLs from a Google Sheet.\n* **Process Each API1** → Loops through each API entry.\n* **Init Retry Counter** → Initializes `retryCount = 0`.\n* **Test API** → Sends the first request to the API.\n* **Check Response** → Checks if a valid response was received.\n* **If No Response** → Branches into retry flow if down.\n* **Wait 10 Min → Increment Retry → Retry API → Check Retry Response** → Wait and retry API call once.\n* **If Still No Response** → Verifies if retry also failed.\n* **If Still No Retry > 4** → Checks if retry limit is reached (≥ 4).\n* **Format Down Alert** → Formats the WhatsApp alert with API details.\n* **Send WhatsApp Alert** → Sends API down alert to configured number.\n* **Continue Next API** → Moves to the next API in the list."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "2eee3704-de38-4436-9d22-57252c0ff118",
  "connections": {
    "06b0731a-81c3-449f-b302-0e9f5e2f9b0d": {
      "main": [
        [
          {
            "node": "f4450c0b-48fe-40d2-9b68-c54b12980a01",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c71871bb-7416-4a58-b5b6-d0c326856c62": {
      "main": [
        [
          {
            "node": "5567bff2-495e-4b96-adbc-9d5aa290398a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 10 Min": {
      "main": [
        [
          {
            "node": "4fdd9d39-af72-42d7-9d81-0e878920709b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6050fae8-e86d-481f-bcf5-98461f796b5f": {
      "main": [
        [
          {
            "node": "1f5c7218-68d3-4878-a238-36ca0ad31764",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f4450c0b-48fe-40d2-9b68-c54b12980a01": {
      "main": [
        [
          {
            "node": "886d69dd-e847-4cf7-badb-5d5a02e8cfcd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "886d69dd-e847-4cf7-badb-5d5a02e8cfcd": {
      "main": [
        [
          {
            "node": "Wait 10 Min",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "42753397-1223-4fc5-8df0-a340a64fc731",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4fdd9d39-af72-42d7-9d81-0e878920709b": {
      "main": [
        [
          {
            "node": "c71871bb-7416-4a58-b5b6-d0c326856c62",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "6050fae8-e86d-481f-bcf5-98461f796b5f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "42753397-1223-4fc5-8df0-a340a64fc731": {
      "main": [
        [
          {
            "node": "1f5c7218-68d3-4878-a238-36ca0ad31764",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1c206215-fe56-48f6-87f0-e1875e664d80": {
      "main": [
        [
          {
            "node": "96024d21-5201-4629-9eef-547c49994d4f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1f5c7218-68d3-4878-a238-36ca0ad31764": {
      "main": [
        [],
        [
          {
            "node": "68940a15-d216-4366-8673-71b71305084d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "68940a15-d216-4366-8673-71b71305084d": {
      "main": [
        [
          {
            "node": "06b0731a-81c3-449f-b302-0e9f5e2f9b0d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "96024d21-5201-4629-9eef-547c49994d4f": {
      "main": [
        [
          {
            "node": "42753397-1223-4fc5-8df0-a340a64fc731",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5567bff2-495e-4b96-adbc-9d5aa290398a": {
      "main": [
        [
          {
            "node": "56590da0-6e35-430b-b380-066322cdb528",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "56590da0-6e35-430b-b380-066322cdb528": {
      "main": [
        [
          {
            "node": "0b1af6a3-bf8e-4398-917e-f2526449ad6b",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "42753397-1223-4fc5-8df0-a340a64fc731",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0b1af6a3-bf8e-4398-917e-f2526449ad6b": {
      "main": [
        [
          {
            "node": "1c206215-fe56-48f6-87f0-e1875e664d80",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait 10 Min",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Experte - DevOps

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Experte
Anzahl der Nodes17
Kategorie1
Node-Typen9
Schwierigkeitsbeschreibung

Für fortgeschrittene Benutzer, komplexe Workflows mit 16+ Nodes

Autor
Oneclick AI Squad

Oneclick AI Squad

@oneclick-ai

The 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.

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34