Delay vs latency: what they actually mean¶
People call everything “latency” — a feed is late, a dashboard is stale, an alert fired, and it all gets labelled latency. In TrackMe these are two different measurements that answer two different questions, and telling them apart is the single most useful thing you can learn about feeds monitoring. Get this right and the entities table, the thresholds, and the alerts all suddenly make sense.
Two timestamps¶
Every event in Splunk carries two moments in time:
_time— when the event happened (the timestamp inside the event itself)._indextime— when Splunk indexed it (when it actually arrived and was stored).
Those two are never exactly equal, and the whole idea of delay and latency falls out of the gap between them and the gap to now:
Latency =
_indextime − _time— “when an event arrives, how late is it?” A measure of the ingestion pipeline (forwarding, queues, network, clock skew). It is a per-event property.Delay =
now − last_event_time— “how long since we last heard anything at all?” A measure of freshness: is the feed still alive right now?
The mailbox analogy¶
Think of a feed as your postbox:
Latency is how long a letter takes from the day it was written (the postmark —
_time) to the day it lands in your box (_indextime). A letter postmarked Monday that arrives Thursday has three days of latency.Delay is how long since the last letter of any kind turned up. If nothing has arrived for five days, your delay is five days — the box has gone quiet.
The two are independent. Someone can drop a stack of old, week-old postmarked letters in today (low delay, high latency — fresh arrivals, but every one is stale). Or your reliable daily letter can simply stop coming (high delay, low latency — when letters did arrive they were same-day, but now there is nothing).
Why you can’t collapse them into one¶
Because they are independent, a feed sits in one of four states — and the cause you go looking for is different in each:
The practical upshot: an alert on latency and an alert on delay are telling you different things. A latency breach points at your ingestion path; a delay breach points at the source (has it stopped?). Fixing one does nothing for the other.
How TrackMe measures each¶
Latency is computed per event as
_indextime − _time. On an entity, TrackMe surfaces the current, average, and 95th-percentile latency over a recent window (so a single odd event does not dominate).Delay is computed as
now − last_event_time— always relative to this moment, which is why a delay figure keeps climbing on its own while a feed is silent.
Each has its own threshold, and an entity turns red when it goes over:
data_max_delay_allowed— the delay max (freshness ceiling).data_max_lag_allowed— the lag max (per-event latency ceiling).
New entities start with a 1-hour default for both. See Feeds thresholds (delay & latency) for the ways to set the right value per feed (static, lagging classes, adaptive, and variable).
Where you see them in the UI¶
In the entities table, each feed row shows:
Column |
Meaning |
|---|---|
lag (event / ingest) |
A combined summary cell: the current delay (event) and latency (ingest), in that order. |
Latest event |
The newest event seen, by |
Latest ingest |
The newest event seen, by |
Delay max |
The current delay threshold for the entity ( |
Lag max |
The current latency threshold for the entity ( |
On an entity’s own view, the KPI stat tiles read:
CURRENT EVENT DELAY —
now − last_event_time.AVG INGESTION LATENCY / PERC95 INGESTION LATENCY — the mean and 95th-percentile latency over the recent window.
All of these display in seconds, switching to a [D+]HH:MM:SS duration format (via
Splunk’s tostring(…,"duration")) once the value exceeds 60 seconds — so 4200 shows as
01:10:00 and a two-day-stale feed as 2+00:00:00.
See also
Feeds thresholds (delay & latency) — setting the delay and latency thresholds per feed.
DSM — Data Source Monitoring — the DSM component these KPIs describe.
Entity State & Scoring — how a breach feeds the entity state and impact score.