Skip to content

Workflows

Omniglass uses Node-RED as a workflow engine to fill gaps that Zabbix cannot address on its own. Zabbix is excellent at scheduled data collection and threshold-based alerting, but it cannot execute multi-step test sequences, orchestrate vendor API calls, ingest data from webhooks, or build custom operator dashboards. Node-RED fills those gaps.

Node-RED is included in the stack, pre-wired with Omniglass plugins for authentication, Zabbix integration, and flow version history. Operators build flows visually in a browser-based editor. Every deploy is versioned in the database with diff and restore.

Validate that an AV system is operationally ready by executing a sequence of actions across multiple devices. For example: initiate a call on a codec, wait for it to connect, inject a test tone, read audio meters on the DSP, evaluate pass/fail, and report the result back to Zabbix. These synthetic tests run on Zabbix’s native schedule via HTTP agent items that call Node-RED endpoints.

Receive data from external sources that Zabbix cannot natively consume:

  • Webhooks from vendor portals (firmware updates, license alerts, room booking systems)
  • MQTT from IoT sensors, building management systems, or AV control processors
  • WebSocket streams from device APIs that push state changes in real time
  • Email parsing for support ticket ingest or alert correlation

Node-RED receives the data, normalizes it, and pushes it into Zabbix via trapper items or the Zabbix sender protocol.

Collect data from a single source and distribute it across many Zabbix hosts. For example: query a cloud management platform API once (Cisco Webex Control Hub, Crestron XiO Cloud, Microsoft Teams Admin Center), then fan the per-device results out to individual Zabbix hosts as trapper item values. This avoids hammering vendor APIs with one request per device.

Acquire and rotate OAuth2 tokens for vendor APIs (Microsoft Graph, Cisco Webex) and write them to Zabbix host macros so that Zabbix templates can use them in HTTP agent items. The Omniglass Node-RED plugins for Microsoft Graph and Webex handle the OAuth2 flows; a simple Node-RED flow writes the resulting token to the appropriate macro on a schedule.

Build import flows that read from external sources (spreadsheets, asset management systems, vendor cloud portals) and create or update hosts, systems, and locations in Omniglass via the API. Useful for initial onboarding of large estates or ongoing sync with an external source of truth.

Build operator-facing dashboards using Node-RED Dashboard 2.0 that combine live monitoring data with device control actions. For example: a room status board that shows system health alongside “reboot codec” or “switch input” buttons that call vendor APIs when pressed. Dashboards are embedded in the Omniglass UI via the gateway and carry the operator’s Zabbix identity for access control.

Node-RED integrates with Zabbix through standard Zabbix item types. No custom protocols.

Zabbix calls a Node-RED HTTP endpoint on a schedule. Node-RED runs a flow and returns a JSON response. Zabbix stores it as item data.

sequenceDiagram
    participant Zabbix
    participant Node-RED
    Zabbix->>Node-RED: HTTP GET /check/room-302
    Node-RED->>Node-RED: execute flow
    Node-RED-->>Zabbix: JSON response
    Zabbix->>Zabbix: store in item history

The {$OG_SYSTEM_NAME} macro on system hosts lets one template work across all systems of the same type: http://nodered:1880/check/{$OG_SYSTEM_NAME}.

For long-running operations. An HTTP agent item triggers the flow. Node-RED pushes results to trapper items when done.

sequenceDiagram
    participant Zabbix
    participant Node-RED
    Zabbix->>Node-RED: HTTP POST /test/start
    Node-RED-->>Zabbix: 202 Accepted
    Note over Node-RED: long-running operation
    Node-RED-->>Zabbix: zabbix_sender: status
    Node-RED-->>Zabbix: zabbix_sender: result

Ingest (Node-RED receives, pushes to Zabbix)

Section titled “Ingest (Node-RED receives, pushes to Zabbix)”

For webhook, MQTT, and WebSocket sources, Node-RED is the listener. It receives data, transforms it, and pushes to Zabbix trapper items. No Zabbix-side scheduling needed — the data arrives when it arrives.

Omniglass ships Node-RED with plugins pre-installed:

PluginWhat it does
omniglass-zabbix-senderSends trapper values to Zabbix using the native sender protocol.
omniglass-auth-zabbixValidates signed tokens from the Omniglass UI. Zabbix admins get editor access; others get read-only.
omniglass-dashboard-authPasses Zabbix user identity into Node-RED Dashboard 2.0 for personalization and access control.
omniglass-flow-historyVersions every flow deploy to PostgreSQL with diff and restore.
omniglass-themeDark theme matching the Omniglass UI palette.
omniglass-msft-graph-authAcquires Microsoft Graph API tokens via OAuth2 client credentials.
omniglass-webex-authAcquires Cisco Webex API tokens via OAuth2 refresh token grant.

Node-RED flows are persisted to the shared PostgreSQL database. Every deploy writes a versioned snapshot with the flow-history plugin. Operators can view history, diff any two versions, and restore an earlier version directly from the editor. No manual backup of flow files is required.

All Node-RED access goes through the gateway at /nodered/. The Omniglass auth plugin validates the operator’s Zabbix session via a signed HMAC token. Zabbix admins get full editor access. Non-admin users get read-only access. Dashboard viewers are authenticated the same way.

Zabbix continues monitoring normally. HTTP agent items that called Node-RED will show item errors. Trapper items stop receiving values and eventually fire “no data” triggers. All other monitoring, systems, locations, and reconciliation continue unaffected. Node-RED has no state that other components depend on.