???
Grafana Cloud is the observability backend for all non-local environments.
For the accounts that are used, see section Differentiating Environments below.
Telemetry is written to Grafana Cloud even in local environments instead of something like .NET Aspire Dashboard that comes with an Otel collector and viewers for traces, logs and metrics.
This is because the client side of Flowmazon Frontend app (i.e. the browser bundle) is instrumented using Grafana Faro. This cannot write to an Otel collector and requires a Faro Collector which is provided by Grafana Cloud (I had a hard time setting up Grafana Alloy - Grafana Otel collector distribution which provides a Faro listener - up and running locally). Secondly, the Frontend Observability instance you create to receive Faro telemetry provides brilliant visualisations which you wouldn’t get even if you could collect telemetry from Faro locally into a Grafana Alloy instance.
A Free Grafana Cloud account provides a single instance of the Grafana Cloud’s LGTM stack to which multiple environments write telemetry. We use two different accounts and therefore get two different stacks:
production
and staging
environmentsvscode-
fullstack and compose
- and from PR-specific Preview environmentsSee the definition for an environment of interest (in Environments section) to find out the value of deployment.environment.name
that identifies that environment in telemetry as well as how it is configured in the environment.
Grafana Faro instrumentation of the browser bundle of the app sends telemetry to a Frontend Observability instance in Grafana Cloud and multiple of these can be created. We create one instance of Frontend Observability per environment (using Terraform in case of non-local environments) which is more convenient than getting all environments that write to a Grafana Cloud account to write to the same instance.
A Frontend Observability instance provides nice visualisations of user’s interactions with the app in the browser, including Web Core Vitals, a RED metrics dashboard, User journeys and sessions and it is really nice to be be able to see it per-environment.
The fundamental signals - traces, logs, metrics and profiles - are still forwarded by the Faro collector to the single LGTM stack in the account and can be seen there, where they, along with signals sent from backends over Otel (i.e. by the Flowmazon API and by the server side of Flowmazon Frontend), can be differentiated by environment (deployment.environment.name
attribute) and component which sent in the telemetry (service.name
attribute).