Observability
Add Observability. One node runs a full stack for the workspace: Grafana for dashboards, Loki for logs, Tempo for traces, Prometheus for metrics, and an OpenTelemetry collector. It uses a fixed 1.5 GB of memory and 2.5 CPU from your quota.
Logs and metrics with no code
Section titled “Logs and metrics with no code”As soon as the node runs, it collects the output (stdout/stderr) and CPU and memory use of every container in the workspace, linked or not, every 30 seconds. Nothing to install. Only your own workspace’s containers are included.
Traces from your code
Section titled “Traces from your code”Link an app to the Observability node and redeploy it. The app gets:
| Variable | Value |
|---|---|
OTEL_EXPORTER_OTLP_ENDPOINT |
http://<node>:4318 |
OTEL_EXPORTER_OTLP_PROTOCOL |
http/protobuf |
OTEL_SERVICE_NAME |
the app’s name |
Any OpenTelemetry SDK reads these on its own. For Node.js, for example:
npm install @opentelemetry/auto-instrumentations-node# start commandnode --require @opentelemetry/auto-instrumentations-node/register server.jsOpening Grafana
Section titled “Opening Grafana”- Turn the node’s Public switch on and deploy. Grafana is then at
https://obs-<id>.<edge domain>. - Sign in as
adminwith the password shown under Accounts.
Dashboards for app overview, logs and traces, and containers are ready on first sign-in. Add more Grafana users from inside Grafana; public sign-up is off.
The node panel also has a quick view: CPU, memory, restarts, error counts and the newest error lines for each service, without opening Grafana.
Settings
Section titled “Settings”| Setting | Range | Default |
|---|---|---|
| Log retention | 1 to 30 days | 7 |
| Trace retention | 1 to 14 days | 3 |
| Trace sampling | 1 to 100% | 100% |
Changing these restarts the observability stack; your apps keep running.