Custom dashboards¶
While the main dashboard has a fixed layout, custom dashboards let you assemble your own views — mixed widgets, your own variables, versioning, public links.
Create a dashboard¶
/custom-dashboards → New:
| Field | Meaning |
|---|---|
| Tenant | required — every dashboard belongs to exactly one tenant |
| Name | display name |
| Description | optional |
The first time a tenant is opened, a default dashboard called "Overview" is created automatically (four single-value tiles: Hosts Total, OK, Warning, Critical). It can't be deleted, but can be rebuilt like any other dashboard.
Place widgets¶
Drag-and-drop grid. Per widget:
- + Widget
- Choose a widget type (see Widget reference)
- Set the data source and options
- Resize via the resize handle
Variables¶
Variables are placeholders like $host, $tenant, letting several widgets react to the same selection at once.
Variable types¶
| Type | Values |
|---|---|
query |
dynamic from the DB: hosts, checks, tenants, tags |
custom |
list of manually maintained values |
Using variables in widgets¶
In any widget option that expects an ID list (host_ids, service_ids, tenant_ids, …), insert the variable.
URL persistence¶
Variable values land in URL params:
That makes "share the current view" trivial: copy the browser URL.
Time range¶
One global time range per dashboard (default from the dashboard config, overridable via the from/to URL params): now-15m … now-30d, or a fixed range. Applies to all time-based widgets.
Versioning¶
Every config change automatically creates a new version (dashboard_versions) — with author and timestamp. The last 50 versions are kept; older ones are dropped on the next save.
In the dashboard header → the history icon: list of recent versions. Restore resets the config to the chosen version — which itself creates a new version (nothing is lost, everything is reversible).
Home dashboard¶
Every user can set a custom dashboard as their own home page: the house icon in the dashboard header. From then on, login (or clicking the "Vesana" logo) goes straight there instead of the main dashboard.
- Stored in
user_preferences.home_dashboard_id(no foreign-key binding — if that dashboard is later deleted, the home page automatically falls back to the main dashboard, no broken state). - Removable again via the same icon.
- Purely per-user — doesn't affect anyone else.
Sharing (public link)¶
A dashboard is normally only visible to logged-in users of its tenant. On top of that, you can generate a public, tokenized link — read-only, no login required:
Dashboard header → Share:
| Field | Meaning |
|---|---|
| Validity | 1–3650 days (default 30), or no expiry |
| Password | optional — adds extra protection to the link |
| Fixed variables | certain variables can be pinned to a fixed value so the visitor can't change them |
The link has the form /public/d/<token>. With password protection, the page asks for the password once and then remembers a time-limited session in the browser. Layout and widgets are fixed; time range and (unpinned) variables remain adjustable by the visitor. All data queries on the public page are server-side scoped to the dashboard's tenant — a visitor can't query another tenant's data via the public API.
The link can be revoked instantly via Remove share (the token is deleted; a new share generates a new token).
Permission¶
| Permission | Effect |
|---|---|
dashboards.create |
create new dashboards |
dashboards.edit |
edit, share, restore versions |
dashboards.delete |
delete (except a tenant's default dashboard) |
Viewing isn't gated by its own permission — every logged-in user sees the dashboards within their tenant scope.
Example¶
A dashboard called "Datacenter Health":
┌─────────────────────────────────────────────────────────────┐
│ Variable: Tenant=$tenant, Host=$host, Time=now-24h │
├─────────────────────────────────────────────────────────────┤
│ [Status overview] [Current problems] [Host grid] │
├─────────────────────────────────────────────────────────────┤
│ [Top 10 problems by time (bar chart)] │
├─────────────────────────────────────────────────────────────┤
│ [CPU per host (heatmap)] [Disk per host (bar chart)] │
├─────────────────────────────────────────────────────────────┤
│ [Capacity predictions] │
└─────────────────────────────────────────────────────────────┘
Next¶
- Widget reference — detail on all widget types
- Main dashboard — the fixed standard overview
- TV mode — custom dashboard on the wall
- Public status pages — the external counterpart for customers