Skip to content
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

More explanation for OTLP transport protocols #1790

Merged
merged 5 commits into from
Jul 12, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ release.

### OpenTelemetry Protocol

- Adding requirement to implement at least one of two transports: `grpc` or `http/protobuf`.
([#1790](https://github.com/open-telemetry/opentelemetry-specification/pull/1790/files))

### SDK Configuration

## v1.5.0 (2021-07-08)
Expand Down
2 changes: 1 addition & 1 deletion spec-compliance-matrix.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ Note: Support for environment variables is optional.
| [OTLP](specification/protocol/otlp.md) | | | | | | | | | | | | |
| OTLP/gRPC Exporter | * | + | + | + | + | | + | | + | + | + | + |
| OTLP/HTTP binary Protobuf Exporter | * | + | - | + | [-][py1106] | + | + | | | - | - | - |
| OTLP/HTTP JSON Protobuf Exporter | * | + | - | + | [-][py1003] | | - | | | - | - | - |
| OTLP/HTTP JSON Protobuf Exporter | | + | - | + | [-][py1003] | | - | | | - | - | - |
| OTLP/HTTP gzip Content-Encoding support | X | + | - | + | + | + | - | | | - | - | - |
| Concurrent sending | | - | + | + | [-][py1108] | | - | | + | - | - | - |
| Honors retryable responses with backoff | X | + | | + | + | + | - | | | - | - | - |
Expand Down
12 changes: 9 additions & 3 deletions specification/protocol/exporter.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,15 @@ export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=https://collector.example.com/v1/metr

### Specify Protocol

Currently, OTLP has more than one transport protocol it can support, e.g.
`grpc`, `http/json`, `http/protobuf`. As of 1.0 of the specification, there
*is no specified default, or configuration via environment variables*. We
Currently, OTLP supports the following transport protocols:

- `grpc` for protobuf-encoded data using gRPC wire format over HTTP/2 connection
- `http/protobuf` for protobuf-encoded data over HTTP connection
- `http/json` for JSON-encoded data over HTTP connection

SDKs MUST support either `grpc` or `http/protobuf` and SHOULD support both. They also MAY support `http/json`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't seen a definitive analysis in the ticket of why one of protobuf-based protocols is a MUST, can you elaborate?

Specifically, in the past we've always had issues with supporting Thrift in the browser - I don't know the current state of protobuf for browser, but according to #1764 (comment) it's a similar story, JSON is preferred.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#1764 (comment) and #1764 (comment)

It was also discussed during the last maintainers meeting (https://youtu.be/ZqQ4sbOsvLs?t=887) and this decision was made there.

Copy link
Contributor

@anuraaga anuraaga Jul 6, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps instead of SDKs, Languages is more obvious? I suppose the intent is that JS supports at least protobuf for node users, and if protobuf is prohibitive in a browser it can also support JSON for that specific use case.


As of 1.0 of the specification, there *is no specified default, or configuration via environment variables*. We
reserve the following environment variables for configuration of protocols in
the future:

Expand Down