클래스: Mongo::Trace::OpenTelemetry::Tracer Private

상속:
객체
  • 객체
모두 표시
다음에 정의됨:
lib/ Mongo/tracing/open_telemetry/tracer.rb

개요

이 클래스는 비공개 API의 일부입니다. 이 클래스는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

MongoDB 작업 및 명령을 위한 OpenTelemetry 추적 프로그램입니다.

인스턴스 속성 요약 접기

인스턴스 메서드 요약 접기

생성자 세부 정보

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

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

새 OpenTelemetry 추적 프로그램을 초기화합니다.

매개변수:

  • 활성화됨 (Boolean | nil) (기본값: nil)

    OpenTelemetry 활성화 여부. 기본값은 nil이며, 이는 환경 변수 OTEL_RUBY_INSTRUMENTATION_MONGODB_ENABLED(값: true/1/yes)를 확인한다는 것을 의미합니다. 환경 변수를 설정하다 하지 않으면 기본값 으로 OpenTelemetry가 비활성화됩니다.

  • query_text_max_Length (정수 | nil) (기본값: nil)

    캡처된 쿼리 텍스트의 최대 길이입니다. 기본값은 nil이며, 이는 환경 변수 OTEL_RUBY_INSTRUMENTATION_MONGODB_QUERY_TEXT_MAX_LENGTH를 확인한다는 것을 의미합니다. 환경 변수가 설정하다 되지 않으면 쿼리 텍스트가 캡처되지 않습니다.

  • otel_tracer (OpenTelemetry::Trace::Tracer | nil) (기본값: nil)

    사용할 OpenTelemetry 추적 구현 . 기본값은 nil이며, 이는 OpenTelemetry의 추적 프로그램 제공자 의 기본값 추적 프로그램을 사용한다는 의미입니다.



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# 파일 'lib/ Mongo/tracing/open_telemetry/tracer.rb', 줄 42

def 초기화(활성화됨: nil, query_text_max_Length: nil, otel_tracer: nil)
  @Enabled = 만약 활성화됨.nil?
               %w[true 1 ].포함?(ENV['OTEL_RUBY_INSTRUMENTATION_MONGODB_ENABLED']&.downcase)
             other
               활성화됨
             end
  check_opentelemetry_loaded
  @query_text_max_Length = 만약 query_text_max_Length.nil?
                             ENV['OTEL_RUBY_INSTRUMENTATION_MONGODB_QUERY_TEXT_MAX_LENGTH'].to_i
                           other
                             query_text_max_Length
                           end
  @otel_tracer = otel_tracer || initialize_tracer
  @operation_tracer = OperationTracer.신규(@otel_tracer, self)
  @command_tracer = CommandTracer.신규(@otel_tracer, self, query_text_max_Length: @query_text_max_Length)
end

인스턴스 속성 세부 정보

#otel_tracerOpenTelemetry::Trace::Tracer (읽기 전용)

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

MongoDB 작업 및 명령에 대한 스팬을 생성하는 데 사용되는 OpenTelemetry 추적 구현 반환합니다.

반환합니다:

  • (OpenTelemetry::Trace::Tracer)

    MongoDB 작업 및 명령에 대한 스팬을 생성하는 데 사용되는 OpenTelemetry 추적 구현 .



27
28
29
# 파일 'lib/ Mongo/tracing/open_telemetry/tracer.rb', 줄 27

def otel_tracer
  @otel_tracer
end

인스턴스 메서드 세부 정보

#cursor_context_mapHash

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

커서 관련 OpenTelemetry 컨텍스트를 추적하기 위한 커서 컨텍스트 맵을 반환합니다.

반환합니다:

  • (해시)

    커서 ID를 OpenTelemetry 컨텍스트에 매핑합니다.



145
146
147
# 파일 'lib/ Mongo/tracing/open_telemetry/tracer.rb', 줄 145

def cursor_context_map
  @cursor_context_map ||= {}
end

#cursor_map_key(세션, cursor_id) ⇒ String | nil

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

컨텍스트 맵에서 커서 추적을 위한 고유 키를 생성합니다.

매개변수:

  • Session (Mongo::Session)

    커서 와 연결된 세션입니다.

  • cursor_id (정수)

    커서 ID입니다.

반환합니다:

  • (string | nil)

    세션 ID 와 커서 ID 결합하는 고유 키 또는 둘 중 하나가 nil인 경우 nil입니다.



155
156
157
158
159
# 파일 'lib/ Mongo/tracing/open_telemetry/tracer.rb', 줄 155

def cursor_map_key(Session, cursor_id)
  반환 만약 cursor_id.nil? || Session.nil?

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

#활성화되었나요?불리언

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

OpenTelemetry의 활성화 여부입니다.

반환합니다:

  • (부울)

    OpenTelemetry가 활성화되면 true이고, 그렇지 않으면 false입니다.



62
63
64
# 파일 'lib/ Mongo/tracing/open_telemetry/tracer.rb', 줄 62

def 활성화?
  @Enabled
end

#finish_transaction_span(세션) ⇒ 객체

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

트랜잭션 범위를 완료하고 해당 컨텍스트를 비활성화합니다.

매개변수:

  • Session (Mongo::Session)

    트랜잭션 완료하는 세션입니다.



123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# 파일 'lib/ Mongo/tracing/open_telemetry/tracer.rb', 줄 123

def finish_transaction_span(Session)
  반환 하지 않는 한 활성화?

   = transaction_map_key(Session)
  반환 하지 않는 한 

  span = transaction_span_map.삭제()
  token = transaction_token_map.삭제()
  transaction_context_map.삭제()

  반환 하지 않는 한 span && token

  시작
    span.마침
  보장
    ::OpenTelemetry::Context.detach(token)
  end
end

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

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

작업에 대한 상위 OpenTelemetry 컨텍스트를 결정합니다.

작업이 트랜잭션 의 일부인 경우 트랜잭션 컨텍스트를 반환하고, 그렇지 않으면 nil을 반환합니다. 커서 기반 컨텍스트 중첩은 현재 구현되지 않습니다.

매개변수:

  • operation_context (Mongo::Operation::Context)

    작업 컨텍스트입니다.

  • cursor_id (정수)

    해당하는 경우 커서 ID.

반환합니다:

  • (OpenTelemetry::Context | nil)

    상위 컨텍스트 또는 nil입니다.



170
171
172
173
174
175
176
177
# 파일 'lib/ Mongo/tracing/open_telemetry/tracer.rb', 줄 170

def parent_context_for(operation_context, cursor_id)
  만약 ( = transaction_map_key(operation_context.Session))
    transaction_context_map[]
  elsif (_key = cursor_map_key(operation_context.Session, cursor_id))
    # 커서 중첩하는 방법을 결정하지 않는 한 여기서는 nil을 반환합니다.
    nil
  end
end

#start_transaction_span(세션) ⇒ 객체

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

트랜잭션 범위를 시작하고 해당 컨텍스트를 활성화합니다.

매개변수:

  • Session (Mongo::Session)

    트랜잭션 시작하는 세션입니다.



95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# 파일 'lib/ Mongo/tracing/open_telemetry/tracer.rb', 줄 95

def start_transaction_span(Session)
  반환 하지 않는 한 활성화?

   = transaction_map_key(Session)
  반환 하지 않는 한 

  # 최소한의 속성으로 트랜잭션 스팬 생성
  span = @otel_tracer.start_span(
    'transaction',
    속성: { 'db.system.name' => 'mongodb' },
    kind: :client
  )

  # 이 범위를 포함하는 컨텍스트 생성
  컨텍스트 = ::OpenTelemetry::트레이스.context_with_span(span)

  # 컨텍스트를 활성화하고 나중에 분리할 수 있도록 토큰을 저장 .
  token = ::OpenTelemetry::Context.첨부(컨텍스트)

  # 나중에 검색할 수 있도록 범위, 토큰 및 컨텍스트를 저장합니다.
  transaction_span_map[] = span
  transaction_token_map[] = token
  transaction_context_map[] = 컨텍스트
end

#trace_command(message, operation_context, connection) {... } ⇒ 객체

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

MongoDB 명령을 추적합니다.

매개변수:

수율:

  • 추적할 명령을 나타내는 차단 .

반환합니다:

  • (객체)

    명령의 결과입니다.



86
87
88
89
90
# 파일 'lib/ Mongo/tracing/open_telemetry/tracer.rb', 줄 86

def trace_command(메시지, operation_context, 연결, &차단)
  반환 yield 하지 않는 한 활성화?

  @command_tracer.trace_command(메시지, operation_context, 연결, &차단)
end

#trace_operation(operation, operation_context, op_name: nil) {... } ⇒ 객체

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

MongoDB 작업을 추적합니다.

매개변수:

  • 작업 (Mongo::Operation)

    추적할 MongoDB 작업입니다.

  • operation_context (Mongo::Operation::Context)

    작업의 컨텍스트입니다.

  • op_name (String, nil) (기본값: nil)

    작업의 선택 사항 이름입니다.

수율:

  • 추적할 작업을 나타내는 차단 .

반환합니다:

  • (객체)

    작업 결과입니다.



73
74
75
76
77
# 파일 'lib/ Mongo/tracing/open_telemetry/tracer.rb', 줄 73

def trace_operation(작업, operation_context, op_name: nil, &차단)
  반환 yield 하지 않는 한 활성화?

  @operation_tracer.trace_operation(작업, operation_context, op_name: op_name, &차단)
end

#transaction_context_mapHash

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

활성 트랜잭션 컨텍스트를 추적하기 위한 트랜잭션 컨텍스트 맵을 반환합니다.

반환합니다:

  • (해시)

    트랜잭션 키를 OpenTelemetry 컨텍스트에 매핑합니다.



182
183
184
# 파일 'lib/ Mongo/tracing/open_telemetry/tracer.rb', 줄 182

def transaction_context_map
  @transaction_context_map ||= {}
end

#transaction_map_key(session) ⇒ string | nil

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

트랜잭션 추적을 위한 고유 키를 생성합니다.

암시적 세션 또는 트랜잭션 에 없는 세션에 대해서는 nil을 반환합니다.

매개변수:

반환합니다:

  • (string | nil)

    세션 ID 와 트랜잭션 번호를 결합한 고유 키 또는 nil입니다.



207
208
209
210
211
# 파일 'lib/ Mongo/tracing/open_telemetry/tracer.rb', 줄 207

def transaction_map_key(Session)
  반환 만약 Session.nil? || Session.암시적? || !Session.in_transaction?

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

#transaction_span_mapHash

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

활성 트랜잭션 범위를 추적하기 위한 트랜잭션 범위 맵을 반환합니다.

반환합니다:

  • (해시)

    트랜잭션 키를 OpenTelemetry 범위에 매핑합니다.



189
190
191
# 파일 'lib/ Mongo/tracing/open_telemetry/tracer.rb', 줄 189

def transaction_span_map
  @transaction_span_map ||= {}
end

#transaction_token_mapHash

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

컨텍스트 첨부 파일 토큰을 추적하기 위한 트랜잭션 토큰 맵을 반환합니다.

반환합니다:

  • (해시)

    트랜잭션 키를 OpenTelemetry 컨텍스트 토큰에 매핑합니다.



196
197
198
# 파일 'lib/ Mongo/tracing/open_telemetry/tracer.rb', 줄 196

def transaction_token_map
  @transaction_token_map ||= {}
end