APM reference¶
This page describes what data is provided by APM and how it is used.
Span schema¶
Spans are ingested to the Tracing/Span
dataset.
Observe APM is OpenTelemetry-native, meaning it is powered entirely by OpenTelemetry data and is fully compatible with the OpenTelemetry semantic conventions. In order to make the product more intuitive for users who may not be intimately familiar with OpenTelemetry, we transform raw OpenTelemetry data into the following schema:
Span dataset field |
Underlying OpenTelemetry field from which it is derived |
---|---|
|
Span |
|
Span |
|
Span |
|
|
|
Span |
|
derived from |
|
|
|
Span Status object’s |
|
Span |
|
|
|
|
|
|
|
|
|
The span’s attributes |
|
The span’s resource attributes |
|
Instrumentation Scope object |
|
|
|
|
|
The span_type
field provides an intuitive categorization of OpenTelemetry span kinds, mapping 1:1 to the kind
field in OpenTelemetry but using more user-friendly terms to describe the span’s role in the system:
Observe |
OpenTelemetry Span |
---|---|
|
|
|
|
|
|
|
|
|
|
Endpoint terminology¶
The “Endpoint” terminology in Observe has equivalents in other APM products:
Observe |
Datadog |
New Relic |
AppDynamics / Dynatrace |
---|---|---|---|
Endpoint |
Resource |
Transaction |
Business Transaction |
Toggling between HTTP/RPC endpoints and message-based endpoints in Observe also has equivalents in other APM products:
Observe |
Datadog |
New Relic |
---|---|---|
Endpoint dropdown |
Operation dropdown |
Web/non-web transaction dropdown |
Underlying OpenTelemetry data used to detect endpoints:
Spans with kind
SERVER
are used to detect HTTP/RPC endpoints, which are known as “Service entry points” in Observe. The endpoint name in Observe is the span name.Spans with kind
CONSUMER
are used to detect message-based endpoints, which are known as “Async consumers” in Observe. The endpoint name in Observe is the span name.
The Service Inspector also allows you to toggle between synchronous (HTTP/RPC) and asynchronous (message-based) endpoints with the “operation type” dropdown.
Span event dataset schema¶
Span events are ingested to the Tracing/Span Event
dataset.
Span Event dataset field |
Underlying OTel field from which it is derived |
---|---|
|
the |
|
the |
|
The event’s |
|
The event’s attributes |
|
The resource attributes of the span containing the event |
Span link dataset schema¶
Span links are ingested to the Tracing/Span Link
dataset.
Span Link dataset field |
Underlying OTel field from which it is derived |
---|---|
|
the |
|
the |
|
the link’s |
|
the link’s |
|
the link’s attributes |
APM metrics¶
The following metrics are derived from spans and are available in the Metric Explorer, and can be used for dashboarding and monitors.
Facets
The following dimensions are tracked by all the APM metrics:
service.name
,peer.db.name
, andpeer.messaging.system
: they are mutually exclusive and represent the system being instrumented – microservice, database, or messaging system.service.namespace
service.version
span.name
: only the span names for spans that correspond to endpoints (i.e., spans of typeService entry point
orAsync consumer
) are available in APM metricsspan.type
k8s.cluster.uid
k8s.namespace.name
k8s.pod.name
RED metrics
apm_service_call_count
apm_service_error_count
apm_service_duration
(histogram)The following metrics are the same as above but with extra dimensions, i.e.,
status.code
andstatus.message
:apm_service_call_count_with_status
apm_service_error_count_with_status
apm_service_duration_with_status
apm_service_duration_log
: same asapm_service_duration
but values are log base-2apm_service_duration_sum_with_status
: total duration (i.e., sum of latency across all invocations)apm_service_exception_count
: exception count per serviceUnique labels/dimensions:
exception.type
exception.stacktrace
exception.message.pattern.hash
apm_service_error_count_by_fingerprint
: number of invocations per unique exceptions per service
Other metrics are also published beyond the basic RED metrics, all with the prefix apm_
.