Configure the pipeline

Configure the Redfish listener pipeline and Redfish sensor pipeline.

The Redfish listener pipeline is embedded in the listener Helm values under zapp.listeners[].config.pipeline. The chart mounts the content at /config/pipeline.yaml.

Redfish pipeline flow showing sensor pipeline configuration, pipeline components, and ZAPP Aggregator forwarding.

The Redfish pipeline discovers sensors before components start, then forwards telemetry to the ZAPP Aggregator.

Sensor pipeline

Configure Redfish endpoints under envPlugins.sensorPipeline. This block runs before components start and populates the listener manifest.

envPlugins:
  sensorPipeline:
    maxRedfishConnections: 1
    redfishDevices:
      - endpoint: ${secrets.redfish_endpoint}
        username: ${secrets.redfish_username}
        password: ${secrets.redfish_password}
        version: 1.11.0
    manifest:
      path: /data/redfish-sensor-manifest.yaml
      forceReload: false

Important fields:

  • redfishDevices lists the BMC Redfish endpoints and credentials
  • manifest.path stores the discovered sensor manifest
  • manifest.forceReload controls whether discovery reuses or refreshes the manifest

Sensor pipeline with a UDP listener

Pair the sensor pipeline above with a UDP listener pipeline when the listener needs a Redfish-backed sensor manifest and also receives ZAPP UDP payloads.

components:
  listener:
    type: udpListener
    network: udp
    address: :9091
    targets:
      - target: payloadProcessor
        cap: 1000
        leaky: true
  payloadProcessor:
    type: payloadProcessor
    timeseries:
      targets:
        - target: aggregator
    default:
      targets:
        - target: aggregator
  aggregator:
    type: aggregatorStreamer

In this pipeline:

  • udpListener receives ZAPP UDP packets
  • payloadProcessor parses NVIDIA timeseries payloads and forwards non-timeseries payloads
  • aggregatorStreamer streams both time-series and payload batches to the ZAPP Aggregator

Direct Redfish collector pipeline

ZAPP also includes a direct redfishCollector pipeline pattern. This collector uses the devices from envPlugins.sensorPipeline.redfishDevices, polls each device, and emits timeseries models to the configured targets.

components:
  redfish:
    type: redfishCollector
    timeout: 30s
    samplePeriod: 5s
    targets:
      - target: aggregator
        cap: 1000
        leaky: true

  aggregator:
    type: aggregatorStreamer

Use this pattern when the listener should poll Redfish telemetry directly instead of receiving telemetry through the UDP listener path.

Target behavior

Pipeline targets connect components with channels:

targets:
  - target: aggregator
    cap: 1000
    leaky: true

Set leaky: true when you prefer dropping data over blocking the upstream component during back pressure. Use blocking targets when the upstream component must slow down instead of dropping telemetry.