3rd party requirements breakdown for downstream services

We are using APM for distributed tracing of a data processing pipeline.
Before connecting the pipeline using traceparent, the requirements breakdown in the APM screen was working:

After distributed tracing was connected, requirements breakdown only works for the most top-level service.
Is there a way to fix this?

Thanks

@Koby_Bass which agents (and versions) are you using? What you're describing sounds like it would be caused by the agents not correctly propagating the "tracestate" HTTP header between services.

I'm using the python agent
Currently I'm propagating the tracestate returned from:
elasticapm.get_trace_parent_header()

And initializing the transaction with trace_parent

    transaction = client.begin_transaction(
        transaction_type, trace_parent=parsed_trace_parent
    )

The distributed tracing works, but the 3rd party requirements breakdown is broken
Perhaps there's another way to get the trace_parent?

Just to be clear, there are two different headers that need to be propagated:

  • traceparent, which is necessary for distributed tracing
  • tracestate, which is necessary for calculating span metrics (used for the dependencies table)

Are you implementing your own custom propagation? If so, are you propagating both pieces of information? For example see the httplib2 code: apm-agent-python/httplib2.py at 465fbc23e50d7833331958fa171f933c049e4fce · elastic/apm-agent-python · GitHub

If you are propagating them both, or you're relying entirely on built-in instrumentation, then I think I'll need to defer to someone with more expertise on the Python agent.

Thank you Andrew, I was indeed not propagating the tracestate!
Now it is fixed.

1 Like

This topic was automatically closed 20 days after the last reply. New replies are no longer allowed.