-
Notifications
You must be signed in to change notification settings - Fork 175
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Prototype network.peer/local.* semconv in a more esoteric networking instrumentation #373
Comments
Prototyped AMQP instrumentation in Java inside Azure SDK built on top of Apache Qpid Proton library.
Sources:
The trace with AMQP instrumentation: Conclusion:
|
This sounds like it could be done once generically and would then support all kinds of libraries? I wonder if we won't have the same problem for HTTP, since based on the URL you don't know if it uses some UDP-based HTTP/3. And I wonder what would even be semantically correct, isn't there some kind of switching going on? |
It should be possible to create a reusable helper that'd work for the common case. It should work great in .NET where the ecosystem mostly uses types provided by the platform. It can be tricky in Java, Python, or JS - instrumentation for libraries like Netty would still need to do something custom because of custom implementations for sockets/channels in the library.
Yep, this applies to HTTP as well - channels/sockets/other platform network low-level types are the same between different protocols. It's still possible to determine if it's UDP, it just needs more work and knowing the implementation details. E.g. there are different In any case, it seems it's not the problem of attribute definition, but the availability of this information. One thing we can consider is to require I.e. change to "If not default ( This way, a lack of protocol would mean a lack of information (and not default value). We should still be able to change the condition in the future if we'd have reliable ways to determine the protocol. |
For Python specifically, I contributed a base http instrumentation component that can be used to enrich the HTTP spans of most (all?) libraries based on it with attributes captured from the raw socket. IIRC it works by cooperating with the actual HTTP instrumentations which set a context attribute telling that they request socket attributes. When the socket is then created, the library kicks in, sees the context attribute and enriches the currently active span. This approach is tricky, but could also work in other technologies whenever the library doesn't let you access the socket (attributes) you need. |
Closing, I believe the prototype achieved what we wanted and resulted in a few new issues/PRs for consideration |
Requested by @jsuereth in SemConv SIG meeting. @lmolkova proposed possibly using AMQP in Azure SDK.
The text was updated successfully, but these errors were encountered: