
Health indicators connect Davis events to your app's UI, giving users a consistent health view wherever entity data is shown. Active alerts surface as colored chips in the entity header and entity lists, as event markers on charts, and as rows in the Alerts table. Chips always show current health, even when browsing a past timeframe. Each chip opens an overlay with the matched events and actions to navigate to the affected metric, investigate the underlying problem, or edit the alert configuration.
Health indicators may be configured in two places:
DQL Table — add alertGroups on the table to match events to named alerts, add the ALERTS_LOOKUP built-in lookup with lookupField pointing to your entity ID column, and include the HEALTH_ALERTS_COLUMN and CUSTOM_ALERTS_COLUMN built-in columns. See DQL Table and AlertLookupRelation below.
Entity Details — add alertGroups to DetailsComposition and set alertQueryParams to control how events are fetched for the entity header. See Entity Details composition.
A minimal table showing health alerts and custom alerts as dedicated columns. The ALERTS_LOOKUP fetches Davis events and joins them to rows via lookupField (your entity ID column). alertGroups defines which events map to named chips; any unmatched events become custom alerts automatically. Include both HEALTH_ALERTS_COLUMN and CUSTOM_ALERTS_COLUMN — the second catches events that don't match any configured group, which may still be actionable.
groupName is the chip label visible in entity lists and the entity header; displayName is the label shown per event inside the chip overlay. In matchConditions, values are matched against event attributes — use ["*"] to match any value for an attribute, or list specific strings such as built-in Davis event type names.
{"type": "dql-table","id": "services","title": "Services","alertGroups": [{"groupName": "Failure rate","alerts": [{"displayName": "Failure rate","matchConditions": { "event.type": ["SERVICE_ERROR_RATE_INCREASED"] }}]},{"groupName": "Response time","alerts": [{"displayName": "Response time","matchConditions": { "event.type": ["SERVICE_SLOWDOWN"] }}]}],"dqlQuery": {"query": "smartscapeNodes \"*\" | filter type == \"SERVICE\" | fields id, name","idField": "id","lookups": [{"builtInLookup": "ALERTS_LOOKUP","lookupField": "id"}]},"columns": [{ "id": "name", "field": "entity.name", "displayName": "Service" },{ "builtInColumn": "HEALTH_ALERTS_COLUMN" },{ "builtInColumn": "CUSTOM_ALERTS_COLUMN" }]}
alertQueryParams scopes the event query to the right entity type; it is optional, but omitting it returns events for all Smartscape nodes — always include it with $(entityId) to scope alerts to the current entity. filters accepts DQL filter expressions (without the leading | filter). alertGroups works the same as in the DQL Table — unmatched events become custom alerts. Use charts on an alert to link it to a chart card so the View metric action navigates there directly.
In filters, replace the entity type string (for example, "SERVICE") with your entity's Smartscape type — the same value used in filter type == "..." in DQL. $(entityId) resolves to the ID of the entity currently open in the details panel. See DQL variables for the full list of available variables.
{"type": "details","id": "service-details","alertGroups": [{"groupName": "Failure rate","alerts": [{"displayName": "Failure rate","matchConditions": { "event.type": ["SERVICE_ERROR_RATE_INCREASED"] },"charts": ["golden-signals"]}]},{"groupName": "Response time","alerts": [{"displayName": "Response time","matchConditions": { "event.type": ["SERVICE_SLOWDOWN"] },"charts": ["golden-signals"]}]}],"alertQueryParams": {"filters": ["iAny(smartscape.affected_entities[][type] == \"SERVICE\") AND iAny(smartscape.affected_entities[][id] == $(entityId))"]},"content": {"type": "tabs","items": []}}
Health indicators are configured via alertGroups on DetailsComposition (see Entity Details composition), DqlTable (see DQL Table), and ChartGroup (see Chart Group). The reference types are described below.
HealthAlertGroupSupports the Conditional mixin (see Conditional rendering).
| Property | Type | Description |
|---|---|---|
|
| Display name of the health indicator chip. |
|
| Alerts belonging to this group. |
|
| When true, the group doesn't appear as an alert in the detail view. |
|
| Group is hidden when conditions aren't satisfied. |
HealthAlertSupports the Conditional mixin.
| Property | Type | Description |
|---|---|---|
|
| Event attribute conditions that must match for the alert to fire. |
|
| Alert display name. |
|
| Conditions that, if matched, exclude this alert. |
|
| Chart IDs this alert is associated with. |
|
| How the alert appears on associated charts. |
|
| Alert is hidden when conditions aren't satisfied. |
HealthAlertConditionsRecord<string, string[] | ['*']> — a map from event attribute name to a list of allowed values. Use ['*'] to match any value for a given attribute.
ChartConfiguration| Property | Type | Description |
|---|---|---|
|
| Renders the alert as an event marker on the chart timeline. |
|
| Marker/series color override. |
AlertQueryParamsParameters for the standalone health-indicators query (used by DetailsComposition.alertQueryParams).
| Property | Type | Description |
|---|---|---|
|
| DQL filter expressions (without the leading |
|
| Extra fields included in the health indicator record. |
|
| Pre-filter for Davis problems. |
|
| Pre-filter for volatile attributes like |
|
| Overrides |
|
| Additional fields to expand. |
AlertLookupRelationUsed inside the AlertLookup built-in lookup's relations array (see DQL Table).
| Property | Type | Description |
|---|---|---|
|
| Field prefix for the relation's output fields. |
|
| Filter expression identifying events for this relation. |
|
|
|
|
| Distinguishes configured alerts from custom alerts within this relation. |
|
| Only for |
When type: 'entity-remap', the lookup also produces a generated {fieldPrefix}.original_id output field (the pre-remap entity ID, or null for non-matching rows) — expose it via additionalFields if you need it.
ExtensionsInfrastructure Observability