Week 13 · lesson
Correlation Builds a Stronger Timeline
One log source sees one part of a system.
Correlation connects several observations that refer to the same request, session, host, change, or time window.
The goal is not to force every record into one story. The goal is to see where independent evidence agrees, disagrees, or leaves gaps.
Use explicit keys before time proximity
The strongest easy correlation key is often an identifier designed for that purpose.
Examples:
- request ID;
- change ID;
- session ID;
- backup job ID;
- service instance ID;
- synthetic device ID.
Time is useful, but two events happening near each other are not automatically related.
Fictional multi-source event chain
Identity source
14:10:01.004 login account=bob result=success session=TRAINING-S-9
Web service
14:10:07.110 request_id=rnx-882 session=TRAINING-S-9 action=update_match_note
14:10:07.112 request_id=rnx-882 authorization=allow role=operator
Database audit
14:10:07.145 request_id=rnx-882 operation=update table=match_notes rows=1
Application response
14:10:07.151 request_id=rnx-882 status=200
Now you can build a sequence supported by multiple components.
Separate sequence from causation
The events appear in order:
login → request → authorization → database update → response
That is a supported timeline in the fictional logs.
But be precise about causation.
The shared identifiers and architecture make a relationship plausible and intentionally represented. In a real system, you would still evaluate logging correctness and whether identifiers can be reused or copied.
Normalize fields without erasing source detail
Different systems may call the same concept different names:
user=alice
account=alice
principal=alice
A normalized schema might map all three into:
actor_id
But preserve original source fields too when they matter.
Normalization helps comparison. It should not silently invent equivalence.
Clock skew can reorder events
Suppose:
web clock: 14:10:07
DB clock: 14:09:42
The database update may appear to occur before the request even if it actually followed it.
Before accusing the timeline of impossibility, inspect time synchronization evidence.
Useful fields can include:
- source timestamp;
- collector timestamp;
- known clock offset;
- timezone.
Activity: reconstruct a timeline with one conflict
Supplied events:
A 14:20:00 auth login alice success session=S-10
B 14:20:04 web request rnx-901 session=S-10 action=read_status
C 14:19:35 db query rnx-901 result=1-row
D 14:20:05 web response rnx-901 status=200
Known evidence:
database clock offset = -30 seconds
Normalize the database event:
14:19:35 + 30s = 14:20:05
Now the sequence is coherent with the represented clock offset.
Do not alter the original timestamp in your evidence record. Store both:
source_time=14:19:35
normalized_time=14:20:05
clock_offset=+30s
Correlation can reveal missing events
Expected chain:
request
↓
authorization decision
↓
database action
↓
response
Observed chain:
request
↓
[no authorization event]
↓
database action
↓
response
Several explanations are possible:
- authorization event logging disabled;
- collector dropped record;
- application path bypassed expected function;
- log query/filter excluded event;
- event used different identifier.
The gap is evidence of missing expected observability, not immediate proof of authorization bypass.
Timeline confidence should be explicit
A simple classroom scale:
High
Several independent sources agree and share strong correlation identifiers.
Medium
Sequence is plausible but one source/field is missing or transformed.
Low
Relationship depends mostly on time proximity or incomplete evidence.
Do not turn this into fake mathematics. Use the label to force a reasoned statement.
Extend your Telemetry and Timeline Record
Build a timeline with at least eight records from three source types.
Include:
- original timestamp;
- normalized timestamp if needed;
- source;
- event;
- correlation ID;
- key result;
- confidence/reason;
- one gap or conflict.
Lesson 3 examines what happens when the logging system itself fails.