Early access is open. Free plan during early access. Start free
Logthread

Guide

Dashboards

A dashboard keeps charts, tables and log lists for your metrics, logs and traces on one page. You can start from a ready-made template or build panels yourself. Every save is stored as a version you can compare and restore, and a dashboard can be exported to JSON and imported into another workspace. Open Dashboards under Observability.

Build a dashboard from a template#

  1. On Dashboards, choose From template.
  2. Pick a template. Each card shows its description and panel count.
  3. Optionally type a Name (it defaults to the template name) and choose Create.
TemplateWhat it shows
Logs overviewLog volume by severity, errors, warnings, top services
ASP.NET CoreRequests, latency by route, Kestrel, rate limiting, authentication, exceptions, GC, heap, thread pool
Entity Framework CoreQueries and SaveChanges per second, concurrency failures, compiled query cache
Windows ServerCPU, memory, paging, disk, network, file systems, processes
IISRequests, connections, request queue, rejections, traffic, threads
SQL ServerBatch requests, compilations, page life expectancy, buffer cache, locks

The platform templates chart standard OpenTelemetry metrics. A template with no matching data shows empty charts, not an error. Inside an existing dashboard in edit mode, Add panel then Panels from a template... adds a template's panels to it.

Create a dashboard from scratch#

  1. Choose New dashboard, enter a Name and a Visibility, then Create.
  2. Choose Edit, then Add panel and pick a panel type.
  3. Set up the queries and options (below), then choose Apply.
  4. Choose Save. Done leaves edit mode; Discard drops unsaved changes.

You can also add a chart from another page with Add to dashboard, choosing an existing dashboard or a new one: Metrics (the chart), Explore (the search), Analyze (the pivot), Traces (p95 latency for the chosen services and operation), a selected Endpoints or Database row (its p95 and p50 latency, counted exactly as on that page), a Patterns row (the pattern's volume), and a SQL statement (a time series when the result has a time column and a numeric column, otherwise a table).

Panel types#

TypeUse it for
Time seriesLines or areas over time, with legend and thresholds
Bar chartBars over time, or the top values side by side
StatBig numbers: one value, or one tile per series, coloured by thresholds and value mappings
GaugeA value against a minimum and maximum
Bar gaugeOne bar per series against a minimum and maximum (gradient, basic or retro LCD)
State timelineEach series as coloured states over time, such as ONLINE or DEGRADED
TableSeries or result rows as a sortable table
Pie chartShare of each series or value
HeatmapSeries as rows, time across, value as colour
LogsMatching log events as a list
TextNotes, links and runbooks in Markdown
Pivot tableA grouped table saved from Analyze (edit its query in Analyze)

In a panel's menu: View, Edit, Open in explorer, Duplicate and Remove. In edit mode, drag a panel by its header to move it. With the keyboard, arrow keys move it and Shift with arrow keys resizes it.

Queries A to E#

A chart panel holds up to five queries, labelled A to E. Use Query (the plus button) to add one. Each query has a Data source (Metrics, Logs, Spans or SQL), an optional Legend, and a Visible / Hidden toggle.

Metrics query: Metric, Aggregation, Group by (up to 2 labels), Services (up to 20), Interval (Auto, 10 s to 1 hour, or an interval variable), Max series (1 to 20) and label filters. Exponential histograms are stored but not charted.

Logs query: Show one of event volume over time by severity, top values of a field, log events newest first, or a stats table or series (LTQL stats). Search takes an LTQL selector, as in Explore. You can also narrow by services and severities. Top values allows 1 to 20 rows and the event list 1 to 200.

Spans query: Show either A measure over time (Measure: requests per second, errors per second, error rate, latency p50, p95, p99 or average) or Calls, errors and latency table grouped by Service or Operation (1 to 50 rows). Optionally set Operation (an exact span name) and one series per service.

SQL query: a read-only Statement, as in the SQL page, with a field for each parameter. Use {from:DateTime64(3)} and {to:DateTime64(3)} for the dashboard's time range. A result with a time column and numeric columns charts over time (up to 6 numeric columns, or one numeric column split by a text column into up to 12 series); any result shows as a table of up to 1,000 rows. Variables are not replaced inside SQL. Members and higher can add and edit SQL panels; viewers see the SQL panels saved in a dashboard, exactly as saved.

Combine queries with an expression#

Under the queries, Expression computes across queries for each time bucket. Use the refs A to E, numbers, + - * / and parentheses (up to 200 characters). Examples: A / B * 100, A - B, (A + B) / 2.

  • Series pair up when their label sets match. A single unlabelled series pairs with every series of the other query, so A / B works against a total.
  • A bucket where either side is missing, or a division by zero, shows as a gap.
  • Set A and B to Hidden to chart only the result, and name it with Expression name.

Use variables in a dashboard#

Open Settings, then the Variables tab. A variable adds a selector above the panels, and any query field containing $name or ${name} uses its value. A dashboard holds up to 12 variables.

  • Query takes values from Services, A metric label (metric and label key) or A log field (for example attr.env, with an optional LTQL filter).
  • Custom list takes comma-separated values.
  • Interval supplies values such as 1m, 5m, 15m, 1h. Pick it in a metrics or spans query's Interval.
  • Text box accepts free text.
  • Options: Allow several values, Include "All", Default value and Hide the selector. Names use letters, digits and _, up to 32 characters.

Legends, units and overrides#

In the panel options (use Search options to find one):

  • Legend on a query: {{label}} inserts a label value, {{labels}} inserts all of them.
  • Show legend, Mode (List, or Table with values), Placement (Bottom or Right) and Sort by. Click a legend name to show only that series; Cmd or Ctrl-click toggles one.
  • Unit, Decimals, Min, Max, Logarithmic scale, Colour scheme, thresholds, stacking and missing-value handling, depending on the panel type.
  • Thresholds colour a value at or above each step, and Base colours a value below all of them. Pick Green, Amber or Red (they follow the light and dark themes), or any colour with Custom.
  • Value mappings show a value as text and colour: a Value (1 as ONLINE in green), a Range (2 to 5 as DEGRADED in amber), No value or a Text pattern. The first match wins, and it beats thresholds. Stat, bar gauge, state timeline and table panels use them.
  • Stat styles: Show one value for all series or one tile per series, Colour mode (Value, Background gradient, Background solid or None), Graph mode (a sparkline or none) and Text mode.
  • Table: Number cells can be plain, coloured text, coloured background or a bar in the cell.
  • Repeat for each value of a variable draws the panel once per selected value (every value for All), each showing that value, side by side (up to Most per row) or stacked. Use $name in the title, for example "Ping $host".
  • Add override changes one series. Match it by name, /regex/ or ref:B, then set Colour, Unit, Y axis (left or right), Display name, Line width or Hide series. Up to 30 overrides per panel.

Set the time range and refresh#

The bar above the panels has presets (15m, 1h, 6h, 24h, 7d, 30d, 90d), a custom range picker, an Auto refresh menu (Off, Live, 10s, 30s, 1m, 5m, 15m) and Refresh now. Charts work at any range up to a year: each panel picks its time step for the range (about 150 to 400 points), and a fixed step such as bin(ts, 5m) that would draw too many points is widened, with a note on the panel such as "Shown in 1-hour steps". A range that starts before your retention keeps its full axis: the part older than your retention is empty, and the panel says so. Event-list panels show the newest 7 days of a longer range. Drag across a chart to zoom in: the step refines and the URL keeps the range, so you can share the view.

Live keeps the dashboard moving: the time axis of every time-series and bar panel glides smoothly with the clock (heatmaps move a bucket at a time), over a faint moving grid, while the value axis holds still and new data appears as it arrives, with a soft pulse on the newest bucket while it fills. Live needs a range that ends now, such as Last 1 hour. Picking a fixed window, or dragging to zoom, pauses it ("Live paused: fixed time range"), and Resume goes back to the last range that ended now. Live is light on your workspace: charts fetch only their newest few minutes each time (every 5 to 30 seconds, depending on the chart's step) and reload in full every 10 minutes; stat, table, top-list and SQL panels reload every 30 seconds. Nothing runs while the browser tab is hidden or a panel is scrolled out of view.

In Settings, set the dashboard's default Time range and Refresh (Live included), plus its Name, Description and Tags (comma separated, up to 10).

See and restore earlier versions#

Every save creates a version, and the latest 50 are kept.

  1. Open the More menu and choose Version history.
  2. Pick a version to see what restoring it would change (panels and variables added, removed or changed).
  3. Choose Restore version N. The restore is saved as a new version, so nothing is lost.

You need edit access, and unsaved changes must be saved or discarded first. If someone else saved while you were editing, a dialog offers Keep editing, Reload theirs (discard mine) or Overwrite with mine.

Export, import and duplicate#

  • More then Export JSON downloads dashboard.json (format logthread.dashboard/1).
  • On Dashboards, Import JSON creates a new private dashboard from such a file. Files with unknown fields are rejected.
  • More then Duplicate dashboard creates a private copy named "(copy)".

Move dashboards from Grafana#

Import JSON also takes a Grafana dashboard (its JSON export, or the JSON from Grafana's HTTP API). Before anything is created, Logthread shows each panel with what happened to it:

  • Translated: the panel and its queries came over.
  • Partly translated: it came over, and the notes say what was left out (for example a regular expression on a metric label).
  • Needs a query: its data source (MySQL, InfluxDB, CloudWatch and the like) is not one Logthread reads. The panel comes over with its layout and colours and no query, and the panel editor shows the original query so you can write one on your own data.
  • Not supported: a panel type Logthread does not draw (such as geomap). It becomes a text panel that keeps its query.

Every query reads your Logthread data, so data source selections become Logthread:

Grafana data sourceBecomes
Prometheus, Mimir, Thanos, Cortex (PromQL)metrics queries: rate, increase, sum/avg/min/max by, histogram_quantile, topk, and arithmetic between queries as a panel expression
Loki (LogQL)LTQL: stream selectors, line filters, json/logfmt/regexp/pattern, label filters, count_over_time, rate, unwrapped quantiles and averages
Tempo (TraceQL)a span query on the service, span name and error status

Each panel is checked on the last hour of your data before you import: metric names are matched to what you send (http_server_duration_seconds_bucket is found as http.server.duration), label keys and services are matched, and the preview says how many series each panel shows or why it is empty. Layout, units, decimals, thresholds and their colours (Grafana's named colours keep their exact shade), value mappings, overrides, legends, stat colour modes, bar gauge and table cell styles, state timelines and variables (label_values(…), custom, interval, textbox, constant) come over. AI agents can do the same with the import_grafana_dashboard MCP tool.

For alert rules and contact points, see Alerts.

Who can see and edit a dashboard#

  • Visibility is Private (only you) or Shared with the workspace.
  • Viewers can open shared dashboards. Creating, importing and duplicating need the member role.
  • You can edit a dashboard you created, and admins can edit any dashboard they can see. On a shared dashboard, tick Every member can edit this dashboard (in Settings) to let any member edit it.
  • Limits: 50 dashboards per workspace, 48 panels per dashboard, 5 queries per panel.

Next: keep the data clean and cheap with pipelines and parsing.