Widget types
Superlog supports five widget types. Each one maps directly to a telemetry signal and renders appropriate controls when you configure it.timeseries_count
Plots the count of log records or trace spans over time. Use this to track error rates, request volumes, or any event frequency.
timeseries_metric
Plots raw metric values (gauge or sum) over time. Ideal for CPU usage, queue depths, latency percentiles, and custom business metrics.
trace_table
A filterable table of spans. Shows the most recent spans matching your filter criteria with columns for service, span name, duration, and status.
log_table
A filterable table of log records. Shows the most recent log entries matching your filter criteria with severity, body, and attributes.
markdown
A free-text notes panel rendered as Markdown. Use it to add context, runbooks, or links alongside your charts.
Creating a dashboard
1
Open the Dashboards section
Navigate to Dashboards in the left sidebar. You’ll see a list of all dashboards in your active project.
2
Create a new dashboard
Click New Dashboard, enter a name, and confirm. Superlog generates a URL-friendly slug from the name automatically.
3
Add your first widget
Inside the new dashboard, click + add widget. Choose a widget type, give it a title, and configure its filters (see below). Click Save to place it on the canvas.
Adding and configuring widgets
When you open the widget form you can configure:- Type — one of the five widget types above
- Title — a short label shown in the widget header (max 200 characters)
- Filters — narrow which events the widget displays:
service— match a specificservice.namevalueresource_attrs— equality filters on any OTel resource attribute (e.g.deployment.environment = prod)span_attrs/log_attrs— equality filters on per-span or per-log-record attributes (e.g.http.route = /api/orders)
- Metric name — required for
timeseries_metricwidgets; the exact metric name as emitted by your SDK
Dashboard layout
The canvas uses a 12-column grid with a row height of 60 px. You can drag widgets to reposition them and drag their edges to resize. Each widget type has a minimum width:
The default sizes (used when adding via the MCP server) are 6 × 4 for timeseries charts, 12 × 6 for tables, and 4 × 5 for markdown panels.
Time range picker
Every dashboard has a time range selector in the top-right corner. You can choose from preset windows (Last 1h, Last 6h, Last 24h, Last 7d, and more) or enter a custom range. All widgets on the page respond to the selected range simultaneously.Template variables
Template variables let a single dropdown drive filter values across every widget on your dashboard. For example, anenv variable with options prod and staging lets you switch all your charts between environments with one click.
How variables work
- You define a variable with a name, a list of options, and an optional default value.
- You reference the variable in any widget filter value using the token
$nameor${name}. - When you view the dashboard, Superlog renders a dropdown per variable and substitutes the selected option into every filter that references it.
options empty, the variable becomes free-form (the viewer can type any value).
Creating variables
Click Manage variables (shown in the variable bar at the top of the dashboard) to open the variables editor. Add an entry with:- name — the token used in filter values (e.g.
env) - options — the selectable list (e.g.
prod,staging) - defaultValue — which option is selected on first load (must be one of
optionswhenoptionsis non-empty) - label (optional) — a display label shown in the dropdown instead of the name
- attributeKey (optional) — powers a one-click “filter by this variable” shortcut in the widget editor
Variable example
Define anenv variable with options prod and staging. Then configure a widget’s resource_attrs filter:
$env updates when you switch the dropdown — no need to edit each widget individually.
MCP-managed dashboards
You can create and manage dashboards programmatically through the Superlog MCP server. The following tools are available:When using
set_dashboard_variables, the call replaces the full variable list. Call get_dashboard first and include any variables you want to keep alongside the new ones.