Open MeijerM1 opened 5 months ago
@MeijerM1 this doesn't sound like an APM Server problem. APM Server processes each event independently. If links are being shown in the wrong place, then it's more likely a problem with either the instrumentation or visualisation.
Would you be able to share the documents for one trace? And a screenshot of Kibana to illustrate where things look wrong?
@axw I understand what you mean but the Open Telemetry spec doesn’t have an option to specify link direction like the APM spec has so there is no way to fix it at the instrumentation side.
I’ll see if I can get some data for you later today.
Hmm, Elastic APM agents don't specify a direction on links either: https://github.com/elastic/apm/blob/main/specs/agents/span-links.md. Maybe this is a UI thing based on some heuristics - not sure. Anyway, we'll see.
Some data as requested
The side is the producing span:
{
"@timestamp": [
"2024-05-21T11:11:51.333Z"
],
"agent.name": [
"opentelemetry/dotnet"
],
"agent.version": [
"1.8.0"
],
"data_stream.dataset": [
"apm"
],
"data_stream.namespace": [
"default"
],
"data_stream.type": [
"traces"
],
"event.agent_id_status": [
"missing"
],
"event.ingested": [
"2024-05-21T11:11:54.000Z"
],
"event.outcome": [
"unknown"
],
"labels.team": [
"Neo"
],
"observer.hostname": [
"7ea80461f4bf"
],
"observer.type": [
"apm-server"
],
"observer.version": [
"8.12.1"
],
"parent.id": [
"0732d162d658b50b"
],
"processor.event": [
"span"
],
"service.language.name": [
"dotnet"
],
"service.name": [
"MyService"
],
"service.node.name": [
"AW0SDWK00000F"
],
"service.version": [
"1.0.0.0"
],
"span.duration.us": [
934
],
"span.id": [
"ae64e75fd492038f"
],
"span.name": [
"publish MyEvent"
],
"span.representative_count": [
1
],
"span.type": [
"unknown"
],
"timestamp.us": [
1716289911333246
],
"trace.id": [
"198345c15b0a406b5ecc549218a41d2e"
],
"_id": "Gg7Zmo8BX5usOMpiyCaA",
"_index": ".ds-traces-apm-default-2024.05.21-000328",
"_score": null
}
The consumer transaction:
{
"@timestamp": [
"2024-05-21T11:11:51.424Z"
],
"agent.name": [
"opentelemetry/dotnet"
],
"agent.version": [
"1.8.0"
],
"data_stream.dataset": [
"apm"
],
"data_stream.namespace": [
"default"
],
"data_stream.type": [
"traces"
],
"event.agent_id_status": [
"missing"
],
"event.ingested": [
"2024-05-21T11:11:52.000Z"
],
"event.outcome": [
"success"
],
"event.success_count": [
1
],
"labels.invocationId": [
"2d91ae09-cc18-4a06-83c9-443a423de158"
],
"labels.team": [
"Neo"
],
"observer.hostname": [
"7ea80461f4bf"
],
"observer.type": [
"apm-server"
],
"observer.version": [
"8.12.1"
],
"processor.event": [
"transaction"
],
"service.framework.name": [
"framework"
],
"service.language.name": [
"dotnet"
],
"service.name": [
"MyService"
],
"service.node.name": [
"AW0SDWK000003"
],
"service.version": [
"1.0.0.0"
],
"span.id": [
"d62f731166f3e73e"
],
"span.links.span.id": [
"ae64e75fd492038f"
],
"span.links.trace.id": [
"198345c15b0a406b5ecc549218a41d2e"
],
"timestamp.us": [
1716289911424047
],
"trace.id": [
"146e102a126906cd3111b1aa1b03b954"
],
"transaction.duration.us": [
214700
],
"transaction.id": [
"d62f731166f3e73e"
],
"transaction.name": [
"ProcessXX"
],
"transaction.name.text": [
"ProcessXX"
],
"transaction.representative_count": [
1
],
"transaction.result": [
"Success"
],
"transaction.sampled": [
true
],
"transaction.type": [
"unknown"
],
"_id": "N6_Zmo8B2aDBwvL8v_n5",
"_index": ".ds-traces-apm-default-2024.05.21-000328",
"_score": null
}
Screenshot from the producing side, notice the incoming link that I expect to be outgoing.
Thanks @MeijerM1, this is indeed a UI issue. I don't know the details of how the link direction is inferred - moving it over to the Kibana repo to get the UI folks to take a look.
Pinging @elastic/apm-ui (Team:APM)
Pinging @elastic/obs-ux-infra_services-team (Team:obs-ux-infra_services)
APM Server version (
apm-server version
): 8.12.1Description of the problem including expected versus actual behavior: When creating span links via the OTLP protocol the links are in the wrong direction. E.i. the producing side has incoming links while the consuming side has outgoing links. For us it would make more sense if the producing side had outgoing links and the consuming side had incoming links.
Steps to reproduce:
Provide logs (if relevant): N/A