For the complete documentation index, see llms.txt. This page is also available as Markdown.

Microservices Lineage

Microservice call lineage — OpenTelemetry traces ingested through odd-tracing-gateway and rendered alongside data-object lineage.

This feature traces the data provenance of microservice-based applications. ODD represents microservices as catalog objects and shows their call graph as a typical lineage diagram — the same UI surface as Data Objects Lineage, with microservice nodes participating alongside datasets, transformers, and the rest of the entity model.

How microservices land in the catalog

Microservice lineage is sourced from OpenTelemetry traces. The path is:

  1. The microservice (instrumented with OpenTelemetry) emits trace spans to a telemetry collector — typically an OTel Collector or directly to a backend that speaks OTLP.

  2. odd-tracing-gateway — the platform's only standalone gateway push adapter today — receives those traces, infers the microservice topology and the calls between services, and emits the corresponding ODD entities (microservice transformers + the call edges between them) into the platform's Ingestion API.

  3. The platform stores the inferred entities in the catalog and renders their lineage in the same Lineage tab as data-object lineage.

Operator-mental-model: "push" — microservices push their traces and the gateway forwards. The Platform-side leg is a pull hidden behind the gateway's standalone deployment, which is why odd-tracing-gateway is classified as a standalone-gateway push adapter in the architecture chain.

Where to find it in the UI

Microservices appear in the catalog as MICROSERVICE-class transformer entities. From any microservice detail page, the Lineage tab opens the same graph view used for data-object lineage — call edges between microservices flow alongside dataset / transformer / consumer edges where the platform has visibility into both surfaces.

Access model

Microservice lineage uses the same read-collaborative posture as the rest of the catalog: any authenticated user with read access to the platform's data entities can request the upstream / downstream graph of any catalogued microservice, regardless of which team owns the underlying service. The platform's lineage repository does not perform an ownership-side filter on the read path. And when the platform runs with auth.type=DISABLED, "authenticated user" widens to any unauthenticated client that can reach the network port — the lineage read is then anonymous.

Supported payload fields

The lineage response DTO is class-agnostic — every node carries the same shape regardless of whether it is a dataset, transformer, consumer, or microservice. The fields that survive on every node:

  • Identity (id, oddrn, externalName, internalName).

  • Class / type discriminators (entityClasses, dataEntityType).

  • The lineage edges to upstream and downstream neighbours.

  • Owner / namespace / data-source attribution.

Microservice-specific OpenTelemetry trace fields — operation_name, span_kind, error_rate, p95_latency, callsPerMinute, per-call cardinality, service-call cardinality — are silently dropped at the response-DTO mapper. The lineage endpoint returns the topology (which microservice calls which) but not the per-call metadata an APM consumer would expect. If you ingest those fields through a custom odd-tracing-gateway extension, they live in the platform's database but do not surface on the lineage API today.

Mitigation today. If your operator workflow needs the per-call metadata, query the upstream APM / tracing backend directly — the lineage API is the topology surface. The platform's lineage payload shape is generic across all entity classes; a microservice-specific payload extension is on the roadmap but not shipped.

Where to next

  • Data Objects Lineage — the catalog-side lineage surface that microservice nodes render alongside.

  • odd-tracing-gateway — the standalone gateway that turns OpenTelemetry traces into ODD microservice entities.

  • Architecture — the platform-wide data-flow diagram, including the gateway's position in the producer-side topology.

  • Main Concepts → The architecture chain — where standalone-gateway push adapters sit among the producer-side concepts.

  • API Reference → Lineage — the same lineage HTTP surface used for both data-object and microservice lineage. Calling it directly? Always pass an explicit lineage_depth — omitting it returns HTTP 500, not a default-depth graph.

Last updated