OpenTelemetry¶
Endpoint |
otel |
|---|---|
URL |
|
Maximum Request Size (compressed) |
10 MB |
Maximum Request Size (uncompressed) |
50 MB |
Individual Metric, Span, or Event Limit (including attributes and resource attributes) |
1 MB |
Observe implements an OLTP HTTP endpoint at /v2/otel supporting the following observation types:
Type |
URL Suffix * |
Protocol Status |
|---|---|---|
Traces |
|
|
Metrics |
|
|
Logs |
|
* Suffix is for documentation purposes, Otel collecting agents will normally append this automatically for each type. So exporter would be configured for instance for customer id 123456: https://123456.collect.observeinc.com/v2/otel. The agent will automatically append the appropriate suffix for each observation type, resulting in complete endpoints such as https://123456.collect.observeinc.com/v2/otel/v1/logs for logs, https://123456.collect.observeinc.com/v2/otel/v1/metrics for metrics, or https://123456.collect.observeinc.com/v2/otel/v1/traces for traces.
The request body should be encoded in the Protobuf format and sent with the content-type application/x-protobuf (specs). JSON encoding using application/json content-type are also supported (specs).
This endpoint does not support GRPC.
Type-Specific Representations¶
Following tables illustrate for each Otel type how data is mapped from Otel Protobuf records into Observe source dataset entries.
Common¶
Common to all types is that we flatten the type-specific Resource and Scope hierarchies, turning any attributes on the resource level (opentelemetry.proto.resource.v1.Resource) into a dedicated resource_attributes field and scope information (opentelemetry.proto.common.v1.InstrumentationScope) into instrumentation_scope.
In addition to Otel specific fields Observe metadata is stored in a common meta column.
Otel Field |
Observe Column / Field |
Comments |
|---|---|---|
|
|
Otel kv list is represented as OPAL object |
|
|
data is flattened |
|
Observe specific metadata (e.g. ingest token) |
Logs¶
Below describes mapping of all the fields from LogRecord:
Otel Field |
Observe Column / Field |
Comments |
|---|---|---|
|
|
|
|
|
if |
|
|
Body is always stored as a string. Non-string values will be converted |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Only stored if > 0 |
|
|
Only stored if > 0 |
Metrics¶
Below describes mapping of the fields from Metric or one of the nested classes, depending of the type of the metric:
Otel Field |
Observe Column / Field |
Comments |
|---|---|---|
|
|
|
|
|
if present |
|
|
|
|
|
|
|
|
|
|
|
gauge -> gauge, sum + agg_temp_delta -> delta, sum + agg_temp_cumulative -> cumulativeCounter, histogram -> histogram, exponentialHistogram -> exponential_histogram, summary -> summary |
|
|
for gauge, sum and summary (see comments below for summary) |
|
|
for histogram and exponential histogram, encapsulates all the bucket information. see below comments for min/max/count/sum handling |
|
|
|
|
|
Only for histograms, otherwise encoded in type |
|
|
Only stored if > 0 |
|
|
Only stored if > 0 |
“Histogram” and “Exponential Histogram” metrics are represented into multiple “pseudo” metrics similar to Prometheus, with suffixes .sum, .count, .min and .max respectively. The types of .count and .sum will be corresponding to the aggregation temporality whereas .min and .max are always gauge. For .count the nunit will be null.
Similarly, “Summary” metrics are flattened into multiple “pseudo” timeseries, with a quantile attribute indicating the corresponding quantily. Given this and as they are deprecated we recommend to use histograms instead.
[!CAUTION] (Exponential) Histograms with cummulative aggregation are not currently supported! Data will be stored but quantile calculations will be wrong.
[!WARNING] Exemplares are not currently supported and will be dropped.
Traces¶
Trace data is stored into 3 different datasets: Span, Span Event and Span Link. This is in order to normalize the data into a more relational form and allow easy access of span events as a standalone log dataset.
Span¶
Below describes mapping of all the fields from Span except for Event and Link types:
Otel Field |
Observe Column / Field |
Comments |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
enum is resolved into string |
|
|
|
|
|
|
|
|
|
|
|
Only stored if > 0 |
|
|
Only stored if > 0 |
|
|
Only stored if > 0 |
|
|
Only stored if > 0 |
Span Event¶
Below describes mapping of all the fields from Event plus fields inherited from the parent span:
Otel Field |
Observe Column / Field |
Comments |
|---|---|---|
|
|
|
|
|
inherited from parent span |
|
|
inherited from parent span |
|
|
|
|
|
|
|
|
Only stored if > 0 |
Span Link¶
Below describes mapping of all the fields from Link plus fields inherited from the parent span:
Otel Field |
Observe Column / Field |
Comments |
|---|---|---|
|
|
inherited from parent span |
|
|
inherited from parent span |
|
|
inherited from parent span |
|
|
inherited from parent span |
|
|
linked trace_ _id |
|
|
linked span_id |
|
|
|
|
|
trace_state of linked trace |
|
|
Only stored if > 0 |
|
|
Only stored if > 0 |