I think this is a gap in our logging capabilities right now. We're working on a broader end-to-end correlation feature that I think would help here, but it's not yet available. Would you mind opening an issue in our GitHub repo to track adding support for making it easy to view the framework traces together with the app traces, like what you're trying to accomplish? https://github.com/Azure/azure-functions-durable-python
Linking Activity to Orchestrator logging
I have an Azure Durable Functions app using Python.
There is some logging going on inside my activity functions, but I'm currently not able to join them to any orchestrator who could have called it.
According to Microsoft Learn, the tracking data for a single instance can be found using a relatively simple Kusto query, such as:
let targetInstanceId = "738d35af29844603b4e68bfc6698b38f";
let start = datetime(2020-09-23T09:50:00);
traces
| where timestamp > start and timestamp < start + 30m
| where customDimensions.Category == "Host.Triggers.DurableTask"
| extend functionName = customDimensions["prop__functionName"]
| extend instanceId = customDimensions["prop__instanceId"]
| extend state = customDimensions["prop__state"]
| extend isReplay = tobool(tolower(customDimensions["prop__isReplay"]))
| extend sequenceNumber = tolong(customDimensions["prop__sequenceNumber"])
| where isReplay != true
| where instanceId == targetInstanceId
| sort by timestamp asc, sequenceNumber asc
| project timestamp, functionName, state, instanceId, sequenceNumber, appName = cloud_RoleName
Although this does report back the activities that were started, it doesn't show the logging from my Python app.
However, I can find the logging when directly digging into traces
- for example:
let start = datetime(2020-09-23T09:50:00);
traces
| where operation_Name == 'NAME_OF_MY_ACTIVITY'
| where timestamp >= start and timestamp < start + 30m
| limit 20
This does in fact yield my logging, but doesn't provide me with any clues to which orchestrator instance this activity "belonged":
-
customDimensions['prop__instanceId']
is empty -
operation_ParentId
points to theid
inside therequests
table - .... which is where the trail ends
So basically I see the two pieces:
- Orchestrator on the one side, with activity status but without activity logging
- Activity logging on the other side, without any clues (as far as I can see) how to link this to the accompanying orchestrator
How can I see which activity-level logging belongs to which orchestration?