5.4 OpenTelemetry 追踪支持

对于在 Linux 系统上使用传统 JDBC API(即不是 X DevAPI 或 X DevAPI for C)且使用 OpenTelemetry (OTel) 检测的应用程序,连接器会将查询和连接跨度添加到应用程序代码生成的跟踪中,并将当前 OpenTelemetry 上下文转发到服务器。OpenTelemetry 追踪是在 Connector/C++ 8.1.0 版本中引入的。

注意

OTel 上下文转发仅适用于 MySQL 企业版,这是一款商业产品。要了解有关商业产品的更多信息,请访问 https://www.mysqlserver.cn/products/.

启用和禁用追踪

默认情况下,连接器仅在检测到的应用程序链接到所需的 OpenTelemetry SDK 库并配置跟踪导出器将跟踪数据发送到某个目标时才会生成跨度。如果应用程序代码不使用检测,则传统连接器也不会使用它。

Connector/C++ 支持一个连接属性选项,OPT_OPENTELEMETRY,它具有以下值

  • OTEL_DISABLED:连接器不会创建 OpenTelemetry 跨度或将 OpenTelemetry 上下文转发到服务器。

  • OTEL_PREFERRED:默认值。如果所需 OpenTelemetry 检测可用,则在连接中使用检测。否则,允许连接在没有任何 OpenTelemetry 检测的情况下运行。

OPT_OPENTELEMETRY 选项还接受布尔值,其中 false 对应于 OTEL_DISABLEDfalse 是此选项唯一接受的布尔值;将其设置为 true 没有意义,会导致错误。

例如,应用程序可以使用 connect() 语法(接受选项映射参数)以两种形式之一指定 OPT_OPENTELEMETRY

connection_properties["OPT_OPENTELEMETRY"] = false;
connection_properties["OPT_OPENTELEMETRY"] = OTEL_DISABLED;

当你构建链接到 Connector/C++ 并使用 OTel 检测的代码时,连接器生成的额外跨度将显示在代码生成的跟踪中。连接器生成的跨度将发送到与用户代码生成的跨度发送到相同目标(跟踪导出器),如用户代码配置。无法将连接器生成的跨度发送到任何其他目标。

此实现不同于通过 MySQL 客户端库(或相关的 telemetry_client 客户端插件)提供的实现。