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
and thus submit metrics to https://123456.collect.observeinc.com/v2/otel/v1/metrics
.
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 |