Build and use Metrics dashboards
Track traffic, errors, latency, cost, usage, and quality—and narrow a change to the requests behind it.
The Metrics dashboard turns request telemetry into trends and breakdowns. Use it to spot a change, identify the model, provider, customer, prompt, or API key involved, and then inspect the matching logs or traces.
The dashboard summarizes request-level telemetry; it is not a count of root traces. One trace can contain several LLM requests, so Requests and Traces can show different totals.
What you can answer
Use the dashboard to answer questions such as:
- Did request volume, error rate, latency, or cost change?
- Which model, provider, prompt, customer, or API key contributed most?
- Is a regression widespread or limited to one cohort?
- Is the change in typical performance or only in the slowest requests?
- Which logs or traces should you inspect next?

Read the overview
Every graph uses the time range and global filters selected in the toolbar. Summary values show the aggregate for that range; where a previous-period value and percentage appear, use them to understand how the current range changed from the preceding comparable period.
Start with these signals:
Use a total to confirm that something changed, then use a ranked breakdown or grouped graph to find the cohort responsible.
Choose the investigation window
Choose a preset or exact interval
Use a preset—from Last 5 mins through Last 30 days—or enter exact start and end dates and times. Presets such as Today, This week, and This month are also available.

If a short range is empty, widen it before changing instrumentation. Existing data may simply be outside the selected interval.
Filter every graph
Global filters narrow the entire dashboard, which makes them the quickest way to test whether a spike belongs to one cohort.
Choose a field
Filter by API key, customer ID, custom ID, request count, token usage, cost, provider, model, favorite status, or a custom property.

Global dashboard filters affect every graph. A custom graph’s Span filters affect only that graph. If you record an environment, feature, tenant, or prompt version as a custom property, find it under Custom properties.
Add graphs from templates
Templates are the fastest way to expand a dashboard with a standard metric.
Choose a category
Browse Models, Latency, Tokens, Prompts, Users, Caches, Storage, Keys, Providers, and Scores.

Build a custom graph
Create a custom graph when a template does not answer the exact question you have. For example, build a P95 latency graph grouped by model to find which model is causing slow-tail performance.
Choose the metric and calculation
Select Latency, choose Percentile, and set the percentile to P95. Use the plus button to add another metric when a comparison belongs on the same chart.
Narrow this graph
Add Span filters when the chart should represent only a specific cohort. These filters are independent of the global dashboard filters.

Choose the right percentile
Do not use an average alone for latency investigations; a small number of very slow requests can be hidden by otherwise fast traffic.
Customize chart display
Open Metrics settings in the toolbar when you need to change how the dashboard is drawn without changing which records it summarizes.

Grid, tick-line, smoothing, and chart-type controls are display settings. They do not change the time range, global filters, per-graph filters, aggregation, or source records.
Arrange and manage the dashboard
- Drag graphs to put the most important signals first.
- Resize a graph when labels, series, or breakdowns need more room.
- Use Expand chart when you need a closer look, and Remove chart when a graph no longer belongs in the current layout.
- Use Reset chart layout to restore the layout after reordering, resizing, or removing graphs.
- Use the refresh menu for manual or automatic updates.
- Use the export control in the upper-right toolbar when you need an offline copy of the current dashboard.
Investigation workflows
Diagnose an error spike
- Set a range that includes the spike and a small amount of time before it.
- Compare Errors with Error rate. A higher error count with a stable rate can simply reflect higher traffic.
- Check Top models by errors, then filter to the suspected model or provider.
- Open Errors and apply the same time range and filters to identify the main incident and error group.
- Open Traces and inspect the trace hierarchy to find the first failing span and its input, output, and error details.
Explain a cost increase
- Confirm the increase in Cost and Requests.
- Filter by model, provider, API key, customer, or a cost-related custom property.
- Add a cost graph grouped by the dimension you want to compare.
- Open Spans for individual model calls or Traces for the full workflow behind a costly request.
Find a latency regression
- Compare P50 with P95 or P99 to distinguish a broad slowdown from tail latency.
- Compare Latency with TTFT. High TTFT points to time before the first token; high total latency with normal TTFT points to generation or downstream work.
- Group latency by model or provider.
- Apply the same cohort and time window in Traces, then inspect duration bars to find the slow span.
Dashboard, Logs, Traces, or Monitors?
After you know which signal matters, create a monitor so you do not need to watch the dashboard manually.
Troubleshooting
The dashboard has no data
- Widen the time range.
- Clear global filters and check any per-graph Span filters.
- Confirm that you are in the intended project and environment.
- Check whether recent records appear in Spans or Traces.
- If neither page contains data, follow the Tracing quickstart and send a test trace.
Cost is zero or unexpectedly low
Check whether the recorded model name maps to a configured model with pricing. For aliases and newly released models, review Providers and models.
A user or customer breakdown is missing
Confirm that requests include a customer_identifier. See Customer identifiers.
Dashboard and trace counts do not match
This can be expected: the dashboard counts request-level records, while Traces counts root executions. Also compare the time range, environment, global filters, and custom graph filters on both pages.
Related guides
Group failed spans into issues and inspect their occurrence trends and sampled events.
Apply the same time range and filters to individual spans.
Turn an important metric into an alert.
Follow a problematic run to the span that caused it.
Send a test trace when the dashboard is empty.
Attribute usage and cost to users or tenants.
Need help?
Join our Discord — we’ll help you investigate your metrics.