Envoy
An Envoy that traces itself reports a SERVER span for the request it receives and a CLIENT span for its call to the
backend, so it is analyzed like any service, as Instrumenting a
gateway describes. The OpenTelemetry Demo’s browser calls frontend-proxy:8080, an Envoy that traces itself, which forwards to
frontend at 172.19.0.19:8080 and keeps the Host header, so frontend’s SERVER span reports
server.address=frontend-proxy. Each hop is learned from its own two spans:
| Caller span | Callee span | Row |
|---|---|---|
frontend-web CLIENT to frontend-proxy:8080 |
frontend-proxy SERVER |
frontend-web->frontend-proxy:8080 → frontend-proxy |
frontend-proxy CLIENT to 172.19.0.19:8080 |
frontend SERVER |
frontend-proxy->172.19.0.19:8080 → frontend |
The address frontend reports is never used, so the proxy keeps its own node. The proxy’s spans need
service.layer=OTLP_GENERAL too: an unanalyzed proxy sends no pairing fact, and its callers stay address-named.
Do not also list an instrumented gateway such as this one in gateways.yml: its address would never be aliased, and
its callers’ edges would end on a VIRTUAL_GATEWAY node instead of on the gateway’s own service.