Class: Mongo::Monitoring

Inherits:
Object
  • Object
show all
Includes:
Subscribable
Defined in:
lib/mongo/monitoring.rb,
lib/mongo/monitoring/publishable.rb,
lib/mongo/monitoring/event/secure.rb,
lib/mongo/monitoring/event/server_closed.rb,
lib/mongo/monitoring/sdam_log_subscriber.rb,
lib/mongo/monitoring/event/command_failed.rb,
lib/mongo/monitoring/event/server_opening.rb,
lib/mongo/monitoring/event/command_started.rb,
lib/mongo/monitoring/event/topology_closed.rb,
lib/mongo/monitoring/command_log_subscriber.rb,
lib/mongo/monitoring/event/topology_changed.rb,
lib/mongo/monitoring/event/topology_opening.rb,
lib/mongo/monitoring/event/command_succeeded.rb,
lib/mongo/monitoring/server_closed_log_subscriber.rb,
lib/mongo/monitoring/server_opening_log_subscriber.rb,
lib/mongo/monitoring/topology_changed_log_subscriber.rb,
lib/mongo/monitoring/topology_opening_log_subscriber.rb,
lib/mongo/monitoring/event/server_description_changed.rb,
lib/mongo/monitoring/server_description_changed_log_subscriber.rb

Overview

The class defines behaviour for the performance monitoring API.

Since:

  • 2.1.0

Defined Under Namespace

Modules: Event, Global, Publishable, Subscribable Classes: CommandLogSubscriber, SDAMLogSubscriber, ServerClosedLogSubscriber, ServerDescriptionChangedLogSubscriber, ServerOpeningLogSubscriber, TopologyChangedLogSubscriber, TopologyOpeningLogSubscriber

Constant Summary collapse

COMMAND =

The command topic.

Since:

  • 2.1.0

'Command'.freeze
SERVER_CLOSED =

Server closed topic.

Since:

  • 2.4.0

'ServerClosed'.freeze
SERVER_DESCRIPTION_CHANGED =

Server description changed topic.

Since:

  • 2.4.0

'ServerDescriptionChanged'.freeze
SERVER_OPENING =

Server opening topic.

Since:

  • 2.4.0

'ServerOpening'.freeze
TOPOLOGY_CHANGED =

Topology changed topic.

Since:

  • 2.4.0

'TopologyChanged'.freeze
TOPOLOGY_CLOSED =

Topology closed topic.

Since:

  • 2.4.0

'TopologyClosed'.freeze
TOPOLOGY_OPENING =

Topology opening topic.

Since:

  • 2.4.0

'TopologyOpening'.freeze
@@operation_id =

Since:

  • 2.1.0

0
@@operation_id_lock =

Since:

  • 2.1.0

Mutex.new

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Subscribable

#subscribe, #subscribers, #subscribers?, #unsubscribe

Constructor Details

#initialize(options = {}) ⇒ Monitoring

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Initialize the monitoring.

Examples:

Create the new monitoring.

Monitoring.new(:monitoring => true)

Parameters:

  • options (Hash) (defaults to: {})

    Options. Client constructor forwards its options to Monitoring constructor, although Monitoring recognizes only a subset of the options recognized by Client.

Since:

  • 2.1.0



202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
# File 'lib/mongo/monitoring.rb', line 202

def initialize(options = {})
  if options[:monitoring] != false
    Global.subscribers.each do |topic, subscribers|
      subscribers.each do |subscriber|
        subscribe(topic, subscriber)
      end
    end
    subscribe(COMMAND, CommandLogSubscriber.new(options))
    subscribe(SERVER_OPENING, ServerOpeningLogSubscriber.new(options))
    subscribe(SERVER_CLOSED, ServerClosedLogSubscriber.new(options))
    subscribe(SERVER_DESCRIPTION_CHANGED, ServerDescriptionChangedLogSubscriber.new(options))
    subscribe(TOPOLOGY_OPENING, TopologyOpeningLogSubscriber.new(options))
    subscribe(TOPOLOGY_CHANGED, TopologyChangedLogSubscriber.new(options))
  end
end

Class Method Details

.next_operation_idInteger

Used for generating unique operation ids to link events together.

Examples:

Get the next operation id.

Monitoring.next_operation_id

Returns:

  • (Integer)

    The next operation id.

Since:

  • 2.1.0



68
69
70
71
72
# File 'lib/mongo/monitoring.rb', line 68

def self.next_operation_id
  @@operation_id_lock.synchronize do
    @@operation_id += 1
  end
end

Instance Method Details

#failed(topic, event) ⇒ Object

Publish a failed event.

Examples:

Publish a failed event.

monitoring.failed(COMMAND, event)

Parameters:

  • topic (String)

    The event topic.

  • event (Event)

    The event to publish.

Since:

  • 2.1.0



253
254
255
# File 'lib/mongo/monitoring.rb', line 253

def failed(topic, event)
  subscribers_for(topic).each{ |subscriber| subscriber.failed(event) }
end

#started(topic, event) ⇒ Object

Publish a started event.

Examples:

Publish a started event.

monitoring.started(COMMAND, event)

Parameters:

  • topic (String)

    The event topic.

  • event (Event)

    The event to publish.

Since:

  • 2.1.0



227
228
229
# File 'lib/mongo/monitoring.rb', line 227

def started(topic, event)
  subscribers_for(topic).each{ |subscriber| subscriber.started(event) }
end

#succeeded(topic, event) ⇒ Object

Publish a succeeded event.

Examples:

Publish a succeeded event.

monitoring.succeeded(COMMAND, event)

Parameters:

  • topic (String)

    The event topic.

  • event (Event)

    The event to publish.

Since:

  • 2.1.0



240
241
242
# File 'lib/mongo/monitoring.rb', line 240

def succeeded(topic, event)
  subscribers_for(topic).each{ |subscriber| subscriber.succeeded(event) }
end