Skip to main content

Dashboards

Dashboards are your own views across every dataset Errora stores: a line chart of error volume next to p95 latency next to a table of your slowest transactions.

Create one​

Dashboards → New dashboard, name it, then add widgets. Dashboards belong to the organization, so everyone with access sees the same board.

Widget anatomy​

Each widget is: a dataset, a visualization, one or more aggregates, an optional group-by, and optional filters.

Visualizations​

line, area, bar, table, big_number.

Datasets and what they can answer​

DatasetAggregatesGroup by / filter
errorscount(), count_unique(issue)level, environment, release, platform, server_name
transactionscount(), avg(duration), sum(duration), failure_rate(), p50–p99``(duration)transaction, op, status, environment, release, platform
logscount()level, environment, release
metricsthe metric's own aggregates (sum, avg, min, max, percentiles, count_unique)any tag the metric carries
profilescount(), avg(duration), sum(samples), p50–p99​(duration)transaction, environment, release, platform
issuescount(), sum(events), sum(users)issue attributes

The builder reads this catalog from the server (GET /dashboards/catalog), so it can only offer queries the backend can actually answer — and a widget you saved last month still renders, because the serializer validates against the same registry.

Example widgets​

QuestionDatasetVisualizationAggregateGroup by
Are we getting worse?errorslinecount()level
Which endpoint is slow?transactionstablep95(duration)transaction
How healthy is checkout?transactionsbig numberfailure_rate()— (filter transaction:/checkout)
Log volume by severitylogsareacount()level
Orders todaymetricsbig numbersum of orders.created—
Slowest profiled routesprofilesbarp99(duration)transaction

Arranging and sharing​

Widgets can be reordered (drag, or PATCH .../widgets/reorder). Everyone in the organization with project:read can view the board; editing needs the usual write capabilities. A dashboard is scoped to the organization, and each widget resolves against the projects you can see.

API​

GET /api/v1/dashboards/catalog
GET /api/v1/organizations/{org_id}/dashboards
POST /api/v1/organizations/{org_id}/dashboards
GET /api/v1/organizations/{org_id}/dashboards/{id}
PATCH /api/v1/organizations/{org_id}/dashboards/{id}
DELETE /api/v1/organizations/{org_id}/dashboards/{id}
POST /api/v1/organizations/{org_id}/dashboards/{id}/widgets
PATCH /api/v1/organizations/{org_id}/dashboards/{id}/widgets/reorder
PATCH /api/v1/organizations/{org_id}/dashboards/{id}/widgets/{widget_id}
DELETE /api/v1/organizations/{org_id}/dashboards/{id}/widgets/{widget_id}
GET /api/v1/organizations/{org_id}/dashboards/{id}/widgets/{widget_id}/data

Troubleshooting​

SymptomCause / fix
An aggregate isn't offeredIt isn't in that dataset's catalog entry — percentiles exist for durations, not for counts
Widget is emptyNo data in the period, or a filter value that never occurs (check spelling of environment/release)
Percentile looks offPercentiles are estimated from a bounded sample of the underlying values
Group-by column missingOnly the catalog's declared columns are selectable; anything else would let user input reach the ORM as a field name