Clase: Mongo::Tracing::OpenTelemetry::Tracer Privado

Hereda:
Objeto
  • Objeto
Mostrar todo
Definido en:
lib/mongo/tracing/open_telemetry/tracer.rb

Overview

Esta clase forma parte de una API privada. Evita usar esta clase si es posible, ya que puede ser eliminada o modificada en el futuro.

Instrumento OpenTelemetry para operaciones y comandos de MongoDB.

Resumen de atributos de la instancia colapsar

Resumen del método de instancia colapsar

Detalles del Constructor

#initialize(enabled: nil, query_text_max_length: nil, otel_tracer: nil) ⇒ Tracer

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Inicializa un nuevo rastreador OpenTelemetry.

Parámetros:

  • habilitado (Boolean | nil) (valor por defecto: nil)

    si OpenTelemetry está activado o no. Se establece por defecto en nil, lo que significa que verificará la variable de entorno OTEL_RUBY_INSTRUMENTATION_MONGODB_ENABLED (valores: true/1/yes). Si la variable de entorno no está configurada, OpenTelemetry estará deshabilitado por defecto.

  • query_text_max_length (Integer | nil) (valor por defecto: nil)

    longitud máxima para el texto de query capturado. Por defecto es nil, lo que significa que comprobará la variable de entorno OTEL_RUBY_INSTRUMENTATION_MONGODB_QUERY_TEXT_MAX_LENGTH. Si la variable de entorno no está configurada, el texto de la query no se capturará.

  • otel_tracer (OpenTelemetry::Trace::Tracer | nil) (valor por defecto: nil)

    la implementación del registrador OpenTelemetry a utilizar. Valor predeterminado en nil, lo que significa que utilizará el rastreador predeterminado del proveedor de rastreadores de OpenTelemetry.



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# Archivo 'lib/mongo/tracing/open_telemetry/tracer.rb', línea 42

def inicializar(activado: nulo, query_text_max_length: nulo, otel_tracer: nulo)
  @enabled = si habilitado.nil?
               %w[true 1 ].incluir?(ENV['OTEL_RUBY_INSTRUMENTATION_MONGODB_ENABLED']&.minúscula)
             else
               habilitado
             end
  check_opentelemetry_loaded
  @query_text_max_length = si query_text_max_length.nil?
                             ENV['OTEL_RUBY_INSTRUMENTATION_MONGODB_QUERY_TEXT_MAX_LENGTH'].to_i
                           else
                             query_text_max_length
                           end
  @otel_tracer = otel_tracer || inicializar_trazador
  @operation_tracer = OperationTracer.Nuevo(@otel_tracer, sí mismo)
  @command_tracer = CommandTracer.Nuevo(@otel_tracer, sí mismo, query_text_max_length: @query_text_max_length)
end

Detalles de atributo de instancias

#otel_tracerOpenTelemetry::Trace::Tracer (solo lectura)

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve la implementación de trazador de OpenTelemetry utilizada para crear tramos para las operaciones y comandos de MongoDB.

Devuelve:

  • (OpenTelemetry::Trace::Tracer)

    la implementación del rastreador OpenTelemetry utilizada para crear spans para operaciones y comandos de MongoDB.



27
28
29
# Archivo 'lib/mongo/tracing/open_telemetry/tracer.rb', línea 27

def otel_tracer
  @otel_tracer
end

Detalles del método de instancia

#cursor_context_mapHash

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el mapa de contexto de cursor para el seguimiento de contextos de OpenTelemetry relacionados con el cursor.

Devuelve:

  • (encriptada)

    mapa de IDs de cursor a contextos OpenTelemetry.



145
146
147
# Archivo 'lib/mongo/tracing/open_telemetry/tracer.rb', línea 145

def cursor_context_map
  @cursor_context_map ||= {}
end

#cursor_map_key(sesión, cursor_id) ⇒ string | nil

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Genera una clave única para el seguimiento del cursor en el mapa de contexto.

Parámetros:

  • sesión (Mongo::Session)

    la sesión asociada con el cursor.

  • cursor_id (Número entero)

    El id del cursor.

Devuelve:

  • (String | nil)

    clave única que combina el ID de sesión y el ID de cursor, o nulo si alguno de ellos es nulo.



155
156
157
158
159
# Archivo 'lib/mongo/tracing/open_telemetry/tracer.rb', línea 155

def cursor_map_key(sesión, cursor_id)
  return si cursor_id.nil? || sesión.nil?

  "#{session.session_id['id'].to_uuid}-#{cursor_id}"
end

#¿activado?booleano

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Si OpenTelemetry está habilitado o no.

Devuelve:

  • (booleano)

    verdadero si OpenTelemetry está habilitado, falso de lo contrario.



62
63
64
# Archivo 'lib/mongo/tracing/open_telemetry/tracer.rb', línea 62

def ¿habilitado?
  @enabled
end

#finish_transaction_span(session) ⇒ Object

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Finaliza un intervalo de transacción y desactiva su contexto.

Parámetros:



123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# Archivo 'lib/mongo/tracing/open_telemetry/tracer.rb', línea 123

def finish_transaction_span(sesión)
  return a menos que ¿habilitado?

  llave = transaction_map_key(sesión)
  return a menos que llave

  span = transaction_span_map.borrar(llave)
  token = transaction_token_map.borrar(llave)
  transaction_context_map.borrar(llave)

  return a menos que span && token

  begin
    span.finalizar
  asegurar
    ::OpenTelemetry::Context.detach(token)
  end
end

#parent_context_for(operation_context, cursor_id) ⇒ OpenTelemetry::Context | nil

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Determina el contexto principal de OpenTelemetry para una operación.

Devuelve el contexto de la transacción si la operación forma parte de una transacción, de lo contrario devuelve nil. La anidación de contexto basada en cursor no está implementada actualmente.

Parámetros:

  • operation_context (Mongo::operación::Context)

    El contexto de la operación.

  • cursor_id (Número entero)

    el ID del cursor, si corresponde.

Devuelve:

  • (OpenTelemetry::Context | nulo)

    contexto principal o nulo.



170
171
172
173
174
175
176
177
# Archivo 'lib/mongo/tracing/open_telemetry/tracer.rb', línea 170

def contexto_principal_para(operation_context, cursor_id)
  si (llave = transaction_map_key(operation_context.sesión))
    transaction_context_map[llave]
  elsif (_key = cursor_map_key(operation_context.sesión, cursor_id))
    # Devolvemos nil aquí a menos que decidamos cómo anidar las operaciones del cursor.
    nulo
  end
end

#start_transaction_span(session) ⇒ Object

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Inicia un periodo de transacción y activa su contexto.

Parámetros:



95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# Archivo 'lib/mongo/tracing/open_telemetry/tracer.rb', línea 95

def start_transaction_span(sesión)
  return a menos que ¿habilitado?

  llave = transaction_map_key(sesión)
  return a menos que llave

  # Crear el período de la transacción con atributos mínimos
  span = @otel_tracer.start_span(
    'transaction',
    atributos: { 'db.system.name' => 'mongodb' },
    kind: cliente
  )

  # Crear un contexto que contenga este intervalo
  context = ::OpenTelemetry::traza.context_with_span(span)

  # Activa el contexto y almacena el token para su posterior separación
  token = ::OpenTelemetry::Context.adjuntar(context)

  # Almacena span, token y contexto para su recuperación posterior
  transaction_span_map[llave] = span
  transaction_token_map[llave] = token
  transaction_context_map[llave] = context
end

#trace_command(mensaje, contexto_operativo, conexión) { ... } ⇒ Objeto

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Haga un seguimiento de un comando de MongoDB.

Parámetros:

Rendimientos:

  • El bloque que representa el comando que se va a rastrear.

Devuelve:

  • (objeto)

    El resultado del comando.



86
87
88
89
90
# Archivo 'lib/mongo/tracing/open_telemetry/tracer.rb', línea 86

def trace_command(mensaje, operation_context, Conexión, &bloque)
  return rendimiento a menos que ¿habilitado?

  @command_tracer.trace_command(mensaje, operation_context, Conexión, &bloque)
end

#trace_operation(operación, operación_contexto, nombre_op: nil) { ... } ⇒ Objeto

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Realizar un seguimiento de una operación de MongoDB.

Parámetros:

  • Operación (Mongo::Operation)

    La operación MongoDB a trazar.

  • operation_context (Mongo::operación::Context)

    El contexto de la operación.

  • op_name (String, nil) (valor por defecto: nil)

    Un nombre opcional para la operación.

Rendimientos:

  • El bloque que representa la operación que se va a rastrear.

Devuelve:

  • (objeto)

    El resultado de la operación.



73
74
75
76
77
# Archivo 'lib/mongo/tracing/open_telemetry/tracer.rb', línea 73

def trace_operation(Operación, operation_context, op_name: nulo, &bloque)
  return rendimiento a menos que ¿habilitado?

  @operation_tracer.trace_operation(Operación, operation_context, op_name: op_name, &bloque)
end

#transaction_context_mapHash

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el mapa de contexto de la transacción para rastrear los contextos de transacciones activos.

Devuelve:

  • (encriptada)

    mapa de claves de transacción a contextos de OpenTelemetry.



182
183
184
# Archivo 'lib/mongo/tracing/open_telemetry/tracer.rb', línea 182

def transaction_context_map
  @transaction_context_map ||= {}
end

#transaction_map_key(sesión) ⇒ String | nil

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Genera una clave única para el seguimiento de transacciones.

Devuelve nil para sesiones implícitas o sesiones que no están en una transacción.

Parámetros:

Devuelve:

  • (String | nil)

    clave única que combina el ID de sesión y el número de transacción, o nulo.



207
208
209
210
211
# Archivo 'lib/mongo/tracing/open_telemetry/tracer.rb', línea 207

def transaction_map_key(sesión)
  return si sesión.nil? || sesión.implicit? || !sesión.en_transacción?

  "#{session.session_id['id'].to_uuid}-#{session.txn_num}"
end

#transaction_span_mapHash

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el mapa de tramos de transacción para rastrear los tramos de transacciones activas.

Devuelve:

  • (encriptada)

    mapa de claves de transacción a spans de OpenTelemetry.



189
190
191
# Archivo 'lib/mongo/tracing/open_telemetry/tracer.rb', línea 189

def transaction_span_map
  @transaction_span_map ||= {}
end

#transaction_token_mapHash

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el mapa de tokens de transacción para el seguimiento de los tokens de contexto adjuntos.

Devuelve:

  • (encriptada)

    mapa de claves de transacciones a tokens de contexto de OpenTelemetry.



196
197
198
# Archivo 'lib/mongo/tracing/open_telemetry/tracer.rb', línea 196

def transaction_token_map
  @transaction_token_map ||= {}
end