类:Mongo::Tracing::OpenTelemetry::CommandTracer Private

继承:
对象
  • 对象
显示全部
包括:
Monitoring::Event::Secure
定义于:
lib/ Mongo/tracing/open_telemetry/command_tracer.rb

Overview

此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。

CommandTracer 负责使用 OpenTelemetry 跟踪MongoDB服务器命令。

常量摘要折叠

HELLO_COMMANDS =

此常量是私有 API 的一部分。 应尽可能避免使用此常量,因为它将来可能会被删除或更改。

不得创建跨度的命令。OpenTelemetry 规范要求驱动程序跳过命令记录和监控规范中列出的敏感命令的命令跨度。我们还会跳过所有形式的 hello/旧版 hello —— 这些是握手/心跳流量,只会增加追踪的噪声。

%w[hello isMaster isMaster].冻结

Monitoring::Event::Secure中包含的常量

Monitoring::Event::Secure::REDACTED_COMMANDS

实例方法摘要折叠

Monitoring::Event::Secure中包含的方法

#compression_allowed?#redacted#sensitive?

构造函数详情

#initialize(otel_tracer, parent_tracer, query_text_max_length: 0) ⇒ CommandTracer

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

初始化新的 CommandTracer。

参数:

  • otel_tracer ( OpenTelemetry::Trace::Tracer )

    OpenTelemetry 跟踪器。

  • parent_tracer (Mongo::Tracing::OpenTelemetry::Tracer)

    用于访问共享上下文映射的父跟踪器。

  • query_text_max_length 整数 (默认为: 0

    捕获的查询文本的最大长度。默认为 0(无查询文本捕获)。



40
41
42
43
44
# 文件 'lib/ Mongo/tracing/open_telemetry/command_tracer.rb', line 40

def 初始化(otel_tracer, parent_tracer, query_text_max_length: 0)
  @otel_tracer = otel_tracer
  @parent_tracer = parent_tracer
  @query_text_max_length = query_text_max_length
end

实例方法详细信息

#start_span (message, operation_context, connection) ⇒ 对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

为MongoDB命令启动跨度。

参数:



51
# 文件 'lib/ Mongo/tracing/open_telemetry/command_tracer.rb', line 51

def start_span(message, operation_context, 连接) end

#trace_command (message, _operation_context, connection) {... } ⇒ 对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

跟踪MongoDB命令。

为命令创建 OpenTelemetry 跨度,捕获命令名称、数据库名称、集合名称、服务器解决、连接 ID 和(可选)查询文本等属性。该跨度自动嵌套在当前操作跨度下,并在命令完成或失败时完成。

rubocop:disable Lint/RescueException

参数:

产量:

  • 表示要跟踪的命令的区块。

返回:

  • ( Object )

    命令的结果。



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# 文件 'lib/ Mongo/tracing/open_telemetry/command_tracer.rb', line 68

def trace_command(message, 操作, 连接)
  return 产量 if skip_tracing?(message)

  # 命令应始终嵌套在其操作范围下,而不是直接在
  #ACID 事务跨度。不要传递 with_parent 以使用自动父级解析
  # 从当前活动范围(操作范围)开始。
  span = create_command_span(message, 连接)
  ::OpenTelemetry::TRACE.with_span(span) do |s, C|
    产量.点击 do |结果|
      process_command_result(结果, cursor_id(message), C, s)
    end
  end
救援 例外 => e
  handle_command_Exception(span, e)
  提高 e
确保
  span&。完成
end