Module: BrainzLab::Instrumentation

Defined in:
lib/brainzlab/instrumentation.rb,
lib/brainzlab/instrumentation/aws.rb,
lib/brainzlab/instrumentation/dalli.rb,
lib/brainzlab/instrumentation/excon.rb,
lib/brainzlab/instrumentation/grape.rb,
lib/brainzlab/instrumentation/redis.rb,
lib/brainzlab/instrumentation/resque.rb,
lib/brainzlab/instrumentation/stripe.rb,
lib/brainzlab/instrumentation/faraday.rb,
lib/brainzlab/instrumentation/graphql.rb,
lib/brainzlab/instrumentation/mongodb.rb,
lib/brainzlab/instrumentation/sidekiq.rb,
lib/brainzlab/instrumentation/good_job.rb,
lib/brainzlab/instrumentation/httparty.rb,
lib/brainzlab/instrumentation/net_http.rb,
lib/brainzlab/instrumentation/railties.rb,
lib/brainzlab/instrumentation/typhoeus.rb,
lib/brainzlab/instrumentation/active_job.rb,
lib/brainzlab/instrumentation/action_view.rb,
lib/brainzlab/instrumentation/delayed_job.rb,
lib/brainzlab/instrumentation/solid_queue.rb,
lib/brainzlab/instrumentation/action_cable.rb,
lib/brainzlab/instrumentation/action_mailer.rb,
lib/brainzlab/instrumentation/active_record.rb,
lib/brainzlab/instrumentation/elasticsearch.rb,
lib/brainzlab/instrumentation/action_mailbox.rb,
lib/brainzlab/instrumentation/active_storage.rb,
lib/brainzlab/instrumentation/action_dispatch.rb,
lib/brainzlab/instrumentation/action_controller.rb,
lib/brainzlab/instrumentation/rails_deprecation.rb,
lib/brainzlab/instrumentation/active_support_cache.rb

Defined Under Namespace

Modules: AWSInstrumentation, ActionMailerInstrumentation, DalliInstrumentation, DelayedJobInstrumentation, ElasticsearchInstrumentation, ExconInstrumentation, FaradayMiddleware, GoodJobInstrumentation, GrapeInstrumentation, GraphQLInstrumentation, HTTPartyInstrumentation, MongoDBInstrumentation, NetHttp, RedisInstrumentation, ResqueInstrumentation, SidekiqInstrumentation, SolidQueueInstrumentation, StripeInstrumentation, TyphoeusInstrumentation Classes: ActionCable, ActionController, ActionDispatch, ActionMailbox, ActionView, ActiveJob, ActiveRecord, ActiveStorage, ActiveSupportCache, RailsDeprecation, Railties

Class Method Summary collapse

Class Method Details

.install!Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/brainzlab/instrumentation.rb', line 6

def install!
  config = BrainzLab.configuration

  # Skip all instrumentation if SDK is disabled
  unless config.enabled?
    BrainzLab.debug_log('[Instrumentation] SDK disabled via BRAINZLAB_SDK_ENABLED=false, skipping all instrumentation')
    return
  end

  # Skip Rails-specific instrumentation if brainzlab-rails gem is handling it
  # This prevents double-tracking of events
  if config.rails_instrumentation_handled_externally
    BrainzLab.debug_log('[Instrumentation] Rails instrumentation handled by brainzlab-rails gem, skipping SDK instrumentation')
    install_non_rails_instrumentation!(config)
    return
  end

  # HTTP client instrumentation
  if config.instrument_http
    install_net_http!
    install_faraday!
    install_httparty!
  end

  # Database instrumentation (breadcrumbs for Reflex)
  install_active_record! if config.instrument_active_record

  # Redis instrumentation
  install_redis! if config.instrument_redis

  # Background job instrumentation
  install_sidekiq! if config.instrument_sidekiq

  # GraphQL instrumentation
  install_graphql! if config.instrument_graphql

  # MongoDB instrumentation
  install_mongodb! if config.instrument_mongodb

  # Elasticsearch instrumentation
  install_elasticsearch! if config.instrument_elasticsearch

  # Rails MVC instrumentation
  install_action_controller! if config.instrument_action_controller
  install_action_view! if config.instrument_action_view
  install_action_mailer! if config.instrument_action_mailer

  # ActiveJob instrumentation (covers all job backends)
  install_active_job! if config.instrument_active_job

  # ActiveSupport::Cache instrumentation
  install_active_support_cache! if config.instrument_active_support_cache

  # Delayed::Job instrumentation
  install_delayed_job! if config.instrument_delayed_job

  # Grape API instrumentation
  install_grape! if config.instrument_grape

  # Modern job queue instrumentation
  install_solid_queue! if config.instrument_solid_queue
  install_good_job! if config.instrument_good_job
  install_resque! if config.instrument_resque

  # Additional HTTP clients
  install_excon! if config.instrument_excon
  install_typhoeus! if config.instrument_typhoeus

  # Caching
  install_dalli! if config.instrument_dalli

  # Cloud & Payment
  install_aws! if config.instrument_aws
  install_stripe! if config.instrument_stripe

  # File storage
  install_active_storage! if config.instrument_active_storage

  # WebSocket
  install_action_cable! if config.instrument_action_cable

  # Rails framework events
  install_action_dispatch! if config.instrument_action_dispatch
  install_rails_deprecation! if config.instrument_rails_deprecation
  install_action_mailbox! if config.instrument_action_mailbox
  install_railties! if config.instrument_railties
end

.install_action_cable!Object



265
266
267
268
269
270
# File 'lib/brainzlab/instrumentation.rb', line 265

def install_action_cable!
  return unless defined?(::ActionCable)

  require_relative 'instrumentation/action_cable'
  ActionCable.install!
end

.install_action_controller!Object



153
154
155
156
157
158
# File 'lib/brainzlab/instrumentation.rb', line 153

def install_action_controller!
  return unless defined?(::ActionController)

  require_relative 'instrumentation/action_controller'
  ActionController.install!
end

.install_action_dispatch!Object



272
273
274
275
276
277
# File 'lib/brainzlab/instrumentation.rb', line 272

def install_action_dispatch!
  return unless defined?(::ActionDispatch)

  require_relative 'instrumentation/action_dispatch'
  ActionDispatch.install!
end

.install_action_mailbox!Object



286
287
288
289
290
291
# File 'lib/brainzlab/instrumentation.rb', line 286

def install_action_mailbox!
  return unless defined?(::ActionMailbox)

  require_relative 'instrumentation/action_mailbox'
  ActionMailbox.install!
end

.install_action_mailer!Object



167
168
169
170
171
172
# File 'lib/brainzlab/instrumentation.rb', line 167

def install_action_mailer!
  return unless defined?(::ActionMailer)

  require_relative 'instrumentation/action_mailer'
  ActionMailerInstrumentation.install!
end

.install_action_view!Object



160
161
162
163
164
165
# File 'lib/brainzlab/instrumentation.rb', line 160

def install_action_view!
  return unless defined?(::ActionView)

  require_relative 'instrumentation/action_view'
  ActionView.install!
end

.install_active_job!Object



174
175
176
177
178
179
# File 'lib/brainzlab/instrumentation.rb', line 174

def install_active_job!
  return unless defined?(::ActiveJob)

  require_relative 'instrumentation/active_job'
  ActiveJob.install!
end

.install_active_record!Object



113
114
115
116
# File 'lib/brainzlab/instrumentation.rb', line 113

def install_active_record!
  require_relative 'instrumentation/active_record'
  ActiveRecord.install!
end

.install_active_storage!Object



258
259
260
261
262
263
# File 'lib/brainzlab/instrumentation.rb', line 258

def install_active_storage!
  return unless defined?(::ActiveStorage)

  require_relative 'instrumentation/active_storage'
  ActiveStorage.install!
end

.install_active_support_cache!Object



181
182
183
184
185
186
# File 'lib/brainzlab/instrumentation.rb', line 181

def install_active_support_cache!
  return unless defined?(::ActiveSupport::Cache)

  require_relative 'instrumentation/active_support_cache'
  ActiveSupportCache.install!
end

.install_aws!Object



244
245
246
247
248
249
# File 'lib/brainzlab/instrumentation.rb', line 244

def install_aws!
  return unless defined?(::Aws)

  require_relative 'instrumentation/aws'
  AWSInstrumentation.install!
end

.install_dalli!Object



237
238
239
240
241
242
# File 'lib/brainzlab/instrumentation.rb', line 237

def install_dalli!
  return unless defined?(::Dalli::Client)

  require_relative 'instrumentation/dalli'
  DalliInstrumentation.install!
end

.install_delayed_job!Object



188
189
190
191
192
193
# File 'lib/brainzlab/instrumentation.rb', line 188

def install_delayed_job!
  return unless defined?(::Delayed::Job) || defined?(::Delayed::Backend)

  require_relative 'instrumentation/delayed_job'
  DelayedJobInstrumentation.install!
end

.install_elasticsearch!Object



146
147
148
149
150
151
# File 'lib/brainzlab/instrumentation.rb', line 146

def install_elasticsearch!
  return unless defined?(::Elasticsearch) || defined?(::OpenSearch)

  require_relative 'instrumentation/elasticsearch'
  ElasticsearchInstrumentation.install!
end

.install_excon!Object



223
224
225
226
227
228
# File 'lib/brainzlab/instrumentation.rb', line 223

def install_excon!
  return unless defined?(::Excon)

  require_relative 'instrumentation/excon'
  ExconInstrumentation.install!
end

.install_faraday!Object



99
100
101
102
103
104
# File 'lib/brainzlab/instrumentation.rb', line 99

def install_faraday!
  return unless defined?(::Faraday)

  require_relative 'instrumentation/faraday'
  FaradayMiddleware.install!
end

.install_good_job!Object



209
210
211
212
213
214
# File 'lib/brainzlab/instrumentation.rb', line 209

def install_good_job!
  return unless defined?(::GoodJob)

  require_relative 'instrumentation/good_job'
  GoodJobInstrumentation.install!
end

.install_grape!Object



195
196
197
198
199
200
# File 'lib/brainzlab/instrumentation.rb', line 195

def install_grape!
  return unless defined?(::Grape::API)

  require_relative 'instrumentation/grape'
  GrapeInstrumentation.install!
end

.install_graphql!Object



132
133
134
135
136
137
# File 'lib/brainzlab/instrumentation.rb', line 132

def install_graphql!
  return unless defined?(::GraphQL)

  require_relative 'instrumentation/graphql'
  GraphQLInstrumentation.install!
end

.install_http!Object

Manual installation methods for lazy-loaded libraries



301
302
303
304
305
# File 'lib/brainzlab/instrumentation.rb', line 301

def install_http!
  install_net_http!
  install_faraday!
  install_httparty!
end

.install_httparty!Object



106
107
108
109
110
111
# File 'lib/brainzlab/instrumentation.rb', line 106

def install_httparty!
  return unless defined?(::HTTParty)

  require_relative 'instrumentation/httparty'
  HTTPartyInstrumentation.install!
end

.install_mongodb!Object



139
140
141
142
143
144
# File 'lib/brainzlab/instrumentation.rb', line 139

def install_mongodb!
  return unless defined?(::Mongo) || defined?(::Mongoid)

  require_relative 'instrumentation/mongodb'
  MongoDBInstrumentation.install!
end

.install_net_http!Object



94
95
96
97
# File 'lib/brainzlab/instrumentation.rb', line 94

def install_net_http!
  require_relative 'instrumentation/net_http'
  NetHttp.install!
end

.install_rails_deprecation!Object



279
280
281
282
283
284
# File 'lib/brainzlab/instrumentation.rb', line 279

def install_rails_deprecation!
  return unless defined?(::Rails)

  require_relative 'instrumentation/rails_deprecation'
  RailsDeprecation.install!
end

.install_railties!Object



293
294
295
296
297
298
# File 'lib/brainzlab/instrumentation.rb', line 293

def install_railties!
  return unless defined?(::Rails)

  require_relative 'instrumentation/railties'
  Railties.install!
end

.install_redis!Object



118
119
120
121
122
123
# File 'lib/brainzlab/instrumentation.rb', line 118

def install_redis!
  return unless defined?(::Redis)

  require_relative 'instrumentation/redis'
  RedisInstrumentation.install!
end

.install_resque!Object



216
217
218
219
220
221
# File 'lib/brainzlab/instrumentation.rb', line 216

def install_resque!
  return unless defined?(::Resque)

  require_relative 'instrumentation/resque'
  ResqueInstrumentation.install!
end

.install_sidekiq!Object



125
126
127
128
129
130
# File 'lib/brainzlab/instrumentation.rb', line 125

def install_sidekiq!
  return unless defined?(::Sidekiq)

  require_relative 'instrumentation/sidekiq'
  SidekiqInstrumentation.install!
end

.install_solid_queue!Object



202
203
204
205
206
207
# File 'lib/brainzlab/instrumentation.rb', line 202

def install_solid_queue!
  return unless defined?(::SolidQueue)

  require_relative 'instrumentation/solid_queue'
  SolidQueueInstrumentation.install!
end

.install_stripe!Object



251
252
253
254
255
256
# File 'lib/brainzlab/instrumentation.rb', line 251

def install_stripe!
  return unless defined?(::Stripe)

  require_relative 'instrumentation/stripe'
  StripeInstrumentation.install!
end

.install_typhoeus!Object



230
231
232
233
234
235
# File 'lib/brainzlab/instrumentation.rb', line 230

def install_typhoeus!
  return unless defined?(::Typhoeus)

  require_relative 'instrumentation/typhoeus'
  TyphoeusInstrumentation.install!
end