Per-Service VM Tracing Starts With a Receiver and a Redeploy
Auto-injecting tracing variables into every deployment meant tracing started whether a service was ready for it or not. The new model removes auto-injection entirely. Each service owner decides when traces start flowing.
Each service owner opens Observability, then Requests, picks the receiver format that matches their SDK, and clicks Add variables and redeploy. The platform saves the chosen variable pair as service environment variables and triggers a redeployment. Selective instrumentation is the practice of enabling tracing per service rather than fleet-wide, so each owner controls the cost and the timing.
Three Receiver Formats Cover Most SDKs
The choice sits under Observability, then Requests for each service. Pick the format that matches how your SDK exports spans.
| Receiver | Protocol | When to use |
|---|---|---|
| HTTP (OTLP) | HTTP/protobuf | OpenTelemetry SDK with an HTTP exporter |
| HTTP (Zipkin) | HTTP/JSON | Zipkin-native SDK or library |
| gRPC | gRPC/protobuf | OpenTelemetry SDK with a gRPC exporter |
Pick the wrong receiver and spans will not arrive. Match the format to what your SDK exports, not to what the backend prefers.
At deploy time, the deployer replaces the ZOP_DOCKER_BRIDGE token in those variables with the VM’s actual docker0 bridge address. The service connects to the local collector without hardcoding an IP that changes between hosts. If the service already defines an environment key that the platform would set, the deployer leaves the existing value in place.
GoFr applications manage their own TRACE_EXPORTER and TRACER_URL variables. The platform does not inject those values, so GoFr owners configure tracing directly in their application settings.
The Requests Tab Shows Four Layers of Signal
After a service starts sending spans, the Requests tab builds four views from the data.
The summary shows overall throughput and error counts at a glance. The requests-per-minute chart lets you spot load spikes or sudden drops. The endpoint breakdown splits traffic by route, so you see which path carries the most volume or the highest error rate. Recent traces list individual requests with their latency and status, the same depth of detail that compliance audit findings provide for governance.
A team running ten VM services with resource limits can enable tracing on the two that matter first and add the rest later. The role-based access model controls who can change the receiver and who can only view the Requests tab.
Tracing Stops Helping When There Is Nothing to Instrument
Tracing works best when a request crosses service boundaries and you need to see the full path. For a single-service VM that handles requests internally, the endpoint breakdown may be the only useful view.
Tracing also requires the service to run an instrumentation library. A legacy binary with no SDK cannot emit spans, regardless of the environment variables the platform generates. In that case, wrapping the binary in a container is the more realistic path to tracing.
VM services that already ship logs and metrics and track billing activity per day now have the third pillar. The opt-in model means nobody pays the overhead of tracing until they choose to.
