SLS-Bench: A Benchmark for Incident Log Summarization with Synthetic Observability Data
Organizations: Dynatrace Research
Abstract
As IT systems grow in complexity, automated agent-driven incident response becomes increasingly critical. A key capability for these agents is summarizing large log streams into human-readable reports. Further progress requires meaningfully evaluating this function, yet existing benchmarks leave end-to-end summarization from large log streams underexplored due to the prohibitive cost and complexity of collecting real-world data. We introduce SLS-Bench, a benchmark for incident log summarization featuring 90 tasks grounded in real-world incident reports, each with a synthetic log stream and a reference summary. To construct SLS-Bench, we developed a data generation pipeline that converts incident reports into structured incident models, which guide the generation of synthetic logs and reference summaries. This pipeline combines narrative grounding, explicit incident modeling, generator-verifier loops, and statistical comparisons with real-world log streams to produce realistic and controllable observability data. Our evaluation of 14 LLMs on SLS-Bench shows that while frontier models can produce useful summaries, they do so at substantial cost and latency, and open-weight models lag significantly. SLS-Bench provides a framework for systematic evaluation of log analysis agents and a scalable blueprint for future synthetic observability benchmarks.
Figures & tables
| Model | Score ( ) | Cost [\downarrow$ ) | Time [Min] ( ) | Score/$ | Score/Min |
| OpenAI | |||||
| GPT-5.4 (high) | |||||
| GPT-5.4 (medium) ⋆ | |||||
| GPT-5.4 (low) ⋆ | |||||
| GPT-5.4 Mini (high) ⋆ | |||||
| GPT-5.4 Mini (medium) ⋆ | |||||
Appendix figures & tables18 assets
Supplementary material from the paper’s appendix.
Appendix
| Quantity | Mean | SD | Median | Range |
|---|---|---|---|---|
| Components | 6.11 | 1.45 | 6.0 | 3–10 |
| Hosts | 16.38 | 23.66 | 12.5 | 7–211 |
| Component edges | 7.91 | 2.90 | 7.0 | 3–16 |
| Log templates | 26.96 | 7.85 | 27.0 | 12–46 |
| Variable slots | 81.84 | 25.28 | 78.0 | 42–180 |
| Flow variants | 8.34 | 3.44 | 8.0 | 3–18 |
| Axis | Definition |
|---|---|
| Structure | Compliance with the required report form: headings, subsections, certainty lines, and one synopsis bullet per reference phase. Semantic correctness is scored on the other axes. |
| System reconstruction | Recovery of the same main system purpose, actors, and interactions. Extra plausible names or implementation details are allowed unless they change the main system, recenter a dependent component, or reverse a key dependency. |
| Timeline structure | Agreement with the reference phase count, order, and time ranges. Small boundary drift and reference-preserving phase splits or merges are minor unless they hide an important state transition. |
| Timeline progression | Recovery of the same baseline, trigger, major phase-to-phase changes, and final observable state. Missing or contradicting a major progression step is material. |
| Diagnosis | Recovery of the same core fault chain. A more specific restatement is acceptable when it stays within the reference diagnosis and does not turn an unresolved mechanism into a required causal step. |
| Support alignment | Whether the cited observations and reasoning support the same qualitative conclusions as the reference. This axis handles extra exactness, magnitude claims, local sequencing, and other log-surface details. |
| Verdict | Definition |
|---|---|
| Strong match | A faithful substitute for the reference: the answer is semantically and structurally equivalent to the reference and covers all material content. |
| Good match | A reliable recovery of the reference, but not a full substitute. The main incident story is the same, and any remaining semantic issues are minor and non-material. |
| Partial match | A useful answer that gets the main causal story broadly right, but a material bounded defect or an accumulation of smaller semantic defects prevents using it as a reliable substitute. |
| Weak match | The reference is still recognizable, but major defects dominate. The answer preserves fragments, observations, or broad phases, but does not cleanly recover the incident story. |
| Mismatch | The prediction tells a materially different incident story and is not usable as a recovery of the reference. This includes switching to a different primary system, trigger, or fault chain. |
| Tokens | Cost [$] | |||||||||
| Stage | Category | Calls | Input | Cached | Output | Reasoning | Input | Cached | Output | Total |
| Incident model | Generator | 643 | 11,458,543 | 3,187,968 | 8,254,739 | 2,754,053 | 14.47 | 0.57 | 115.57 | 130.61 |
| Verifier | 2,730 | 44,687,360 | 18,951,040 | 14,351,580 | 13,511,415 | 45.04 | 3.41 | 200.92 | 249.37 | |
| Subtotal | 3,373 | 56,145,903 | 22,139,008 | 22,606,319 | 16,265,468 | 59.51 | 3.99 | 316.49 | 379.99 | |
| Incident simulator | Generator | 373 | 9,188,128 | 2,078,464 | 6,793,850 | 1,837,210 | 12.44 | 0.37 | 95.11 | 107.93 |
| Verifier | 1,855 | 47,917,225 | 19,464,960 | 12,079,385 | 11,704,445 | 49.79 | 3.50 | 169.11 | 222.41 | |
| Model | Effort | Budget 0 | Budget 5 | Budget 10 | Budget 25 | Budget 50 |
|---|---|---|---|---|---|---|
| Nemotron 3 Nano | N/A | 0.00 | 0.02 | 0.04 | 0.06 | 0.07 |
| DeepSeek V3.2 | N/A | 0.00 | 0.09 | 0.17 | 0.20 | 0.29 |
| GPT-5.4 Nano | medium | 0.00 | 0.19 | 0.31 | 0.38 | 0.40 |
| Haiku 4.5 | N/A | 0.00 | 0.32 | 0.40 | 0.41 | 0.43 |
| Opus 4.6 | low | 0.00 | 0.44 | 0.45 | 0.50 | 0.50 |
| GPT-5.4 | low | 0.00 | 0.56 | 0.62 | 0.63 | 0.65 |
| Model | Effort | Budget 0 | Budget 5 | Budget 10 | Budget 25 | Budget 50 |
|---|---|---|---|---|---|---|
| Nemotron 3 Nano | N/A | – | 4.23 | 6.57 | 12.73 | 19.53 |
| DeepSeek V3.2 | N/A | – | 5.00 | 9.59 | 20.87 | 37.10 |
| GPT-5.4 Nano | medium | – | 5.00 | 10.00 | 24.93 | 36.83 |
| Haiku 4.5 | N/A | – | 4.07 | 7.30 | 13.70 | 15.50 |
| Opus 4.6 | low | – | 4.23 | 6.93 | 10.40 | 10.97 |
| GPT-5.4 | low | – | 5.00 | 9.73 | 20.00 | 22.37 |
| Model | Effort | Budget 0 | Budget 5 | Budget 10 | Budget 25 | Budget 50 |
|---|---|---|---|---|---|---|
| Nemotron 3 Nano | N/A | – | 957 ( ) | 1020 ( ) | 852 ( ) | 845 ( ) |
| DeepSeek V3.2 | N/A | – | 1270 ( ) | 1066 ( ) | 728 ( ) | 634 ( ) |
| GPT-5.4 Nano | medium | – | 1152 ( ) | 1096 ( ) | 1160 ( ) | 1054 ( ) |
| Haiku 4.5 | N/A | – | 3743 ( ) | 3669 ( ) | 3104 ( ) | 3257 ( ) |
| Opus 4.6 | low | – | 3887 ( ) | 2688 ( ) | 2333 ( ) | 2335 ( ) |
| GPT-5.4 | low | – | 6629 ( ) | 5577 ( ) | 4126 ( ) | 3904 ( ) |
| Trajectory | Problem ID | Tool outputs | Precomputable | Prefix | Prefix fraction |
|---|---|---|---|---|---|
| T1 | 03a9b743 | 39 | 7 | 10 | 25.6% |
| T2 | 1cddedc3 | 36 | 10 | 10 | 27.8% |
| T3 | 0ff91f6a | 35 | 7 | 9 | 25.7% |
| T4 | 0a7c69ff | 42 | 8 | 11 | 26.2% |
| T5 | 2d21ffed | 32 | 7 | 11 | 34.4% |
| T6 | 0b9e6bdf | 39 | 7 | 11 | 28.2% |
| Stage / stream | Calls | Code functionality | Concrete role in summary construction |
|---|---|---|---|
| Orientation and planning | 13 | Load and parse the dataframe; compute schema, level/service/template summaries, coarse per-minute views, and short anomaly windows; build reusable service slices and phase anchors. | Establishes the shared state used by every stream: rtm-3 websocket failures and a SIGSEGV crash near 12:20 ; later session-validation/history failures tied to DB pressure near 12:27 ; and mitigation/recovery near 12:34 . |
| Failure-chain traces | 8 | Select anomalous request families—failed websocket upgrades, rejected upgrades, and history warnings—then read all rows with the same trace_id . | Produces request-level chains: failed upgrades target rtm-3 ; rejected upgrades pass through session validate timeout with db_err=pool_exhausted ; history warnings line up with app-api timeouts and gateway 503/504 responses. |
| Service timelines | 3 | Group service-specific slices by minute or phase using parsed fields such as rtm_target , HTTP status, DB counters, and monitor target. | Shows component evolution: in [12:20,12:27) , rtm-3 has 420 failed upgrades and 0 successful upgrades while other RTM targets continue serving; later timelines expose DB/app-api degradation. |
| Before/after traces | 4 | Sample representative healthy traces before the incident and recovery traces after mitigation, then read the complete trace rows. | Gives contrastive examples: normal history, websocket, and message-ingest paths before the crash, plus a successful rtm-3 websocket handshake after the 12:34 mitigation boundary. |
| Per-phase statistics | 5 | Loop over phase windows and count levels, templates, HTTP statuses, websocket outcomes, API events, and DB event types. | Compresses the trajectory into phase evidence: baseline behavior, RTM-targeted trigger, DB/auth/API degradation, and partial recovery. |
| Modification | Word-Jaccard | GPT-5.2 | Sonnet 4.6 | Average |
|---|---|---|---|---|
| Meaning-preserving | 0.56 | 0.98 | 0.99 | 0.99 |
| Meaning-altering | 0.87 | 0.14 | 0.20 | 0.17 |
| Model | SLS-Bench score | Human score |
|---|---|---|
| Nemotron 3 Nano | 0.00 | 0.10 |
| DeepSeek V3.2 | 0.10 | 0.20 |
| GPT-5.4 Nano (medium) | 0.38 | 0.35 |
| Opus 4.6 (low) | 0.53 | 0.65 |
| GPT-5.4 (high) | 0.63 | 0.95 |
| Model | SLS-Bench score | o11y-bench |
| OpenAI | ||
| GPT-5.4 (high) | 0.73 | |
| GPT-5.4 (low) | 0.67 | |
| GPT-5.4 Mini (high) | 0.61 | |
| GPT-5.4 Mini (low) | 0.48 | |
| GPT-5.4 Nano (high) | 0.44 | |
| Model | SLS-Bench score | RCA Correct | RCA Partial |
|---|---|---|---|
| GPT-5.4 (low) | 0.67 | 0.14 | 0.22 |
| Sonnet 4.6 (low) | 0.58 | 0.14 | 0.21 |
| Haiku 4.5 | 0.46 | 0.04 | 0.08 |
| GPT-5.4 Nano (low) | 0.28 | 0.12 | 0.20 |
| Nemotron 3 Nano | 0.06 | 0.02 | 0.07 |
LLM Agent Evaluation
Large language model agent evaluation measures whether tool-using systems complete tasks reliably, safely, and efficiently.
See all 1,217 papers