项目包布局¶
This documentation serves to document the "look and feel" of a basic layout for OpenTelemetry projects. This package layout is intentionally generic and it doesn't try to impose a language specific package structure.
API Package¶
Here is a proposed generic package structure for OpenTelemetry API package.
A typical top-level directory layout:
Use of lowercase, CamelCase or Snake Case (stylized as snake_case) names depends on the language.
/api/context
¶
This directory describes the API that provides in-process context propagation.
/api/metrics
¶
This directory describes the Metrics API that can be used to record application metrics.
/api/baggage
¶
This directory describes the Baggage API that can be used to manage context propagation and metric event attributes.
/api/trace
¶
The Trace API consist of a few main classes:
Tracer
is used for all operations. See Tracer section.Span
is a mutable object storing information about the current operation execution. See Span section.
/api/internal
(Optional)¶
Library components and implementations that shouldn't be exposed to the users. If a language has an idiomatic layout for internal components, please follow the language idiomatic style.
/api/logs
(In the future)¶
TODO: logs operations
SDK Package¶
Here is a proposed generic package structure for OpenTelemetry SDK package.
A typical top-level directory layout:
Use of lowercase, CamelCase or Snake Case (stylized as snake_case) names depends on the language.
/sdk/context
¶
This directory describes the SDK implementation for api/context.
/sdk/metrics
¶
This directory describes the SDK implementation for api/metrics.
/sdk/resource
¶
The resource directory primarily defines a type Resource that captures information about the entity for which stats or traces are recorded. For example, metrics exposed by a Kubernetes container can be linked to a resource that specifies the cluster, namespace, pod, and container name.
/sdk/baggage
¶
TODO
/sdk/trace
¶
This directory describes the Tracing SDK implementation.
/sdk/internal
(Optional)¶
Library components and implementations that shouldn't be exposed to the users. If a language has an idiomatic layout for internal components, please follow the language idiomatic style.
/sdk/logs
(In the future)¶
TODO: logs operations