OpenTelemetry 工程结构

本文档展示了 OpenTelemetry 项目的基本的工程结构布局。对于包结构仅展示通用的部分,对某个特定语言的包结构不做强制要求。

API 包结构

OpenTelemetry API推荐的包结构。

从最顶层目录开始的推荐包结构布局如下:

  1. api
  2. ├── context
  3. └── propagation
  4. ├── metrics
  5. ├── trace
  6. └── propagation
  7. ├── baggage
  8. └── propagation
  9. ├── internal
  10. └── logs

选择全小写、驼峰命名还是蛇形命名规则取决于使用的语言。

/context

本目录包含正在执行的 context propagation 的 API 。

/metrics

本目录包含用于记录应用 Metrics 数据的 Metrics API 。

/baggage

本目录包含可以用于管理 context propagation 和与 Metrics 相关的标签的 Baggage API。

/trace

跟踪 API 包含一些主要的类:

  • Tracer 用于所有的操作. 详见 Tracer 章节。
  • Span 是一个保存了当前执行的操作的可变对象. 详见 Span 章节。

/internal (Optional)

私有的库和应用代码。

/logs (In the future)

TODO: 日志操作

SDK Package

OpenTelemetry SDK 推荐的包结构。

从最顶层目录开始的推荐包结构布局如下:

  1. sdk
  2. ├── context
  3. ├── metrics
  4. ├── resource
  5. ├── trace
  6. ├── baggage
  7. ├── internal
  8. └── logs

选择全小写、驼峰命名还是蛇形命名规则取决于使用的语言。

/sdk/context

本目录包含 api/context 的 SDK 实现。

/sdk/metrics

本目录包含 api/metrics 的 SDK 实现。

/sdk/resource

resource 目录主要定义了 Resource 类型。该类型包含了统计和跟踪实体的信息。比如, Kubernetes 可以导出指向 Kubernetes 集群、命名空间、 Pod 和容器名称的 Metrics 。

/sdk/baggage

/sdk/trace

本目录包含api/trace的SDK实现。

/sdk/internal (Optional)

私有应用和库代码。

/sdk/logs (In the future)

TODO: 日志操作