Dashboard numbers look wrong

A dashboard widget shows a number you didn't expect. Almost always it's the time range, granularity, aggregation, filters, or sampling — not bad data.

Symptom

A widget shows a number that doesn’t match what you expected — cost too low, latency too high, a count that seems off. Almost always the data is right and the query is reading it differently than you assumed: the time range, granularity, aggregation, or filters change what a widget reports. Check those four before suspecting the underlying traces.

  • A metric looks far higher or lower than reality.
  • Two widgets that “should” match don’t.
  • A number changed when you only changed the time range or granularity.

Quick checks

  • The widget’s time range matches the window you have in mind.
  • The granularity (bucket size) is what you expect — per-hour and per-day give different numbers.
  • The aggregation (sum / average / median) answers the question you’re asking.
  • No stray filter (model, status, attribute) is silently narrowing the data.

Causes and fixes

CauseWhat you seeFix
Time range / granularityA number changed when you only changed the window or bucket sizeA chart reflects the selected window and bucket. Set both to match your expectation — average latency per hour and per day differ from the same traces.
Aggregation mismatchTwo widgets that “should” match don’tSum vs. average vs. median answer different questions — confirm the widget uses the one you mean.
Filters narrowing the dataA metric looks far lower than realityA widget filter (model, status, attribute) silently excludes traces; clear it to compare against the full set.
Eval samplingAn eval-based metric covers fewer spans than total trafficIf a metric is built on evals run at a sampling rate, it covers a subset of spans, not all of them.
TimezoneAn apparent gap or spike at a day boundaryDay boundaries follow the dashboard timezone — the boundary effect, not missing data.

Diagnostic checks

Open the widget editor and read its time range, granularity, aggregation, group-by, and filters. Then cross-check one value against the trace explorer for the exact same window:

  • Apply the same time range and filters in the trace explorer.
  • Count the matching traces (or read the latency/cost column) and compare to the widget.
  • If the two agree, the widget config — not the data — explains the number.

Minimal smoke test

Set the widget’s time range and granularity to match your expectation, clear extra filters, and confirm the value lines up with a trace-explorer count for the same window. They should reconcile within the rounding of the chosen aggregation.

Escalate

If a value still can’t be reconciled with the trace list for the same window, contact support@futureagi.com with the dashboard, the widget config, and the window.

Prevent recurrence

  • Label widgets with their aggregation and window so readers don’t misread them.
  • Keep one “all traffic, no filters” reference widget to sanity-check the others.

Next steps

Was this page helpful?

Questions & Discussion