Azure-functions-durable-extension: Best approach for distributed tracing in Durable Functions

Created on 21 Nov 2020  Â·  7Comments  Â·  Source: Azure/azure-functions-durable-extension

Hi team, I have been looking the best approach to implement distributed tracing in durable functions.

I was trying to implement OpenTelemetry using Azure Functions to get all the information in Jaeger or Zipkin like any other .Net Core app using OT, but I had difficulties it seems like it's not supported by internal restrictions (hosted services), I already submitted another issue on this repo OpenTelemetry DotNet repo: https://github.com/open-telemetry/opentelemetry-dotnet/issues/1602.

In addition, I haven't found any updated information about how to implement distributed tracing with durable functions using Application Insights, I found this README but it's using another library Microsoft.Azure.WebJobs.Extensions.DurableTask.Telemetry.

My question to you would be: is this library ready to be use in some specific production environment? or should I wait any integration to start using it in prod?

I just want to confirm if there is any support to work with other cloud native exporters like zipkin or jaeger, I was planning to use OpenTelemetry as I mentioned but just want to discard that alternatives.

I would appreciate any response.

Thanks,
RC

question

All 7 comments

Regarding the README you found: the Microsoft.Azure.WebJobs.Extensions.DurableTask.Telemetry was an alpha package for a private preview test of distributed tracing in Durable Functions with Application Insights. We are actually in the progress of merging this into our main dev branch so it will be included in a part of release v2.4.0 of the normal extension Microsoft.Azure.WebJobs.Extensions.DurableTask. Expect that to come out by the end of the month, and you can track the state of that progress here.

At this time, we don't have any explicit plans to support other cloud native exporters at this time, as most of our customers use Application Insights, but the design for our distributed tracing was meant to be flexible, and we would be happy to take community contributions to allow support for other logging providers.

Thank you @ConnorMcMahon, then I will wait the next release to replace the alpha library I'm using with the DurableTask.Telemetry extension feature.

Regards,
RC

@robece, to clarify: you will no longer need a separate DurableTask.Telemetry package. It will be supported in the mainline Microsoft.Azure.WebJobs.Extensions.DurableTask v2.4.0 release, and you will just need to add a field to your host.json to turn on the feature.

Expect more details in the release notes for v2.4.0.

Hi @robece ! As of recent, I've started leading the effort of enabling Distributed Tracing for Durable Functions. We're currently tracking the feature, as a whole, in this ticket: https://github.com/Azure/azure-functions-durable-extension/issues/939 . Other smaller tickets may arise from time to time as we address specific limitations and bugs of the current implementation.

As Connor mentioned, the upcoming release of Durable Functions should include an in-progress version of our distributed tracing implementation for Application Insights. I am personally really interested in making this feature flexible enough to let customers use their telemetry tooling of choice, such as the ones you listed.

In the meantime, I would suggest subscribing to the feature-tracking ticket (https://github.com/Azure/azure-functions-durable-extension/issues/939). If possible, I would also appreciate it if you could describe your use-case as a comment in that ticket as well. If other customers end up engaging with it, I would have more leverage to prioritize it :)

That's all for now! Please reach out anytime âš¡ âš¡

At this time, we don't have any explicit plans to support other cloud native exporters at this time, as most of our customers use Application Insights

Isn't this kind of a circular issue, as there's no other choice but to use Application Insights then of course most customers will be using it?

@evilpilaf : sorry for the late reply here! Yes, I think you're right. I would personally love to design this feature in a way that's amenable with other cloud native exporters. At the moment though, since we're still in the early stages of building this feature, our focus will be on Application Insights. While doing so, I'll keep an eye out for keeping the architecture flexible enough such that, once the feature is more stable, we can consider expanding our dist. tracing clients :)

More succinctly put: so long as I'm still the main developer leading this effort, you can count that I'll keep an eye out for opportunities to support distributed tracing clients beyond just Application Insights. It's just that, at the moment, our primary concern is to get the feature out of "beta" and into general availability 😃 . The fastest path towards that, for us, is Application Insights.

That being said, these are just my current aspirations. Things could change in the future, just to be clear.

Was this page helpful?
0 / 5 - 0 ratings