Skip to content

Commit

Permalink
Add JaegerRemoteSampler to compliance matrix (#3148)
Browse files Browse the repository at this point in the history
  • Loading branch information
yurishkuro authored Feb 9, 2023
1 parent 84a5fa3 commit d4dd37d
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 8 deletions.
11 changes: 6 additions & 5 deletions spec-compliance-matrix.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ formats is required. Implementing more than one format is optional.
| [Trace / Context interaction](specification/trace/api.md#context-interaction) | | | | | | | | | | | | |
| Get active Span | | N/A | + | + | + | + | + | + | + | + | + | + |
| Set active Span | | N/A | + | + | + | + | + | + | + | + | + | + |
| [Tracer](specification/trace/api.md#tracer-operations) | | | | | | | | | | | | |
| [Tracer](specification/trace/api.md#tracer-operations) | Optional | Go | Java | JS | Python | Ruby | Erlang | PHP | Rust | C++ | .NET | Swift |
| Create a new Span | | + | + | + | + | + | + | + | + | + | + | + |
| Documentation defines adding attributes at span creation as preferred | | | | | + | + | | + | | | + | |
| Get active Span | | N/A | + | + | + | + | + | + | + | + | + | + |
Expand All @@ -38,7 +38,7 @@ formats is required. Implementing more than one format is optional.
| IsValid | | + | + | + | + | + | + | + | + | + | + | + |
| IsRemote | | + | + | + | + | + | + | + | + | + | + | + |
| Conforms to the W3C TraceContext spec | | + | + | + | + | + | + | + | + | + | + | + |
| [Span](specification/trace/api.md#span) | | | | | | | | | | | | |
| [Span](specification/trace/api.md#span) | Optional | Go | Java | JS | Python | Ruby | Erlang | PHP | Rust | C++ | .NET | Swift |
| Create root span | | + | + | + | + | + | + | + | + | + | + | + |
| Create with default parent (active span) | | N/A | + | + | + | + | + | + | + | + | + | + |
| Create with parent from Context | | + | + | + | + | + | + | + | + | + | + | + |
Expand All @@ -55,7 +55,7 @@ formats is required. Implementing more than one format is optional.
| events collection size limit | | + | + | + | + | + | + | + | + | - | - | + |
| attribute collection size limit | | + | + | + | + | + | + | + | + | - | - | + |
| links collection size limit | | + | + | + | + | + | + | + | + | - | - | + |
| [Span attributes](specification/trace/api.md#set-attributes) | | | | | | | | | | | | |
| [Span attributes](specification/trace/api.md#set-attributes) | Optional | Go | Java | JS | Python | Ruby | Erlang | PHP | Rust | C++ | .NET | Swift |
| SetAttribute | | + | + | + | + | + | + | + | + | + | + | + |
| Set order preserved | X | + | - | + | + | + | + | + | + | + | + | + |
| String type | | + | + | + | + | + | + | + | + | + | + | + |
Expand All @@ -65,7 +65,7 @@ formats is required. Implementing more than one format is optional.
| Array of primitives (homogeneous) | | + | + | + | + | + | + | + | + | + | + | + |
| `null` values documented as invalid/undefined | | + | + | + | + | + | N/A | + | | + | | N/A |
| Unicode support for keys and string values | | + | + | + | + | + | + | + | + | + | + | + |
| [Span linking](specification/trace/api.md#specifying-links) | | | | | | | | | | | | |
| [Span linking](specification/trace/api.md#specifying-links) | Optional | Go | Java | JS | Python | Ruby | Erlang | PHP | Rust | C++ | .NET | Swift |
| Links can be recorded on span creation | | + | + | | + | + | + | + | + | + | + | |
| Links order is preserved | | + | + | | + | + | + | + | + | + | + | |
| [Span events](specification/trace/api.md#add-events) | | | | | | | | | | | | |
Expand All @@ -75,9 +75,10 @@ formats is required. Implementing more than one format is optional.
| [Span exceptions](specification/trace/api.md#record-exception) | | | | | | | | | | | | |
| RecordException | | - | + | + | + | + | + | + | + | - | + | - |
| RecordException with extra parameters | | - | + | + | + | + | + | + | + | - | + | - |
| [Sampling](specification/trace/sdk.md#sampling) | | | | | | | | | | | | |
| [Sampling](specification/trace/sdk.md#sampling) | Optional | Go | Java | JS | Python | Ruby | Erlang | PHP | Rust | C++ | .NET | Swift |
| Allow samplers to modify tracestate | | + | + | | + | + | + | + | + | + | - | + |
| ShouldSample gets full parent Context | | + | + | + | + | + | + | + | + | + | - | + |
| Sampler: JaegerRemoteSampler | | + | + | | | | | | + | | | |
| [New Span ID created also for non-recording Spans](specification/trace/sdk.md#sdk-span-creation) | | + | + | | + | + | + | + | + | + | - | + |
| [IdGenerators](specification/trace/sdk.md#id-generators) | | + | + | | + | + | + | + | + | + | | + |
| [SpanLimits](specification/trace/sdk.md#span-limits) | X | + | + | | + | + | + | + | | - | | + |
Expand Down
10 changes: 7 additions & 3 deletions specification/trace/sdk.md
Original file line number Diff line number Diff line change
Expand Up @@ -361,18 +361,22 @@ Optional parameters:

#### JaegerRemoteSampler

[Jaeger remote sampler](https://www.jaegertracing.io/docs/1.29/sampling/#collector-sampling-configuration) allows remotely controlling the sampling configuration for the SDKs. The sampling is typically configured at the collector and the SDKs actively poll for changes. The sampler uses `TraceIdRatioBased` or rate-limited sampler under the hood. These samplers can be configured per whole service (a.k.a default), or per span name in a given service (a.k.a per operation).
[Jaeger remote sampler][jaeger-remote-sampling] allows remotely controlling the sampling configuration for the SDKs. The sampling configuration is periodically loaded from the backend (see [Remote Sampling API][jaeger-remote-sampling-api]), where it can be managed by operators via configuration files or even automatically calculated (see [Adaptive Sampling][jaeger-adaptive-sampling]). The sampling configuration retrieved by the remote sampler can instruct it to use either a single sampling method for the whole service (e.g., `TraceIdRatioBased`), or different methods for different endpoints (span names), for example, sample `/product` endpoint at 10%, `/admin` endpoint at 100%, and never sample `/metrics` endpoint.

The full Protobuf definition can be found at [jaegertracing/jaeger-idl/api_v2/sampling.proto](https:/jaegertracing/jaeger-idl/blob/main/proto/api_v2/sampling.proto).

##### Configuration

Following configuration properties should be available when creating the sampler:
The following configuration properties should be available when creating the sampler:

* endpoint - collector address with running service with sampling manager
* endpoint - address of a service that implements the [Remote Sampling API][jaeger-remote-sampling-api], such as Jaeger Collector or OpenTelemetry Collector.
* polling interval - polling interval for getting configuration from remote
* initial sampler - initial sampler that is used before the first configuration is fetched

[jaeger-remote-sampling]: https://www.jaegertracing.io/docs/1.41/sampling/#remote-sampling
[jaeger-remote-sampling-api]: https://www.jaegertracing.io/docs/1.41/apis/#remote-sampling-configuration-stable
[jaeger-adaptive-sampling]: https://www.jaegertracing.io/docs/1.41/sampling/#adaptive-sampling

## Span Limits

Span attributes MUST adhere to the [common rules of attribute limits](../common/README.md#attribute-limits).
Expand Down

0 comments on commit d4dd37d

Please sign in to comment.