项目包布局¶
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:
Traceris used for all operations. See Tracer section.Spanis 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