Skip to main content

Live Data

Live Data captures pipeline messages at a chosen processing stage, so you can watch real data as it moves through a component. Use it to verify transformations, diagnose routing, and inspect message content at a specific point in the chain.

A capture is a bounded session, not a continuous tail: you set a duration and an event limit, start it, and the results stay on screen as a searchable table you can export.

Availability​

Live Data appears on the detail pages of the following components:

ComponentNavigation Path
DirectorFleet Management > Directors > Director detail > Live data tab
ClusterFleet Management > Directors > Cluster detail > Live data tab
DeviceFleet Management > Devices > Device detail > Live data tab
Agent deviceFleet Management > Devices > Windows or Linux agent detail > Live data tab
TargetFleet Management > Targets > Target detail > Live data tab
Advanced RouteRoutes > Advanced Routes > Route detail > Live data tab

The Pipeline Debugger also offers Live Data as a dataset provider, so a capture can become debugger input.

Running a Capture​

With nothing captured yet, the tab shows an empty state and a Capture live data button. Clicking it opens the Capture live data dialog, where you configure the session before it starts:

SettingNotes
Choose where to captureThe processing stage to intercept at — see Capture Locations
Capture time in seconds5 to 60; defaults to 60
Capture up to N events100 to 5,000; defaults to 1,000
Filters (Optional)Restricts the capture to messages containing this text
Mask sensitive dataReplaces sensitive values with placeholders before the records reach the browser. On by default. See Masked Captures

Click Start capture. The status bar first shows a connecting phase — Connecting to director… — while the Director confirms the capture has begun. A Cluster capture spans several Directors, each acknowledging on its own, so it counts them off: Connecting to directors… (2/3).

Once they confirm, the bar switches to the running view, reporting that it is capturing and counting the events received; Capture settings in that bar shows the configuration the running capture is using.

When the console is served over HTTPS or from localhost, a capture is encrypted for the browser that starts it, with nothing to set. Each record's content — its message and the raw original — is encrypted for that browser, and only that browser holds the key that opens it. What the platform needs to route and label a record stays readable: its time, the Director, device, target, route and dataset it came from, its source, and its sizes.

Where the content is encrypted depends on the Director. A current Director encrypts each record itself, where it captures it, under a key it signs: this is end-to-end encryption, and nothing between the Director and the browser can read the content, the platform included. The platform encrypts the records of an older Director where they enter the platform, so every Director version is covered. The status bar says how far it went:

Status barWhen
A lock and End-to-end encrypted, with an information buttonEvery record so far was encrypted by the Director that captured it, under a key the console verified
A lock and Encrypted between the platform and your browserEvery record so far arrived encrypted, and the platform encrypted at least one of them, for example one from an older Director
A warning icon and Some records weren't encryptedAt least one record arrived unencrypted, for example from a platform instance that had not been updated yet during an update. The record is still shown

The status bar never claims more than every row supports: a single record the platform encrypted makes it Encrypted between the platform and your browser rather than End-to-end encrypted.

Nothing is shown when the browser cannot encrypt: the console is served over plain HTTP from an address other than localhost. The capture then works as before, unencrypted.

The indicator sits beside Sensitive data masked when the capture is also masked, and clears with the rows on Clean.

A capture stops when its time elapses, when it reaches its event limit, or when you stop it — whichever comes first. Its results stay on screen until you clear them.

The Directors mark when the capture started and when it completed. These markers are not shown as rows in the table and are not counted in the event totals.

If the connection drops or the server fails the capture, the status bar says so and asks you to start a new one; partial results already received remain.

Checking a Director's Key​

The information button beside End-to-end encrypted, Show the director keys, opens one sentence on how to check a key, and each Director that encrypted the capture: its name above its key's fingerprint, eight groups of four characters, such as D025 FFFF 106A CAAA C506 E1E2 09F9 95DD.

Each Director has a long-lived capture identity, a key it keeps in its data folder as capture_identity.pem, and it signs every capture key with it. When it starts, the Director writes the identity's fingerprint to its log:

Capture identity fingerprint: D025 FFFF 106A CAAA C506 E1E2 09F9 95DD (loaded)

To prove the platform did not swap a key, compare the fingerprint in the console with that log line. They match when the key is the Director's own.

capture_identity.pem holds the identity's private key, so treat it as a secret. Deleting it makes the Director create a new identity, with a new fingerprint, on its next start. A Director without lasting storage, such as a serverless one, makes a new identity each time it starts, and its log line says so.

Capture Locations​

The capture location is the pipeline stage at which messages are intercepted. Which locations are offered depends on where you are.

Directors and Clusters​

LocationDescription
Before pre-processingRaw data as received, before any pre-processing pipeline runs
After pre-processingData after pre-processing
Before routeData as it enters routing
After routeData after routing has selected its destinations
Before post-processingData before the post-processing pipeline runs
After post-processingFinal data, as delivered to the target

Directors and clusters default to Before post-processing.

Devices and Targets​

Devices and targets offer the four pipeline stages — before and after pre-processing, before and after post-processing. Devices default to Before pre-processing, targets to After post-processing, since a target sits at the end of the chain and the interesting question there is what actually arrived.

Devices that receive a framed TCP stream additionally offer Raw data, which captures the bytes before any pipeline sees them. This covers TCP devices, and Syslog devices only when they listen over TCP or TLS — over UDP there is no framed stream to capture, so the option is not offered.

Agent devices do not offer raw capture.

Advanced Routes​

LocationDescription
Before routeData as it enters the route, before route processing (default)
After routeData after route processing completes

What a Capture Sees​

The component you started from determines the scope:

  • Director — everything flowing through that Director, across all devices, targets, and routes
  • Cluster — everything flowing through the cluster
  • Device — only data originating from that device
  • Agent device — only data collected by that agent
  • Target — only data destined for that target
  • Advanced Route — only data flowing through that route

Masked Captures​

A masked capture shows placeholders in place of sensitive values such as card numbers, bank account numbers, national IDs, passwords and keys, and e-mail addresses. The platform replaces them where the records enter it, so a masked value never reaches the browser and is not in what Copy or Download produce. This is done by the platform, so it works with every Director version.

Mask sensitive data is on each time the Capture live data dialog opens. Capture settings shows the value chosen for the capture, so it is off there only if you turned it off. When you turn it off, a warning appears under the switch: Sensitive data will be visible. Card numbers, passwords, email addresses and other sensitive values will be shown as they are. Keep masking on unless you need the real values.

Whether a capture is masked depends on the role:

RoleCaptures
Holds the unmasked view (LIVEDATA_READ_UNMASKED)Masked, unless Mask sensitive data is turned off
Lacks the unmasked viewAlways masked. The dialog has no switch, and says Sensitive data is always masked. Your role can't see the real values. Ask an administrator for the unmasked view.

A capture started over the capture WebSocket without saying whether to mask it is masked too. Only a start request that sends "mask": false, from a role with the unmasked view, gets the real values.

The status bar says which kind of capture produced the rows on screen: Sensitive data masked, or a warning icon and Sensitive data not masked. It shows while the capture runs and while its rows are on screen, and clears with the rows on Clean.

What Is Masked​

The values masked are the ones found by the rules enabled in Library: Sensitive Data Rules, built-in or your own. Every tenant starts with the built-in rules. A rule change reaches capture masking within 30 seconds. If you switch off or hide every rule, masked captures hide nothing.

A masked value reads as [masked:<rule key>], for example [masked:email]. Some rules keep part of the value: a payment card keeps its first six and last four digits (411111******1111), and an assignment keeps its keyword (password=[masked:generic-assignment]).

Masking applies to each record's message and raw original. The text of a marker, the record's source, and the Director, device, target, route and dataset it names are never masked. Replay and BACnet discovery list object names and are never masked either.

caution

The Filters text is not masked. It runs on the Director, before the platform masks anything, so a user who already knows a value can filter for it and confirm that records containing it exist. Masking keeps a value from being read, not from being confirmed.

The Results Table​

Captured events appear as a table. Its columns depend on the page, because what usefully identifies an event differs by context:

PageRelated columnSourceTargetRoute
Director, Cluster, Advanced RouteDeviceYesYesConditional
DeviceDirectorYesYesConditional
Agent deviceDatasetNoYesConditional
TargetDeviceNoNoAlways

Every table also carries Date and Message.

A target page relates events to the device they came from rather than showing a Source column, since the page is the source's destination. On an agent device the data source is the device itself, so Source is dropped there too.

The Route Column​

One source event produces one row per route it travelled. Without a route column those rows read as duplicate delivery, which is why the column exists.

Routing happens between pre-processing and post-processing, so a record captured before that point does not yet know its route. The column therefore appears only when capturing at Before post-processing or After post-processing. On a target page it is always shown; on an Advanced Route page it never is, because every row there belongs to that one route.

Routes created as quick routes are labelled Quick Route rather than by name.

Where an event names a device, target, route, or dataset, the cell links through to that component.

Truncated Records​

A record too large to carry whole is cut, and the table marks it rather than showing a fragment as if it were complete:

  • The Message cell shows a warning icon and Truncated before the text.
  • The expanded row shows Truncated, full size and the original size — for example Truncated, full size 5.0 MB — beside the Message label, or beside the Raw event label when it is the raw original that was cut.
  • What is shown is the start of the text, not all of it.

Two limits produce the cut:

  • The message. The platform cuts a record's message to fit the message broker's per-message limit (its max_payload, less a few KB for the message envelope). The cut falls on a character boundary.
  • The raw original. The Director cuts the raw original at 65,535 bytes, the most a capture record's string field can carry. Before this, an oversized raw original wrapped around and showed only a stub.

Records That Could Not Be Shown​

When records are lost before they reach the console, a warning above the capture says so. Its title reads N records could not be shown, or Some records could not be shown when a count is unknown. One sentence per reason follows:

ReasonReported by
could not be passed on by the platformPlatform
were in a batch the platform could not readPlatform
were dropped while the platform was busyPlatform
could not be encrypted by the platform, so they were not sentPlatform
could not be sent by the directorDirector
could not be encoded by the directorDirector
were dropped because the director's capture buffer was fullDirector
could not be read by this pageConsole
were lost for an unknown reasonPlatform or Director, with a reason the console has no label for

The platform drops a record it cannot encrypt rather than send it unencrypted, which is what could not be encrypted by the platform counts. Could not be read by this page also counts an encrypted record this page could not open.

The capture buffer is shared by every capture running on the Director, so the capture buffer was full count may include entries that fall outside this capture.

When the capture spans several Directors, a closing sentence names the Directors that reported a loss.

The notice stays after the capture stops, and clears when you start a new capture or click Clean.

A loss in a capture's final batch cannot be reported, because its notice travels in that same batch.

note

The platform-side reasons and the message cut take effect when the platform is deployed. The raw-original cut and the Director-side reasons need a Director release that carries them.

Searching and Exporting​

Search logs filters the captured rows as you type. This searches what has already been captured — it does not change what the running session collects, which is what the capture dialog's Filters field does. Search, Copy and Download read the cut text of a Truncated record, not the full original.

ControlEffect
CopyCopies the captured output to the clipboard
DownloadSaves the capture as CSV, JSON, or ZIP
CleanClears the results. The status bar stays, with the last capture's settings and its Capture button, so the next capture is one click away

An exported file carries both the displayed date and the original wire timestamp, so a script reading it never has to infer a timezone. If a search term was active when you exported, the file records it along with the filtered and total counts — a filtered export is otherwise indistinguishable from a complete one.

Prerequisites​

Live Data needs the component to be enabled and to have an active data path. When it does not, the tab explains which condition failed instead of offering a capture:

ComponentEnabled ConditionConnected Condition
DirectorDirector must be enabledDirector must be connected
ClusterCluster must be enabledCluster must be connected
DeviceDevice must be enabledAt least one associated Director must be connected
TargetTarget must be enabledAt least one route must be sending data to the target
Advanced RouteRoute must be enabledThe route must be running on a connected Director

Encrypting a capture needs the console served over HTTPS, or from localhost. Over plain HTTP from any other address the capture still runs, unencrypted.

End-to-end encryption needs a Director release that encrypts captures itself. With an older Director, captures are still encrypted where they enter the platform.

Permissions​

Viewing the Live data tab requires the live-data read permission. Seeing a capture unmasked also requires the unmasked view (LIVEDATA_READ_UNMASKED). Without it, every capture is masked. See Masked Captures and Roles.