Skip to Content

Runtime Extensions

@5minds/node-red-contrib-processcube-runtime-extensions — 5 Palette-Nodes und 6 Plugins für Produktivbetrieb: Health Checks, Metriken, Context Storage, File-Handling, Datenbank-Migration und Execution Tracing.

Plugins

Plugins werden in der settings.js konfiguriert und erweitern Node-RED auf Systemebene.

Readiness Plugin

Kubernetes-kompatible Readiness- und Liveness-Probes.

Konfiguration (settings.js):

httpReadiness: { enabled: true, url: '/readiness', failedCode: 503, startupDelay: 5, oldestUpdateSinceInSeconds: 0, testMode: false }
EigenschaftTypStandardBeschreibung
enabledbooleanPlugin aktivieren
urlstring/readinessHTTP-Endpunkt
failedCodenumber503HTTP-Status bei “nicht ready”
startupDelaynumber5Startup-Verzögerung in Sekunden
oldestUpdateSinceInSecondsnumber0Max. Alter des ältesten Health-Updates
testModebooleanfalseTest-Endpunkt aktivieren

Response:

{ "status": "Ok", "oldestUpdateSinceInSeconds": 60, "nodes": { "node-123": { "id": "node-123", "status": "Ok", "nodeName": "My Node" } } }

Nodes können ihren Status über Events melden:

RED.events.emit('processcube:healthcheck:update', { nodeId: 'node-123', status: 'Ok', nodeName: 'My Node', nodeType: 'http-in' });

Metrics Plugin

Prometheus-kompatible Metriken für Performance-Monitoring.

Konfiguration (settings.js):

httpMetrics: { enabled: true, url: '/metrics' }

Response:

{ "timestamp": { "value": "2025-01-01T10:00:00Z" }, "eventLoopDelay": { "mean": { "value": 0.52 }, "max": { "value": 12.34 }, "p99": { "value": 8.56 } }, "eventLoopLag": { "lag": { "value": 1.23 } }, "lastBlocked": { "blockedMs": { "value": 125.50 }, "stack": { "value": ["..."] } } }

Custom Storage Module

Einheitliches Storage-Modul mit konfigurierbarem Format und Speichermodus.

Konfiguration (settings.js):

storageModule: require('@5minds/node-red-contrib-processcube-runtime-extensions/dist/lib/storage'), flowStorageOutputFormat: 'json', // 'json' oder 'yaml' flowStorageSaveByNode: true // true = pro Node, false = pro Flow
EigenschaftTypStandardBeschreibung
flowStorageOutputFormatstringjsonDateiformat: json oder yaml
flowStorageSaveByNodebooleantruetrue: pro Node, false: pro Flow-Tab

Features:

  • Automatische Migration zwischen Formaten
  • Stabiles Sortieren für Git-Diffs
  • HTTP-Endpunkt für Deployment: POST /processcube/deploy (tar.gz Upload)

HTTP Context Store

Verteilter Context-Store für Datenaustausch zwischen mehreren Node-RED Instanzen.

Konfiguration (settings.js):

contextStorage: { httpCacheFlows: { module: require('@5minds/.../http-context-store.js'), config: { baseURL: process.env.CONTEXT_STORE_URL || 'http://localhost:3000', scope: 'flows', ttl: 300, maxRetries: 3, retryDelay: 1000, disableCache: false } } }
EigenschaftTypStandardBeschreibung
baseURLstringAPI-Endpunkt für Context Store
scopestringflows oder global
ttlnumber300Cache Time-To-Live (Sekunden)
maxRetriesnumber3Max. Wiederholungen
retryDelaynumber1000Basis-Verzögerung für Backoff (ms)
authTokenstringBearer Token
disableCachebooleanfalseCache deaktivieren

Database Migration Plugin

Automatische Datenbank-Schema-Migrationen mit Postgrator.

Konfiguration (settings.js):

dbMigrations: [ { enabled: true, name: 'PostgreSQL DB', driver: 'pg', connectionString: 'postgresql://user:pass@host:5432/db', migrationPattern: './migrations/*.sql', schemaTable: 'schema_version' } ]

Unterstützte Treiber: pg (PostgreSQL), mysql (MySQL), mssql (MS SQL Server)

Migrationen laufen automatisch beim Node-RED-Start.

Block Plugin (nur für Tests)

Simuliert CPU-Blockierung zum Testen von Monitoring und Alerting.

httpBlock: { enabled: true, // In Produktion: false! url: '/block' }

Blockiert den Event-Loop für 10 Sekunden (busy wait). Nicht für Produktion verwenden!


Palette-Nodes

Execution Trace

Umfassendes Monitoring von Node-RED Message-Flow-Events.

Kategorie: ProcessCube DevOps

Konfiguration:

EigenschaftBeschreibung
hook_typesHook-Typen zum Überwachen
with_msgMessage-Content inkludieren
completeWelcher Message-Teil (Property-Name oder true für alles)

Hook-Typen:

HookBeschreibung
onSendNode hat send() aufgerufen
preRouteNachricht wird geroutet
preDeliverNachricht wird zugestellt
postDeliverNachricht wurde dispatched
onReceiveNachricht wird empfangen (Standard)
postReceiveNachricht wurde empfangen
onCompleteNode hat Verarbeitung abgeschlossen

Output:

FeldTypBeschreibung
msg.payload.eventstringHook-Typ
msg.payload.timestampstringISO-Zeitstempel
msg.payload.source_node_idstringQuell-Node-ID
msg.payload.source_node_typestringQuell-Node-Typ
msg.payload.destination_node_idstringZiel-Node-ID
msg.payload.has_errorbooleanFehler aufgetreten
msg.payload.error_msgstringFehlermeldung
msg.payload.message_partObjectMessage-Inhalt (wenn aktiviert)

File Read

Liest Dateien vom konfigurierten File-Handler-Backend.

Kategorie: ProcessCube Tools

Konfiguration:

EigenschaftBeschreibung
handlerHandler-Name (aus Registry)
pathDateipfad

Output:

FeldTypBeschreibung
msg.payloadBufferDateiinhalt
msg.metaObjectMetadaten (path, mimetype, size, createdAt, updatedAt)

File Write

Schreibt Dateien zum konfigurierten File-Handler-Backend.

Kategorie: ProcessCube Tools

Input:

FeldTypBeschreibung
msg.payloadBuffer/String/StreamDateiinhalt
msg.metaObjectOptional: Metadaten (z.B. mimetype)

Output:

FeldTypBeschreibung
msg.payloadstringPfad der geschriebenen Datei
msg.metaObjectDatei-Metadaten

File Delete

Löscht Dateien vom File-Handler-Backend.

Kategorie: ProcessCube Tools

Input:

FeldTypBeschreibung
msg.pathstringDateipfad

Output:

FeldTypBeschreibung
msg.payloadbooleantrue wenn gelöscht, false wenn nicht vorhanden

File List

Listet Dateien vom File-Handler-Backend.

Kategorie: ProcessCube Tools

Input:

FeldTypBeschreibung
msg.filterObjectOptional: Filter (path, mimetype, fromDate, toDate)

Output:

FeldTypBeschreibung
msg.payloadArrayArray von Datei-Metadaten-Objekten

File-Handler Backends

Die File-Nodes unterstützen austauschbare Backends:

Filesystem Handler

fileHandlers: { "local": { type: "filesystem", basePath: "/data/files" } }
  • Path-Traversal-Schutz
  • Automatische Verzeichniserstellung
  • MIME-Type-Erkennung anhand Dateiendung

Postgres Handler

fileHandlers: { "database": { type: "postgres", connectionString: "postgresql://user:pass@host:5432/db", table: "node_red_files" } }
  • Lazy Table Creation
  • Upsert mit ON CONFLICT
  • SQL-basierte Filterung

Node-Übersicht

NodeKategorieBeschreibung
Execution TraceDevOpsMessage-Flow-Monitoring
File ReadToolsDateien lesen
File WriteToolsDateien schreiben
File DeleteToolsDateien löschen
File ListToolsDateien auflisten
PluginBeschreibung
ReadinessKubernetes Health-Checks
MetricsPrometheus-Metriken
Custom StorageFlow-Storage (JSON/YAML)
HTTP Context StoreVerteilter Context-Store
DB MigrationSchema-Migrationen
BlockCPU-Blockierung (Tests)

Nächste Schritte