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.
Here is a proposed generic package structure for OpenTelemetry API package.
A typical top-level directory layout:
api
├── context
│ └── propagation
├── metrics
├── trace
│ └── propagation
├── distributedcontext
│ └── propagation
├── internal
└── logs
Use of lowercase, CamelCase or Snake Case (stylized as snake_case) names depends on the language.
This directory describes the API that provides in-process context propagation.
This directory describes the Metrics API that can be used to record application metrics.
This directory describes the DistributedContext API that can be used to manage context propagation and metrics-related labeling.
This API consists of a few main classes:
Entry
is used to label anything that is associated with a specific operation, such as an HTTP request.- An
Entry
consists ofEntryMetadata
,EntryKey
, andEntryValue
.
This 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.
Private application and library code.
TODO: logs operations
Here is a proposed generic package structure for OpenTelemetry SDK package.
A typical top-level directory layout:
sdk
├── context
├── metrics
├── resource
├── trace
├── distributedcontext
├── internal
└── logs
Use of lowercase, CamelCase or Snake Case (stylized as snake_case) names depends on the language.
This directory describes the SDK implementation for api/context.
This directory describes the SDK implementation for api/metrics.
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.
This directory describes the SDK implementation for api/trace.
Private application and library code.
TODO: logs operations