Docs / Contact / dashboards/building-dashboards
Building Dashboards
This walkthrough assumes you have a service with at least one validation rule and an entity assigned to it. The richer your service's rules, the more the dashboard builder can offer: a field with a between rule gets range-aware charts; a field with an in rule gets status tiles.

Create a dashboard
- Navigate to Dashboards
- Click New dashboard
- Name it (names are permanent; they anchor the dashboard's identity for access control) and save
Add a widget
Open the dashboard, click Edit, then Add widget. The wizard walks through the binding:
The Field and Widget steps appear once a service is chosen, filtered to that field's shape.
Source
Service data for anything your devices publish, or Device health (heartbeat) for memory/disk charts of a single device.
Service
pick the service whose data you want.
Field
the catalog lists every field the service's rules and requiredFields declare, with what the service promises about it (for example number, expected 0–50 or one of: ok, warn, crit). Two service-level entries (Validation status and Message volume / liveness) are always available.
Widget
the types that fit the field's shape, best default preselected.
- Device filter (optional): chart one device instead of every device on the service.
- Title (optional): auto-generated from the binding if left blank.
A field marked with ? has conflicting rule types (say, both between and contains); the builder charts it as the most specific kind.
Widget types
| Widget | Best for | Shows |
|---|---|---|
| Line chart | numeric fields | bucketed average over time, with the rule's expected range as a shaded band |
| Stat tile | numeric fields | the latest value (red when outside the expected range) with a sparkline |
| Current status | enum fields | the newest raw value, colored by its position in the declared value set |
| Distribution | enum/text fields | stacked counts of each value over time |
| Validation health | whole service | pass/fail trend and overall success rate |
| Liveness | whole service | time since the last publish, over a message-volume trend |
| Device health | one device | memory and disk percentage over time, from heartbeats |
Arrange the layout
In edit mode:
- Drag a widget card onto another to reorder (or use the arrow buttons).
- The S / M / L button cycles a widget's size: small, medium, and full-width.
- Save persists the whole layout; Cancel discards every edit at once.
Reading the data
- The time-range picker applies to the whole dashboard, and only offers ranges inside your plan's retention window. If a saved range exceeds it, the dashboard notes that it clamped.
- Data refreshes every 30 seconds while the tab is visible.
- A numeric widget shows a gap where a device sent something that isn't a number; a gap is information (bad data arrived), not an error. Numeric strings like
"21.5"chart normally. - A distribution can include values the service never declared (a device sending
"meltdown"when the rule saysok | warn | crit). That mismatch is worth investigating, and the validation-health widget will show the failures.
Limits
- Up to 24 widgets per dashboard and 20 dashboards per account.
- Dashboards chart
publishmessages; only messages from entities assigned to the bound service appear. - One widget binds to one field. Two dynamic actions validating the same field chart together, since the field path, not the action name, is what identifies the data.
Tendrl