Class: Mongo::Monitoring::Event::CommandStarted

Inherits:
Event::Base
  • Object
show all
Includes:
Secure
Defined in:
lib/mongo/monitoring/event/command_started.rb

Overview

Event that is fired when a command operation starts.

Since:

  • 2.1.0

Constant Summary

Constants included from Secure

Secure::REDACTED_COMMANDS

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Secure

#compression_allowed?, #redacted, #sensitive?

Constructor Details

#initialize(command_name, database_name, address, request_id, operation_id, command, socket_object_id: nil, connection_id: nil, connection_generation: nil, server_connection_id: nil, service_id: nil) ⇒ CommandStarted

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.

Create the new event.

Examples:

Create the event.

Parameters:

  • command_name (String)

    The name of the command.

  • database_name (String)

    The database_name name.

  • address (Server::Address)

    The server address.

  • request_id (Integer)

    The request id.

  • operation_id (Integer)

    The operation id.

  • command (BSON::Document)

    The command arguments.

  • service_id (Object) (defaults to: nil)

    The service id, if any.

Since:

  • 2.1.0



85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/mongo/monitoring/event/command_started.rb', line 85

def initialize(command_name, database_name, address, request_id,
  operation_id, command, socket_object_id: nil, connection_id: nil,
  connection_generation: nil, server_connection_id: nil,
  service_id: nil
)
  @command_name = command_name.to_s
  @database_name = database_name
  @address = address
  @request_id = request_id
  @operation_id = operation_id
  @service_id = service_id
  @sensitive = sensitive?(
    command_name: @command_name,
    document: command
  )
  @command = redacted(command_name, command)
  @socket_object_id = socket_object_id
  @connection_id = connection_id
  @connection_generation = connection_generation
  @server_connection_id = server_connection_id
end

Instance Attribute Details

#addressServer::Address (readonly)

Returns address The server address.

Returns:

  • (Server::Address)

    address The server address.

Since:

  • 2.1.0



29
30
31
# File 'lib/mongo/monitoring/event/command_started.rb', line 29

def address
  @address
end

#commandBSON::Document (readonly)

Returns command The command arguments.

Returns:

  • (BSON::Document)

    command The command arguments.

Since:

  • 2.1.0



32
33
34
# File 'lib/mongo/monitoring/event/command_started.rb', line 32

def command
  @command
end

#command_nameString (readonly)

Returns command_name The name of the command.

Returns:

  • (String)

    command_name The name of the command.

Since:

  • 2.1.0



35
36
37
# File 'lib/mongo/monitoring/event/command_started.rb', line 35

def command_name
  @command_name
end

#connection_generationObject (readonly)

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.

Since:

  • 2.1.0



55
56
57
# File 'lib/mongo/monitoring/event/command_started.rb', line 55

def connection_generation
  @connection_generation
end

#connection_idInteger (readonly)

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.

Returns The ID for the connection over which the command is sent.

Returns:

  • (Integer)

    The ID for the connection over which the command is sent.

Since:

  • 2.1.0



61
62
63
# File 'lib/mongo/monitoring/event/command_started.rb', line 61

def connection_id
  @connection_id
end

#database_nameString (readonly)

Returns database_name The name of the database_name.

Returns:

  • (String)

    database_name The name of the database_name.

Since:

  • 2.1.0



38
39
40
# File 'lib/mongo/monitoring/event/command_started.rb', line 38

def database_name
  @database_name
end

#operation_idInteger (readonly)

Returns operation_id The operation id.

Returns:

  • (Integer)

    operation_id The operation id.

Since:

  • 2.1.0



41
42
43
# File 'lib/mongo/monitoring/event/command_started.rb', line 41

def operation_id
  @operation_id
end

#request_idInteger (readonly)

Returns request_id The request id.

Returns:

  • (Integer)

    request_id The request id.

Since:

  • 2.1.0



44
45
46
# File 'lib/mongo/monitoring/event/command_started.rb', line 44

def request_id
  @request_id
end

#sensitivetrue | false (readonly)

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.

Returns Whether the event contains sensitive data.

Returns:

  • (true | false)

    Whether the event contains sensitive data.

Since:

  • 2.1.0



69
70
71
# File 'lib/mongo/monitoring/event/command_started.rb', line 69

def sensitive
  @sensitive
end

#server_connection_idInteger (readonly)

Returns server_connection_id The server connection id.

Returns:

  • (Integer)

    server_connection_id The server connection id.

Since:

  • 2.1.0



64
65
66
# File 'lib/mongo/monitoring/event/command_started.rb', line 64

def server_connection_id
  @server_connection_id
end

#service_idnil | Object (readonly)

Returns The service id, if any.

Returns:

  • (nil | Object)

    The service id, if any.

Since:

  • 2.1.0



47
48
49
# File 'lib/mongo/monitoring/event/command_started.rb', line 47

def service_id
  @service_id
end

#socket_object_idObject (readonly)

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.

object_id of the socket object used for this command.

Since:

  • 2.1.0



52
53
54
# File 'lib/mongo/monitoring/event/command_started.rb', line 52

def socket_object_id
  @socket_object_id
end

Class Method Details

.generate(address, operation_id, payload, socket_object_id: nil, connection_id: nil, connection_generation: nil, server_connection_id: nil, service_id: nil) ⇒ CommandStarted

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.

Create the event from a wire protocol message payload.

Examples:

Create the event.

CommandStarted.generate(address, 1, payload)

Parameters:

  • address (Server::Address)

    The server address.

  • operation_id (Integer)

    The operation id.

  • payload (Hash)

    The message payload.

  • service_id (Object) (defaults to: nil)

    The service id, if any.

Returns:

Since:

  • 2.1.0



150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# File 'lib/mongo/monitoring/event/command_started.rb', line 150

def self.generate(address, operation_id, payload,
  socket_object_id: nil, connection_id: nil, connection_generation: nil,
  server_connection_id: nil, service_id: nil
)
  new(
    payload[:command_name],
    payload[:database_name],
    address,
    payload[:request_id],
    operation_id,
    # All op_msg  payloads have a $db field. Legacy payloads do not
    # have a $db field. To emulate op_msg when publishing command
    # monitoring events for legacy servers, add $db to the payload,
    # copying the database name. Note that the database name is also
    # available as a top-level attribute on the command started event.
    payload[:command].merge('$db' => payload[:database_name]),
    socket_object_id: socket_object_id,
    connection_id: connection_id,
    connection_generation: connection_generation,
    server_connection_id: server_connection_id,
    service_id: service_id,
  )
end

Instance Method Details

#inspectString

Returns a concise yet useful summary of the event.

Returns:

  • (String)

    String summary of the event.

Since:

  • 2.6.0



179
180
181
# File 'lib/mongo/monitoring/event/command_started.rb', line 179

def inspect
  "#<{#{self.class} #{database_name}.#{command_name} command=#{command}>"
end

#summaryString

Note:

This method is experimental and subject to change.

Returns a concise yet useful summary of the event.

Returns:

  • (String)

    String summary of the event.

Since:

  • 2.1.0



114
115
116
# File 'lib/mongo/monitoring/event/command_started.rb', line 114

def summary
  "#<#{short_class_name} address=#{address} #{database_name}.#{command_name} command=#{command_summary}>"
end