Skip to main content

Episode fields

Episode fields track when a condition began, changed severity, recovered, and ended.

FieldTypeUnitMeaning
sparklogs.episode.idstringThis episode's id. Never recycled, so it is safe to key on forever.
sparklogs.episode.event_seqintegercountCounts this episode's events from 1. Survives an agent restart, so a consumer can tell whether an event is newer than what it holds without trusting a clock.
sparklogs.episode.occurrenceintegercountWhich time this is that the condition has opened on this subject on this agent. Counted locally and kept across a reinstall; a wiped host resets it.
sparklogs.episode.phasestringWhere the episode stands: onset, held, recovering, recovered or ended.
sparklogs.episode.transitionstringWhat just changed: opened, recovering, relapsed, closed, ended, severity_raised or severity_lowered. Present if and only if something did.
sparklogs.episode.first_observed_tsstringtimestampWhen the episode opened.
sparklogs.episode.age_basisstringWhat the episode's age may be trusted to mean: onset for a witnessed start, observed for one already true when first seen, which makes the age a lower bound, and unknown_ongoing for a posture with no meaningful start.
sparklogs.episode.last_confirmed_tsstringtimestampThe last time the condition was seen still true.
sparklogs.episode.max_observation_gap_sintegersecondsThe longest stretch during this episode where the agent was not watching. How much of a long episode is measurement rather than inference.
sparklogs.episode.post_gap_sintegersecondsHow long the blind window was that this event immediately follows. Present only on the first event after one.
sparklogs.episode.presence_seen_countintegercountHow many samples this subject's row was actually present in over its tracked life. Rides with its denominator or not at all: a numerator alone is not a ratio.
sparklogs.episode.presence_observed_countintegercountHow many samples this subject could have been seen in, present or not. The denominator of the presence ratio.
sparklogs.episode.recovery_attemptsintegercountHow many times the episode has started recovering. The last one is the successful one, so more than one means the subject has been unstable rather than simply broken.
sparklogs.episode.recovering_total_sintegersecondsHow long, in total observed time, the episode has spent recovering.
sparklogs.episode.last_transition_tsstringtimestampWhen this episode last emitted a transition, whatever it was. Answers how long it has been at this severity without scanning its other events.
sparklogs.episode.peak_severitystringThe highest severity this episode has carried, so one closing event can say it peaked here and lasted this long.
sparklogs.episode.pending_transitionstringThe transition a debounce window is currently accumulating toward. Present only while one is running, and what explains readings sitting under the severity the episode still asserts.
sparklogs.episode.pending_since_tsstringtimestampWhen the running debounce window started holding. Rides with the transition it is accumulating toward or not at all.
sparklogs.episode.replaced_idstringThe episode this one superseded, linking a chain where one condition gave way to another on the same subject.
sparklogs.episode.cleared_tsstringtimestampWhen the condition stopped being true. Closure only.
sparklogs.episode.clear_time_basisstringWhether the clearing time was witnessed (observed) or clamped back to the last confirmation because the agent was not watching when it cleared (unobserved_gap).
sparklogs.episode.end_reasonstringWhy tracking stopped rather than why the condition cleared, for an episode that ended without recovering: the subject went away, or the condition was retired.