AutomationFlowsWeb Scraping › Banana-pi-down -> Zammad-ticket

Banana-pi-down -> Zammad-ticket

Banana-Pi-Down -> Zammad-Ticket. Uses httpRequest. Webhook trigger; 7 nodes.

Webhook trigger★★★★☆ complexity7 nodesHTTP Request
Web Scraping Trigger: Webhook Nodes: 7 Complexity: ★★★★☆ Added:

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "rSPOpj5iI4kxKvBi",
  "name": "Banana-Pi-Down -> Zammad-Ticket",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "banana-pi-down",
        "responseMode": "onReceived",
        "options": {}
      },
      "id": "b1b1b1b1-0001-4000-8000-000000000001",
      "name": "Alertmanager Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        260,
        300
      ]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "http://vmsingle-monitoring-victoria-metrics-k8s-stack.monitoring.svc.cluster.local:8428/api/v1/query",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "query",
              "value": "last_over_time((100 - (avg by (instance) (rate(node_cpu_seconds_total{mode=\"idle\",instance=\"vereinsheim-alarmmonitor\"}[5m])) * 100))[30m:1m])"
            }
          ]
        },
        "options": {}
      },
      "id": "b1b1b1b1-0002-4000-8000-000000000002",
      "name": "CPU abfragen",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        520,
        300
      ]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "http://vmsingle-monitoring-victoria-metrics-k8s-stack.monitoring.svc.cluster.local:8428/api/v1/query",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "query",
              "value": "last_over_time(((node_memory_MemTotal_bytes{instance=\"vereinsheim-alarmmonitor\"} - node_memory_MemAvailable_bytes{instance=\"vereinsheim-alarmmonitor\"}) / node_memory_MemTotal_bytes{instance=\"vereinsheim-alarmmonitor\"} * 100)[30m:1m])"
            }
          ]
        },
        "options": {}
      },
      "id": "b1b1b1b1-0003-4000-8000-000000000003",
      "name": "RAM abfragen",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        780,
        300
      ]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "http://vmsingle-monitoring-victoria-metrics-k8s-stack.monitoring.svc.cluster.local:8428/api/v1/query",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "query",
              "value": "last_over_time(avg by (instance) (node_hwmon_temp_celsius{instance=\"vereinsheim-alarmmonitor\"})[30m:1m])"
            }
          ]
        },
        "options": {}
      },
      "id": "b1b1b1b1-0004-4000-8000-000000000004",
      "name": "Temperatur abfragen",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1040,
        300
      ]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "http://vmsingle-monitoring-victoria-metrics-k8s-stack.monitoring.svc.cluster.local:8428/api/v1/query",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "query",
              "value": "last_over_time(alamos_apager_last_start_timestamp_seconds{station=\"1002011_Fahrzeughalle\"}[5m])"
            }
          ]
        },
        "options": {}
      },
      "id": "b1b1b1b1-0007-4000-8000-000000000007",
      "name": "Letzte AMweb-Anfrage abfragen",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1300,
        300
      ]
    },
    {
      "parameters": {
        "jsCode": "// CHANGE-ME: Zammad-Gruppe + Requester ggf. anpassen (siehe docs/f-cicd-automatisierung/f0040-github-release-watcher.md fuer die Regeln dazu -- ZAMMAD_REQUESTER_EMAIL muss ein bereits existierender Zammad-User sein). Gruppe 'Support / Administration' angenommen als Unterguppe 'Administration' von 'Support' -> Zammad-API erwartet dafuer '::' als Trenner (siehe docs/f-cicd-automatisierung/f0040-github-release-watcher.md); falls es stattdessen eine einzelne Gruppe mit genau diesem Namen ist, hier auf 'Support / Administration' aendern.\nconst ZAMMAD_GROUP = 'Support::Administration';\nconst ZAMMAD_REQUESTER_EMAIL = 'info@edv-kretzer.de';\nconst GRAFANA_DASHBOARD_URL = 'https://grafana-tech.pke-lab.de/d/vereinsheim-alarmmonitor/vereinsheim-alarmmonitor';\n\nconst cpuRes = $('CPU abfragen').item.json;\nconst ramRes = $('RAM abfragen').item.json;\nconst tempRes = $('Temperatur abfragen').item.json;\nconst lastStartRes = $('Letzte AMweb-Anfrage abfragen').item.json;\nconst webhookBody = $('Alertmanager Webhook').item.json.body || {};\n\nfunction firstValue(res) {\n  const result = res && res.data && res.data.result;\n  if (!result || result.length === 0) return null;\n  return parseFloat(result[0].value[1]);\n}\n\nconst cpu = firstValue(cpuRes);\nconst ram = firstValue(ramRes);\nconst temp = firstValue(tempRes);\nconst lastStartEpoch = firstValue(lastStartRes);\nconst lastStartText = (lastStartEpoch === null || Number.isNaN(lastStartEpoch))\n  ? 'nie / unbekannt (alamos-apager hat noch keine /start-Anfrage fuer diese Station verzeichnet)'\n  : new Date(lastStartEpoch * 1000).toISOString();\n\nfunction fmt(v, unit) {\n  return (v === null || Number.isNaN(v)) ? 'unbekannt' : `${v.toFixed(1)} ${unit}`;\n}\n\nconst alert = (webhookBody.alerts && webhookBody.alerts[0]) || {};\nconst description = (alert.annotations && alert.annotations.description)\n  || 'Vereinsheim-Alarmmonitor antwortet nicht mehr.';\nconst startsAt = alert.startsAt || new Date().toISOString();\n\nconst bodyText = [\n  description,\n  '',\n  `Letzte erfolgreiche Anfrage der Alarmmonitor-Adresse (Kiosk hat zuletzt die echte AMweb-URL ueber alamos-apager angefragt): ${lastStartText}`,\n  '',\n  'Letzte bekannte Metriken vor dem Ausfall (nicht live -- der Pi ist ja gerade nicht erreichbar):',\n  `- CPU: ${fmt(cpu, '%')}`,\n  `- RAM: ${fmt(ram, '%')}`,\n  `- Temperatur: ${fmt(temp, '\u00b0C')}`,\n  '',\n  `Alarm seit: ${startsAt}`,\n  '',\n  `Grafana-Dashboard (Vereinsheim-Alarmmonitor): ${GRAFANA_DASHBOARD_URL}`,\n  '',\n  'Das Problem wird so schnell es geht behoben, dies gilt lediglich als Information fuer dich.',\n  '',\n  '--',\n  'Mit freundlichen Gruessen',\n  'Peter Kretzer',\n  '',\n  'E-Mail: info@edv-kretzer.de',\n  'Website: https://edv-kretzer.de/',\n].join('\\n');\n\nreturn [{\n  json: {\n    title: 'Vereinsheim-Alarmmonitor nicht erreichbar',\n    group: ZAMMAD_GROUP,\n    customer: ZAMMAD_REQUESTER_EMAIL,\n    article: {\n      subject: 'Vereinsheim-Alarmmonitor nicht erreichbar',\n      body: bodyText,\n      content_type: 'text/plain',\n      type: 'note',\n      internal: false,\n    },\n  },\n}];"
      },
      "id": "b1b1b1b1-0005-4000-8000-000000000005",
      "name": "Ticket-Payload bauen",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1560,
        300
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "http://zammad.tech.homeserver/api/v1/tickets",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify($json) }}",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "options": {}
      },
      "id": "b1b1b1b1-0006-4000-8000-000000000006",
      "name": "Zammad-Ticket erstellen",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1820,
        300
      ],
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "Alertmanager Webhook": {
      "main": [
        [
          {
            "node": "CPU abfragen",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "CPU abfragen": {
      "main": [
        [
          {
            "node": "RAM abfragen",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RAM abfragen": {
      "main": [
        [
          {
            "node": "Temperatur abfragen",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Temperatur abfragen": {
      "main": [
        [
          {
            "node": "Letzte AMweb-Anfrage abfragen",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Letzte AMweb-Anfrage abfragen": {
      "main": [
        [
          {
            "node": "Ticket-Payload bauen",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Ticket-Payload bauen": {
      "main": [
        [
          {
            "node": "Zammad-Ticket erstellen",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "meta": {
    "description": "Webhook-Ziel fuer die neue Alertmanager-Route 'n8n-banana-pi-down' (nur alertname=BananaPiAlarmmonitorDown, siehe argocd/apps/platform/monitoring/values.yaml). Fragt bei Ausloesung die letzten bekannten CPU/RAM/Temperatur-Werte sowie den Zeitstempel der letzten erfolgreichen /start-Anfrage (= Kiosk hat die echte AMweb-URL zuletzt tatsaechlich angefragt, exportiert von alamos-apager selbst -- siehe argocd/apps/workloads/alamos-apager/templates/configmap-script.yaml und vmservicescrape.yaml) aus VictoriaMetrics ab und erstellt darueber ein Zammad-Ticket; die Mail-Benachrichtigung an info@edv-kretzer.de laeuft ueber Zammads eigene Agenten-Benachrichtigung, nicht ueber einen eigenen E-Mail-Node. NACH DEM IMPORT: Node 'Zammad-Ticket erstellen' -> Credential 'Zammad API Token' (Header-Auth, Header-Name 'Authorization', Value 'Token token=<ZAMMAD_TOKEN>') neu zuweisen -- Credential-IDs werden beim Workflow-Import nicht mit uebernommen. Details: docs/3-apps-workloads/30020-vereinsheim-alarmmonitor.md."
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Banana-Pi-Down -> Zammad-Ticket. Uses httpRequest. Webhook trigger; 7 nodes.

Source: https://github.com/pkr-lab/capulus-core/blob/ae2de557ddbd5ad1ba827613b677acaa7d501735/argocd/apps/workloads/n8n/workflows/banana-pi-down-to-zammad.json — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

This n8n template provides enterprise-level version control for your workflows using GitHub integration. Stop losing hours to broken workflows and manual exports – get proper commit history, visual di

n8n, Execute Workflow Trigger, HTTP Request +1
Web Scraping

This flow creates dummy files for every item added in your *Arrs (Radarr/Sonarr) with the tag .

HTTP Request, Ssh
Web Scraping

eek-Go v2 (Batch-Then-Review). Uses httpRequest. Webhook trigger; 75 nodes.

HTTP Request
Web Scraping

This workflow receives webhook requests from a content calendar and uses the X API v2 to publish text posts, threads, image/video posts, and polls, as well as delete existing posts and run a credentia

HTTP Request
Web Scraping

This workflow acts as a central API gateway for all technical indicator agents in the Binance Spot Market Quant AI system. It listens for incoming webhook requests and dynamically routes them to the c

HTTP Request