#cloudflare-workers #datadog #cloudflare #worker #open-telemetry #tracing

opentelemetry-datadog-cloudflare

为 Cloudflare 工作者提供的 OpenTelemetry Datadog 导出器和传播器

12 个版本 (破坏性)

1.0.0 2023年2月8日
0.11.0 2023年3月14日
0.10.0 2023年3月9日
0.9.0 2022年11月22日
0.4.1 2022年7月20日

#388 in 性能分析

Download history 1/week @ 2024-03-09 44/week @ 2024-03-30 13/week @ 2024-04-06

每月下载量 2,082

Apache-2.0

39KB
714 行代码(不含注释)

OpenTelemetry — An observability framework for cloud-native software.

OpenTelemetry Datadog Cloudflare

概述

此 crate 提供了额外的传播器和导出器,用于直接将遥测数据发送到 Datadog,而不需要通过 Datadog-agent

基于 opentelemetry-datadog

特性

opentelemetry-datadog-cloudflare 支持以下特性

  • reqwest-client: 使用 reqwest HTTP 客户端发送跨度。

lib.rs:

OpenTelemetry Datadog 导出器(用于 Cloudflare)

为 Cloudflare 实现的 OpenTelemetry datadog 导出器

问题

目前 Datadog 和 OpenTelemetry 之间存在一些不兼容性,这在该导出器中表现为一些小的怪异行为。

首先,Datadog 使用 operation_name 来描述 OpenTracing 会称为组件的内容。或者换句话说,在 OpenTracing 中,操作/跨度名称相对细粒度,可能会用于识别特定的端点。在 Datadog 中,然而,它们更少粒度 - 在 Datadog 中,预期一个服务将有一个单一的、主要的跨度名称,它是该服务内所有跟踪的根,还有一个称为 resource_name 的附加元数据提供粒度。请参阅 此处

Datadog Golang API采用了一种使用resource.name OpenTelemetry属性来设置resource_name的方法。请参阅此处

不幸的是,这与其他期望更细粒度操作名称的OpenTelemetry导出器不兼容,这符合OpenTracing规范。

因此,此导出器采用不同的方法,使用跟踪提供者的名称来命名跨度,并使用跨度名称来设置resource_name。这通常会导致用户期望的行为。

Datadog还有一个会改变Web UI中跨度渲染的span_type字符串。这可以设置为span.type OpenTelemetry跨度属性。

标准值请参阅此处

携带自己的http客户端

用户可以选择合适的http客户端来与其运行时相匹配。

根据启用的功能。可用的唯一客户端是reqwest,请随意实现其他http客户端。

请注意,异步http客户端可能需要特定的运行时,否则会引发panic。用户应确保http客户端在适当的运行时中运行。

用户可以通过实现HttpClient特质始终使用自己的http客户端。

依赖项

~5–22MB
~294K SLoC