-
Notifications
You must be signed in to change notification settings - Fork 276
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
Maturity for OTLP/JSON traces #230
Comments
from the issue triage mtg today, discussed this and triaging as P1 to decide whether the JSON portion of trace for OTLP is required for ga |
I believe this was discussed in the past and decided that it is not a requirement for GA. I think we can stay with that decision unless there is any evidence that suggests OTLP/JSON is a necessary for GA. |
Not knowing a use case but knowing that it severely limits our possibilities to change stuff around that would be wire-compatible for the binary serialization (e.g. attribute names, string vs bytes, submessage vs bytes, possiblity moving stuff into oneOf), I would even suggest to keep JSON permanently in alpha or beta. If one wants a stable protocol, one should use the binary protobuf format. |
One complication with this approach, is that exporting from browser requires OTLP/JSON. There are also users that prefer JSON encoding over protobuf. See: open-telemetry/opentelemetry-specification#678. |
As another data point. To accommodate various user needs we have multiple versions of the collector exporter for JS:
OTLP/JSON can be used from browser or node, but proto over HTTP and gRPC can only be used with node. |
Thanks @mwear for the perspective. I think it is important to have OTLP/JSON declared stable. It may take a bit more time because it places more restrictions than Protobuf does, but I think we should do it eventually. |
We are going to remove this as a GA requirement. This effectively bounces the JS browser SDK from GA as well, so we will work on this as our top tracing priority post-GA. I don't have permissions to update the tags. @tedsuo do you? |
Based on the maintainers call today, we have the following suggestions to make OTLP/JSON stable:
We agreed to release v1.0 and GA tracing without this support finished, but we need to follow up on this as it effects how we approach protobuf development. To ensure our OTel Browser users have a goos experience in the meantime, I suggest that we avoid proto changes which would break JSON until this work is resolved. |
Great suggestions, thanks.
The thinking so far was that the major version is defined by the URL (/v1 in the OTLP/HTTP URLs). The minor versions should be backwards compatible in the same way Protobufs are compatible and should not require explicit version number to be in the payload. We can discuss if we need a different approach for versioning of OTLP/JSON. |
This depends on #268 |
I just had a discussion with the team tech leads of our company. Our goal is to standardize the logs our microservices emit via stdout. We already agreed to use JSON and luckily came across OTEL. We also agreed, that OTEL and its semantic log data model are very promising. However, regarding the JSON format, which we know is in alpha, we see possible obstacles:
|
@mtestrot thanks for posting your requirements. FYI, there is also a separate spec issue open to define a file format for OTLP data. The stdout format that you are looking for is more similar to the file format. The JSON format that this repo defines is for the OTLP network protocol (which includes extra things like request/response message, that do not necessarily make sense for files). The file and network formats are obviously related so most likely they will use the same format for the data.
This should not be a problem. in OTLP/JSON attribute names currently are not represented by object keys, they are string values, e.g. this is how a Resource with an attribute looks like: "resource": {
"attributes": [
{
"key": "host.name",
"value": { "stringValue": "testHost" }
}
]
} |
@tigrannajaryan thx for your quick answer.
I'm sure there is a good reason for this but I just don't see it. Why not just use JSON attributes?
I really would like to understand the design decision. |
Here open-telemetry/opentelemetry-specification#1443
The OTLP/JSON format is not manually designed (wiht minor exceptions which are not relevant to this discussions). What we get in OTLP/JSON is a consequence of 2 things:
|
Thanks a lot. This clarifies things 👍 |
Also somewhat related to open-telemetry/opentelemetry-specification#1443 which also aims to define a JSON-based format to be stored in files. We don't want OTLP/JSON network protocol and OTLP/JSON format in file to be completely different, supposedly they should be mostly identical. |
Fairly late reply, but re
If a
I'm not certain, but I think using message MapFieldEntry {
string key = 1;
AnyValue value = 2;
}
repeated MapFieldEntry map_field = N; where the |
This is now tracked in checklist issue open-telemetry/opentelemetry-specification#1957 |
I wanted to see what plans, if any, exist around classifying OTLP/JSON as stable for tracing. Is this something that would be possible to do with the tracing GA? If not, what would be the reservations or blockers?
The text was updated successfully, but these errors were encountered: