-
Notifications
You must be signed in to change notification settings - Fork 174
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
Rename/replace (client|server).socket.(address|port)
attributes with network.(peer|local).(address|port)
.
#342
Conversation
Is avoiding duplication a strict guideline that is written down somewhere? I'm asking because I have the feeling that this guideline contributes to some of the confusion in this context of semantic conventions.
I really like that clarity about separation between the Concrete example:A web-server instrumentation retrieves the IP from the incoming request. Now, where to put that IP, So, I'm just wondering how problematic it would actually be if we would just consistently set Not blocking this PR, this was just on my mind when reflecting the discussions we had around this specific context. |
I believe the guidance for instrumentations today is:
I.e. This way there is no duplication problem and it's still simple to use. |
good point 👍 |
I'd like to suggest the following:
[EDIT] Another approach is that we keep physical attributes (with whatever names) and start rendering attribute stability explicitly identifying physical socket attributes as experimental (on spans). |
I can also imagine a future when we won't want physical connection attributes on HTTP spans. E.g.:
|
for some reason I'm thinking of |
I liked @lmolkova's suggestion above (and I think @Oberon00 made similar previously) about I put together a new proposal in diagrams: https://gist.github.com/trask/711f91feda06115353e4e56cfebedf5d a few notes
I think duplication is an orthogonal concern, so would be good to get thoughts on both the modeling, and separately on the duplication. |
950c3f8
to
a45beec
Compare
(client|server).socket.(address|port|domain)
attributes with network.(client|server).(address|port|ip)
.(client|server).socket.(address|port)
attributes with network.(peer|local).(address|port)
.
@lmolkova @Oberon00 @AlexanderWert I updated the PR, and the title and description, ptal, thx! |
I'm thinking that maybe it's not worth trying to incorporate I think or on the client side to capture I think Which brings us to the question of whether we should move forward with this PR at all, since one of the drivers for #321 was to try to incorporate I still like a few things about this PR:
|
I think that's a valid point for HTTP semconv!
Also +1 on moving to |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like the use of peer
and local
.
+1 |
@trask I think that's fine! I think the logical addresses are more important for logs (e.g. access logs). And depending on certain concrete use cases in the future (e.g. we would explicitly define / document semantic conventions for NGINX access logs), we can still overwrite / precise the explicit meaning of |
IMHO, the network.peer/local attributes should be so low-level and technical that we should never (need to) override them. Specific instructions for how to get these pieces of information (e.g. formatter code, getter to get to the socket, etc.) are fine but even slightly overwriting the meaning should be a no-go for these IMHO. |
@trask maybe it's just me not getting it, but in the diagrams you mentioned before https://gist.github.com/trask/711f91feda06115353e4e56cfebedf5d, isn't the last scenario exactly this one? In there you have |
@Oberon00 The meaning of |
You are right, I did not think of a situation where multiple network connections are involved in a single telemetry item (could also happen with spans). |
just wanted to mention that this extends beyond |
this diagram shows what's reported from the server (as opposed to what's reported from reverse proxy). the server only has a single network connection (to the reverse proxy). if you were emitting telemetry from the reverse proxy itself, you'd have two network connections to deal with (one to the client, and one to the server), and in that case it's not clear which one |
Fixes open-telemetry#1541. As per open-telemetry#342 this should be `network.peer.address` instead.
Renames/replaces
(client|server).socket.(address|port)
attributes withnetwork.(peer|local).(address|port)
.Motivation:
Moving these under
network.*
makes it clear that these describe the network connection.Renaming these to
peer
andlocal
makes it extra clear that these describe the direct network peer connection. I think enough so that the extra notes are no longer needed:Removes
server.socket.domain
. This was for modeling proxies, but this use case could be addressed after stability (e.g. possibly withproxy.*
.Note: I don't think schema transformation is possible for this change.
cc @lmolkova @Oberon00 @AlexanderWert