Classe: Mongo::Trace::OpenTelemetry::Tracer Private

Herda:
Objeto
  • Objeto
mostrar tudo
Definido em:
lib/mongo/trasing/open_telemetry/tracer.rb

Visão geral

Esta classe faz parte de uma API privada. Evite usar essa classe, se possível, pois ela pode ser removida ou alterada no futuro.

Rastreador OpenTelemetry para operações e comandos MongoDB .

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de instância

Detalhes do construtor

#initialize(enabled: nil, query_text_max_longitude: nil, ocel_tracer: nil) ➤ Tracer

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Inicializa um novo rastreador OpenTelemetry.

Parâmetros:

  • habilitado (Boolean | nil) (padrão para: nil)

    se o OpenTelemetry está habilitado ou não. O padrão é nulo, o que significa que ele verificará a variável de ambiente OTL_RUBY_Istrumentation_MONGODB_ENABLED (valores: true/1/yes). Se a variável de ambiente não estiver definida, o OpenTelemetry será desabilitado por padrão.

  • query_text_max_long (Inteiro | nulo) (padrão para: nil)

    comprimento máximo para texto de query capturado. O padrão é nulo, o que significa que ele verificará a variável de ambiente OTL_RUBY_Istrumentation_MONGODB_QUERY_Text_MAX_LENGTH. Se a variável de ambiente não estiver definida, o texto da query não será capturado.

  • orel_tracer (OpenTelemetry::Trace::Tracer | nil) (padrão para: nil)

    a implementação do rastreador OpenTelemetry a ser usada. O padrão é nulo, o que significa que ele usará o rastreador padrão do fornecedor de rastreadores do OpenTelemetry.



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/mongo/trasing/open_telemetry/tracer.rb', linha 42

def inicializar(habilitado: nada, query_text_max_long: nada, omel_tracer: nada)
  @enabled = se habilitado.nada?
               %w[true 1 sim].incluir?(ENV['OTEL_RUBY_INSTRUMENTATION_MONGODB_ENABLED']&.downcase)
             mais
               habilitado
             end
  check_opentelemetry_loaded
  @query_text_max_ comprimento = se query_text_max_long.nada?
                             ENV['OTEL_RUBY_INSTRUMENTATION_MONGODB_QUERY_TEXT_MAX_LENGTH'].to_i
                           mais
                             query_text_max_long
                           end
  @otil_tracer = orel_tracer || initialize_tracer
  @operation_tracer = OperationTracer.Novo(@otil_tracer, auto)
  @command_tracer = CommandTracer.Novo(@otil_tracer, auto, query_text_max_long: @query_text_max_ comprimento)
end

Detalhes do atributo da instância

.

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna a implementação do rastreador OpenTelemetry usada para criar spans para operações e comandos MongoDB .

Retorna:

  • (OpenTelemetry::Trace::Tracer)

    a implementação do rastreador OpenTelemetry usada para criar spans para operações e comandos MongoDB .



27
28
29
# File 'lib/mongo/trasing/open_telemetry/tracer.rb', linha 27

def orel_tracer
  @otil_tracer
end

Detalhes do método de instância

#cursor_context_mapHash

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna o mapa de contexto do cursor para rastrear contextos OpenTelemetry relacionados ao cursor.

Retorna:

  • (Hash)

    map de IDs de cursor para contextos OpenTelemetry.



145
146
147
# File 'lib/mongo/trasing/open_telemetry/tracer.rb', linha 145

def cursor_context_map
  @cursor_context_map ||= {}
end

#cursor_map_key(sessão, cursor_id) ➤ String | nada

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Gera uma chave exclusiva para rastreamento do cursor no mapa de contexto.

Parâmetros:

  • session (Mongo::Session)

    a sessão associada ao cursor.

  • cursor_id (Inteiro)

    o ID do cursor.

Retorna:

  • (string | nil)

    chave exclusiva que combina ID da sessão e ID do cursor, ou nula se qualquer uma for nula.



155
156
157
158
159
# File 'lib/mongo/trasing/open_telemetry/tracer.rb', linha 155

def cursor_map_key(session, cursor_id)
  Método se cursor_id.nada? || session.nada?

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

#habilitado?Booleano

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Se o OpenTelemetry está ativado ou não.

Retorna:

  • (Booleano)

    true se OpenTelemetry estiver habilitado, false caso contrário.



62
63
64
# File 'lib/mongo/trasing/open_telemetry/tracer.rb', linha 62

def habilitado?
  @enabled
end

#finish_transaction_span(sessão) ➤ Objeto

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Conclua um período de transação e desative seu contexto.

Parâmetros:



123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/mongo/trasing/open_telemetry/tracer.rb', linha 123

def finish_transaction_span(session)
  Método a menos que habilitado?

  chave = transaction_map_key(session)
  Método a menos que chave

  extensão = transaction_span_map.excluir(chave)
  token = transaction_token_map.excluir(chave)
  transaction_context_map.excluir(chave)

  Método a menos que extensão && token

  começar
    extensão.Conclusão
  garantir
    ::OpenTelemetry::Contexto.detach(token)
  end
end

#parent_context_for(operation_context, cursor_id) ➤ OpenTelemetry::Context | nada

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Determina o contexto OpenTelemetry pai para uma operação.

Retorna o contexto da transação se a operação fizer parte de uma transação, caso contrário, retorna zero. O aninhamento de contexto baseado em cursor não está implementado atualmente.

Parâmetros:

  • operation_context (Mongo::Operação::Context)

    o contexto da operação.

  • cursor_id (Inteiro)

    o ID do cursor, se aplicável.

Retorna:

  • (OpenTelemetry::Context | nil)

    contexto pai ou nulo.



170
171
172
173
174
175
176
177
# File 'lib/mongo/trasing/open_telemetry/tracer.rb', linha 170

def parent_context_for(operation_context, cursor_id)
  se (chave = transaction_map_key(operation_context.session))
    transaction_context_map[chave]
  elsif (_key = cursor_map_key(operation_context.session, cursor_id))
    # Retornamos nulo aqui, a menos que decidamos como aninhar as operações do cursor.
    nada
  end
end

#start_transaction_span(sessão) ➤ Objeto

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Inicie um período de transação e ative seu 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
# File 'lib/mongo/trasing/open_telemetry/tracer.rb', linha 95

def start_transaction_span(session)
  Método a menos que habilitado?

  chave = transaction_map_key(session)
  Método a menos que chave

  # Crie a extensão da transação com atributos mínimos
  extensão = @otil_tracer.start_span(
    'transaction',
    atributos: { ' db.system.name ' => 'mongodb' },
    kind: :cliente
  )

  # Crie um contexto contendo esta extensão
  Contexto = ::OpenTelemetry::RASTREAR.context_with_span(extensão)

  # Ative o contexto e armazene o token para desapego posterior
  token = ::OpenTelemetry::Contexto.anexar(Contexto)

  # Armazene extensão, token e contexto para recuperação posterior
  transaction_span_map[chave] = extensão
  transaction_token_map[chave] = token
  transaction_context_map[chave] = Contexto
end

#rastreamento_command(message, operation_context, connection) {... } ➤ Objeto

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Rastreie um comando MongoDB .

Parâmetros:

Rendimento:

  • O bloco representando o comando a ser rastreado.

Retorna:

  • (Objeto)

    O resultado do comando.



86
87
88
89
90
# File 'lib/mongo/trasing/open_telemetry/tracer.rb', linha 86

def rastreamento_command(mensagem, operation_context, Conexão, &noum: bloco ; verb: bloquear)
  Método rendimento a menos que habilitado?

  @command_tracer.rastreamento_command(mensagem, operation_context, Conexão, &noum: bloco ; verb: bloquear)
end

#rastreamento_operation(operation, operation_context, op_name: nil) {... } ⇒ Object

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Rastreie uma operação MongoDB .

Parâmetros:

  • operação (Mongo::Operação)

    A operação MongoDB a ser rastreada.

  • operation_context (Mongo::Operação::Context)

    O contexto da operação.

  • op_name (String, nil) (padrão para: nil)

    Um nome opcional para a operação.

Rendimento:

  • O bloco representando a operação a ser rastreada.

Retorna:

  • (Objeto)

    O resultado da operação.



73
74
75
76
77
# File 'lib/mongo/trasing/open_telemetry/tracer.rb', linha 73

def rastreamento_operação(operação, operation_context, op_name: nada, &noum: bloco ; verb: bloquear)
  Método rendimento a menos que habilitado?

  @operation_tracer.rastreamento_operação(operação, operation_context, op_name: op_name, &noum: bloco ; verb: bloquear)
end

#transaction_context_mapHash

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna o mapa de contexto da transação para rastrear contextos de transação ativos.

Retorna:

  • (Hash)

    map de chaves de transação para contextos OpenTelemetry.



182
183
184
# File 'lib/mongo/trasing/open_telemetry/tracer.rb', linha 182

def transaction_context_map
  @transaction_context_map ||= {}
end

#transaction_map_key(sessão) ➤ String | nada

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Gera uma chave exclusiva para rastreamento de transações.

Retorna nulo para sessões implícitas ou sessões que não estejam em uma transação.

Parâmetros:

Retorna:

  • (string | nil)

    chave exclusiva que combina ID da sessão e número da transação, ou nula.



207
208
209
210
211
# File 'lib/mongo/trasing/open_telemetry/tracer.rb', linha 207

def transaction_map_key(session)
  Método se session.nada? || session.implícito? || !session.in_transaction?

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

#transaction_span_mapHash

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna o mapa de extensão de transações para rastrear extensões de transação ativas.

Retorna:

  • (Hash)

    map de chaves de transação para spans OpenTelemetry.



189
190
191
# File 'lib/mongo/trasing/open_telemetry/tracer.rb', linha 189

def transaction_span_map
  @transaction_span_map ||= {}
end

#transaction_token_mapHash

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna o mapa de token de transação para rastrear tokens de anexação de contexto.

Retorna:

  • (Hash)

    map de chaves de transação para tokens de contexto OpenTelemetry.



196
197
198
# File 'lib/mongo/trasing/open_telemetry/tracer.rb', linha 196

def transaction_token_map
  @transaction_token_map ||= {}
end