SAService Architect Back to designer
SAService ArchitectDocumentation
Guide <service-name>/grafana

Generation and file layout

Each service receives editable Jsonnet dashboard sources and generated Grafana JSON. Shared templates are combined with runtime-specific overrides selected by code generation.

When to use

Use this page to understand the generated dashboard, its panels, and the signals behind them.

Behavior

  • The code generator creates Jsonnet sources for every generated service. make grafana-dashboards renders them to Grafana JSON.

Build command

make grafana-dashboards runs the generated renderer for every service. make docker-up depends on dashboard generation, so the JSON is refreshed before the observability stack starts.

Generated paths properties

Panels included in this dashboard.

PropertyTypeDescription
`<service-name>/grafana/*.jsonnet`Panel

Dashboard sources. <service-name> is derived from the Service.name configured in the designer: it is lowercased and whitespace is removed.

`<service-name>/grafana/_lib.libsonnet`Panel

Shared Grafana builders, variables, Prometheus expressions, rates, histogram quantiles, and heatmap helpers.

`<service-name>/grafana/generate.generated.sh`Panel

Generated rendering script used by the workspace Makefile.

`<service-name>/grafana/dist/*.json`Panel

Rendered Grafana dashboards consumed by Docker Compose and Kubernetes provisioning.

Template selection properties

Panels included in this dashboard.

PropertyTypeDescription
Canonical templatesPanel

The base set contains Service, Streams, Data Sources, Data Sinks, Task Pools, Join Storage, HTTP Server, HTTP Client, gRPC Server, gRPC Client, and Runtime dashboards.

Runtime overridesPanel

The generator replaces same-named canonical files with templates for Go, C++ userver, C++ Boost, Python, Rust, or TypeScript where their metric contracts differ.

Runtime additionsPanel

A runtime can add dashboards that are not part of the canonical set, such as Kafka Client.

Temporal conditionPanel

13_temporal.generated.jsonnet is emitted only when the service graph uses a Temporal connector.

Configuration example

make grafana-dashboards