6

Opentelemetry 可观测性规范(二)—— OLTP 协议

 1 year ago
source link: https://www.zoucz.com/blog/2023/12/14/242da5c0-9a95-11ee-9fa0-5dbc93f9d3ee/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Opentelemetry 可观测性规范(二)—— OLTP 协议

作者: 邹成卓 2023-12-14 23:26:24 分类: 可观测性

标签: Opentelemetry

评论数:

官方文档:https://opentelemetry.io/docs/specs/otlp/ 我要说话

本文仓库:https://github.com/zouchengzhuo/opentelemetry-proto.git 我要说话

本文UML使用 https://github.com/GoogleCloudPlatform/proto-gen-md-diagrams.git 工具生成 我要说话

1.基本数据结构

opentelemetry/proto 目录下有 log / trace / metrics 的具体数据结构定义 我要说话

├── common
├── logs
├── metrics
├── resource
└── trace

1.1 common 通用数据

AnyValue 是 oneof 这些属性 我要说话

image.png
我要说话

1.2 resource 资源描述

在 OpenTelemetry 中,resource.proto 文件定义了 Resource 数据结构。Resource 是一个表示可观察对象(如服务、应用程序、主机等)的实体。它包含一组键值对,用于描述这些实体的属性。这些属性可以用于过滤和聚合观察到的数据,以便更好地理解和分析系统性能。 我要说话

Resource 数据结构的主要目的是: 我要说话

  • 为可观察对象提供上下文信息,以便更好地理解和分析度量、追踪和日志数据。
  • 通过提供有关实体的元数据,帮助将观察到的数据与实际系统组件关联起来。
  • 允许对观察到的数据进行过滤、分组和聚合,以便根据实体属性对性能进行深入分析。

总之,resource.proto 文件中定义的 Resource 数据结构在 OpenTelemetry 中起到了关键作用,它为可观察对象提供了描述性信息,以便在分析和监控系统性能时获得更丰富的上下文。 我要说话

image.png
我要说话
image.png
我要说话

1.3 logs 数据结构描述

image.png
我要说话
image.png
我要说话

数据构成方式: Data → List<Resource> → List<Scope> → List<Record> 我要说话

image.png
我要说话

metrics 和 trace 也是一样,经过了几层相同的包装,才到最终的具体字段数据结构。 我要说话

1.4 metrics 数据结构描述

https://github.com/zouchengzhuo/opentelemetry-proto/blob/main/opentelemetry/proto/metrics/v1/metrics.proto.md 我要说话

数据构成方式: Data → List<Resource> → List<Scope> → List<Metric> 我要说话

image.png
我要说话

省略细节数据结构 我要说话

1.5 trace数据结构描述

https://github.com/zouchengzhuo/opentelemetry-proto/blob/main/opentelemetry/proto/trace/v1/trace.proto.md 我要说话

数据构成方式: Data → List<Resource> → List<Scope> → List<Span> 我要说话

image.png
我要说话

2. Collector Service 接口定义

opentelemetry/proto/collector 目录下有服务端的 service 定义 我要说话

2.1 logs 服务接口

https://github.com/zouchengzhuo/opentelemetry-proto/blob/main/opentelemetry/proto/collector/logs/v1/logs_service.proto.md 我要说话

image.png
我要说话

2.2 metrics 服务接口

https://github.com/zouchengzhuo/opentelemetry-proto/blob/main/opentelemetry/proto/collector/metrics/v1/metrics_service.proto.md 我要说话

image.png
我要说话

2.3 trace服务接口

https://github.com/zouchengzhuo/opentelemetry-proto/blob/main/opentelemetry/proto/collector/trace/v1/trace_service.proto.md 我要说话

image.png
我要说话

3. Collector Service 实现规范

docs 目录下有完整的设计理念和设计思路的描述, 包括支持的数据编码格式、支持的通信协议、请求&响应的实现规范等。 我要说话

此处不再赘述,详见文档:https://github.com/zouchengzhuo/opentelemetry-proto/blob/main/docs/specification.cn.md我要说话

image.png
我要说话

4. 协议编译

根目录提供了 makefile 文件以从协议文件编译得到各个语言的实现。
我要说话

make gen-cpp / gen-csharp / gen-go / gen-java / gen-kotlin / gen-js / gen-objc / gen-openapi / gen-php / gen-python / gen-ruby

我要说话

本文链接:https://www.zoucz.com/blog/2023/12/14/242da5c0-9a95-11ee-9fa0-5dbc93f9d3ee/我要说话

☞ 参与评论我要说话


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK