OpenTelemetry 动作

默认情况下,OpenTelemetry 的 trace 动作是关闭的,不会向 otel exporter 中配置的地址发送 trace 数据。 OpenResty Edge 内置了两个动作:启用 trace 功能和 设置 span 名称。这两个动作和启动条件可以灵活的结合在一起,实现启用 trace 的功能。同时还可以使用 EdgeLang 实现更细粒度的控制。

启用 trace 功能

默认情况下,otel trace 是关闭了,通过该动作启用 trace 功能。

设置 span 名称

默认情况下,span 名称为请求的 URI,可以通过该动作设置 span 名称。

案例

根据 URI 启用 trace 功能

如果所有的请求都启用 trace,那么将会产生大量的 trace 信息。而通常我们仅仅关注特定的请求,因此我们可以根据需要动态开启 trace。比如,某一个 API 接口发现延时比较高,我们使用如下的配置开启 trace 功能。

按比率启用 trace 功能

在日常运营过程中,我们没有特定的监控目标,不希望对所有的请求都启用 trace 功能,这时候使用比率开启的方式就很合适。

上面例子中所使用的 EdgeLang 代码:

random-hit(0.05) =>
    enable-otel-trace();

我们还可以使用 EdgeLang 实现任意复杂的启用控制。比如,我们希望对新上线的 App 进行监控,该 App 发送的 HTTP 请求有个 version 字段,同时还要保留日常的监控。那么可以使用如下的 EedgeLang:

random-hit(0.05); req-header("app_version") eq "6.0" =>
    enable-otel-trace();