← Back to blog
Product 4 min read 炬鲸团队

After the Alert Fires: One Correlated Path Through Logs, Alerts and Traces

When an alert fires, how do you drill from the alert into error logs, then follow a trace id to the exact call? This post breaks down Observe's root-cause loop, with three practical recommendations.

The ten minutes after an alert decide the blast radius

An alert fires. The on-call engineer opens the monitoring dashboard and watches the error-rate curve climb. What happens next is where most teams lose the race. The usual routine is to switch to the logging system to search for errors, then over to the tracing system to inspect the call chain — three separate systems, three query languages, and three time windows that rarely line up. Every hop costs minutes, and by the time the root cause is pinned down the incident has usually spread to more users.

Observe collapses alerts, logs and traces into one clickable path. The alert detail page carries a built-in "drill down" entry that opens the error logs for exactly that time window. Every trace id inside a log line is a clickable link that expands into the full call chain for that request, down to a specific service and a specific method. You no longer have to copy a timestamp from one tool, paste it into another, and hope the clocks agree.

Alert → logs: labels and the time window carry you over

When an alert rule fires it carries the labels of the object it is watching: service name, environment, instance and metric name. Opening the alert detail pre-fills the log search from those labels and the time window, so you do not write a query by hand:

SELECT * FROM logs
WHERE service = 'order-service'
  AND level IN ('ERROR', 'WARN')
  AND ts BETWEEN '2026-10-08 14:32:00' AND '2026-10-08 14:37:00'

What you get is exactly the errors inside that window, not a wall of unrelated lines. This one step removes the manual work of aligning timestamps, guessing service names and re-reading query syntax that otherwise eats the first few minutes of every incident.

There is an easily missed detail here: the quality of the jump depends on the labels. If the alert rule records only the metric name and leaves service name and environment empty, the drill-down lands on an empty filter and you have to fill it in by hand. Spend a few minutes writing all three dimensions on every rule, and the jump becomes reliable.

Logs → traces: the trace id is the key

Error logs usually carry a trace id, provided the application has adopted OpenTelemetry and enabled log correlation. Observe recognizes that id and turns it into a link. One click opens the complete call chain for the request: which downstream timed out, which database query was slow, which retry amplified the traffic. The waterfall view makes the culprit obvious.

The reverse direction works too. When you spot a slow span on a trace, you can drill back into the logs of the service that owns that span and read the stack trace it was throwing at that moment.

What if the trace id is missing? That is a signal that log correlation is not configured yet. The fallback is to search by service, instance and a narrowed timestamp — but that is a stopgap. The real fix is to add the trace id to your log output, which in most OpenTelemetry setups is a one-line change. Do it before you need it; retrofitting during an incident is the worst possible time.

Three recommendations that make the loop hold

  1. Correlate at ingestion time. Route logs, metrics and traces through OpenTelemetry together rather than collecting each independently. If logs do not carry a trace id, there is nothing to connect later, no matter how good the UI is.
  2. Label your alert rules fully. Service name, environment and instance — write all three on every rule. The coarser the labels, the slower the drill-down, and the more manual querying you fall back to.
  3. Write the flow into the runbook. Fix it as a five-step routine — alert → error-rate curve → error logs → trace → root cause — so a new on-call engineer follows it without inventing the process mid-incident.

The value of an observability system is not how much data it ingests, but how quickly it turns that data into a conclusion during an incident. Connecting alerts, logs and traces into one path is how you make that "how quickly" as short as it can be.