From cbbf6b5d7b7cdee99691d0b74f94e0ef077da556 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anderson=20Samir=20Corr=C3=AAa=20Paz=20de=20Camargo?= Date: Wed, 10 May 2023 18:07:46 -0300 Subject: [PATCH] add support to mongoid events --- meta_request/lib/meta_request.rb | 1 + .../lib/meta_request/app_notifications.rb | 4 ++++ meta_request/lib/meta_request/subscribers.rb | 7 ++++++ .../subscribers/mongo_command_subscriber.rb | 24 +++++++++++++++++++ 4 files changed, 36 insertions(+) create mode 100644 meta_request/lib/meta_request/subscribers.rb create mode 100644 meta_request/lib/meta_request/subscribers/mongo_command_subscriber.rb diff --git a/meta_request/lib/meta_request.rb b/meta_request/lib/meta_request.rb index b211e90..ccf212a 100644 --- a/meta_request/lib/meta_request.rb +++ b/meta_request/lib/meta_request.rb @@ -7,6 +7,7 @@ module MetaRequest autoload :AppRequest, 'meta_request/app_request' autoload :Storage, 'meta_request/storage' autoload :Middlewares, 'meta_request/middlewares' + autoload :Subscribers, 'meta_request/subscribers' autoload :LogInterceptor, 'meta_request/log_interceptor' autoload :AppNotifications, 'meta_request/app_notifications' autoload :Utils, 'meta_request/utils' diff --git a/meta_request/lib/meta_request/app_notifications.rb b/meta_request/lib/meta_request/app_notifications.rb index 2eb0f49..0578d44 100644 --- a/meta_request/lib/meta_request/app_notifications.rb +++ b/meta_request/lib/meta_request/app_notifications.rb @@ -57,6 +57,10 @@ class AppNotifications # Subscribe to all events relevant to RailsPanel # def self.subscribe + if Mongo and Mongo::Monitoring and Mongo::Monitoring::Global + Mongo::Monitoring::Global.subscribe(Mongo::Monitoring::COMMAND, MetaRequest::Subscribers::MongoCommandSubscriber.new) + end + new .subscribe('meta_request.log') .subscribe('sql.active_record', &SQL_BLOCK) diff --git a/meta_request/lib/meta_request/subscribers.rb b/meta_request/lib/meta_request/subscribers.rb new file mode 100644 index 0000000..7bc9daa --- /dev/null +++ b/meta_request/lib/meta_request/subscribers.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +module MetaRequest + module Subscribers + autoload :MongoCommandSubscriber, 'meta_request/subscribers/mongo_command_subscriber' + end +end diff --git a/meta_request/lib/meta_request/subscribers/mongo_command_subscriber.rb b/meta_request/lib/meta_request/subscribers/mongo_command_subscriber.rb new file mode 100644 index 0000000..ad05417 --- /dev/null +++ b/meta_request/lib/meta_request/subscribers/mongo_command_subscriber.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +module MetaRequest + module Subscribers + class MongoCommandSubscriber + def started(event) + # puts "Started #{event.command_name}: #{event.command}" + end + + def failed(event) + # puts "Failed #{event.command_name}: #{event.message}" + end + + def succeeded(event) + start_time = Time.now - event.duration + end_time = Time.now + transaction_id = event.request_id + command = event.started_event.command.to_json + payload = { name: event.command_name, sql: command } + ActiveSupport::Notifications.publish('sql.active_record', start_time, end_time, transaction_id, payload) + end + end + end +end