-
Notifications
You must be signed in to change notification settings - Fork 941
BREAKING: Replace net.peer.*/net.host.* with client.*/server.* (and source.*/destination.*)
#3402
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
Conversation
445e174 to
7f0c488
Compare
857434a to
e61495d
Compare
|
I think rather than just renaming, this is a complete change of concepts behind representing the related information. Which is a bit of a shame, since quite a bit of brain power went into the current net.* conventions by now. |
great questions. The good things about the change are:
The con is obviously that it will break everyone and that's why we're trying to come up with a transition plan #3404 (which currently suggest major version bump for instrumentations) plus months of support for old instrumentations) |
as a layperson in networking terminology, I found peer/host to be very confusing when adding these attributes to the Java HTTP instrumentation. I think using client/server terminology is a big win. |
it's a breaking change for OTEL, so hardly a win in itself.
Not really following this, can you give an example? To me, the client/server nomenclature is a simplification that does not always make sense. E.g. there's no such terminology in the TCP stack because it only deals with packets passing, not the purpose of the packets or the roles of the actors. And even when we rise to the application level, there are many scenarios where there are equal players (peers) communicating, e.g. nodes in Paxos or any gossip protocol, actors exchanging messages in systems like Akka, etc. How would one decide who is a client or a server in those scenarios? |
@AlexanderWert how would you model this in ECS? (is this the purpose of |
@trask @yurishkuro Yes, exactly! In ECS |
|
@lmolkova I'm wondering if |
3659b9f to
2fb734a
Compare
We can definitely add one (or keep using messaging.operation) once we get to gRPC streaming or similar. At the same time, it's not necessarily important to know a direction when tracing a packet. E.g. I want to count all packets from |
|
If i have |
In the case of tracing signals (i.e. spans) the SpanKind (e.g. In the case of metrics, the semantics of the metric itself imply whether it's server or client. For example, Similar situation with logs. Here, the instrumentation scope and the resource attributes provide the context what kind of logs are being collected. @Oberon00 summarized it very well:
|
@AlexanderWert I don't think that's the case for logs. If you have a service that logs a line with When using source/destination instead of client/server, this applies to spans & metrics as well since source/destination may flip around for the same connection. |
|
Since this was merged without solving the problem, I created a follow-up issue: open-telemetry/semantic-conventions#62 |
|
Rename http.client_ip -> client.address
Fixes #3793 ## Changes Update OpenTelemetry to Zipkin Transformation to handle attributes from older semantic conventions in a backwards compatible way so that following attributes are (again) handled: - `net.peer.name` - `net.host.name` - `net.sock.peer.addr` & `net.sock.peer.port` - `server.socket.domain` - `server.socket.address` & `server.socket.port` The backwards compatibility of a stable OpenTelemetry to Zipkin Transformation was broken by: - #3402 - #3713
…` (and `source.*`/`destination.*`) (open-telemetry#3402)
Fixes open-telemetry#3793 ## Changes Update OpenTelemetry to Zipkin Transformation to handle attributes from older semantic conventions in a backwards compatible way so that following attributes are (again) handled: - `net.peer.name` - `net.host.name` - `net.sock.peer.addr` & `net.sock.peer.port` - `server.socket.domain` - `server.socket.address` & `server.socket.port` The backwards compatibility of a stable OpenTelemetry to Zipkin Transformation was broken by: - open-telemetry#3402 - open-telemetry#3713
…` (and `source.*`/`destination.*`) (open-telemetry#3402)
…` (and `source.*`/`destination.*`) (open-telemetry#3402)
…` (and `source.*`/`destination.*`) (open-telemetry#3402)

Fixes #3199
Switches from peer and host to client and server terminology and renames:
net.peer.nameandnet.host.name->server.addressnet.peer.portandnet.host.port->server.port,net.sock.peer.addrtoserver.socket.addresson client sideclient.socket.addresson server side,net.sock.peer.porttoserver.socket.porton client sideclient.socket.porton server side,net.sock.peer.name->server.socket.domain,net.sock.host.addr->server.socket.address,net.sock.host.port->server.socket.porthttp.client_ip->client.addressAlso adds
source.*anddestination.*ECS attributes to address network scenarios where client/server terminology is not applicable.Summary of benefits
These describe the same things whether observed from one side or the other, while host and peer describe opposite things depending on which side they are observed from. This makes them more generally useful on logs, where the concept of SpanKind is not inherent in the data model.
net.peer.*may or may not be low cardinality depend on which side we are on, while things are clearer withserver.*andclient.*.hostandpeerhave been a source of confusion. While updating the RPC metrics spec to useclient.*andserver.*, we even found a bug due to our own confusion overhostandpeer.