类:Mongo::Monitoring

继承:
对象
  • 对象
显示全部
包括:
ID 订阅
定义于:
build/Ruby-driver-v 2.19 /lib/mongo/monitoring.rb ,
build/Ruby-driver-v 2.19 /lib/mongo/monitoring/publishable.rb,
build/Ruby-driver-v 2.19 /lib/mongo/monitoring/event/secure.rb,
build/Ruby-driver-v 2.19 /lib/mongo/monitoring/event/cmap/base.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/monitoring/cmap_log_subscriber.rb,
build/Ruby-driver-v 2 . 19 /lib/mongo/monitoring/event/server_close.rb,
build/Ruby-driver-v 2 . 19 /lib/mongo/monitoring/sdam_log_subscriber.rb,
build/Ruby-driver-v 2 . 19 /lib/mongo/monitoring/event/command_failed.rb,
build/Ruby-driver-v 2 . 19 /lib/mongo/monitoring/event/server_opening.rb,
build/Ruby-driver-v 2 . 19 /lib/mongo/monitoring/event/cmap/pool_ready.rb,
build/Ruby-driver-v 2 . 19 /lib/mongo/monitoring/event/command_started.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/monitoring/event/topology_close.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/monitoring/command_log_subscriber.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/monitoring/event/cmap/pool_close.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/monitoring/event/topology_changed.rb,
build/Ruby-driver-v 2 . 19 /lib/mongo/monitoring/event/topology_opening.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/monitoring/event/cmap/pool_cleared.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/monitoring/event/cmap/pool_created.rb,
build/Ruby-driver-v 2 . 19 /lib/mongo/monitoring/event/command_succeeded.rb,
build/Ruby-driver-v 2 . 19 /lib/mongo/monitoring/event/cmap/connection_ready.rb,
build/Ruby-driver-v 2 . 19 /lib/mongo/monitoring/unified_sdam_log_subscriber.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/monitoring/event/cmap/connection_close.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/monitoring/server_close_log_subscriber.rb,
build/Ruby-driver-v 2 . 19 /lib/mongo/monitoring/event/cmap/connection_created.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/monitoring/event/server_heartbeat_failed.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/monitoring/server_opening_log_subscriber.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/monitoring/event/server_heartbeat_started.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/monitoring/topology_close_log_subscriber.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/monitoring/topology_changed_log_subscriber.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/monitoring/topology_opening_log_subscriber.rb,
build/Ruby-driver-v 2 . 19 /lib/mongo/monitoring/event/cmap/connection_checked_in.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/monitoring/event/server_description_changed.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/monitoring/event/server_heartbeat_succeeded.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/monitoring/event/cmap/connection_checked_out.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/monitoring/event/cmap/connection_check_out_failed.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/monitoring/event/cmap/connection_check_out_started.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/monitoring/server_description_changed_log_subscriber.rb

Overview

该类定义性能监控 API 的行为。

由于:

  • 2.1.0

在命名空间下定义

模块: 事件全局可发布、可订阅类: CmapLogSubscriberCommandLogSubscriberSDAMLogSubscriberServerClosedLogSubscriberServerDescriptionChangedLogSubscriberServerOpeningLogSubscriberTopologyChangedLogSubscriberTopologyClosedLogSubscriberTopologyOpeningLogSubscriberUnifiedSdamLogSubscriber

常量摘要折叠

命令 =

命令主题。

由于:

  • 2.1.0

' Command '.冻结
CONNECTION_POOL =

连接池主题。

由于:

  • 2.9.0

' ConnectionPool '.冻结
SERVER_CLOSED =

服务器已关闭主题。

由于:

  • 2.4.0

' ServerClosed '.冻结
SERVER_DESCRIPTION_CHANGED =

MongoDB Server描述已更改主题。

由于:

  • 2.4.0

' ServerDescriptionChanged '.冻结
SERVER_OPENING =

MongoDB Server开头主题。

由于:

  • 2.4.0

' ServerOpening '.冻结
TOPOLOGY_CHANGED =

拓扑结构发生了主题。

由于:

  • 2.4.0

' TopologyChanged '.冻结
TOPOLOGY_CLOSED =

拓扑结构已关闭的主题。

由于:

  • 2.4.0

' TopologyClosed '.冻结
TOPOLOGY_OPENING =

拓扑结构开头主题。

由于:

  • 2.4.0

' TopologyOpening '.冻结
SERVER_HEARTBEAT =

服务器心跳启动了主题。

由于:

  • 2.7.0

' ServerHeartbeat '.冻结

实例属性摘要折叠

类方法摘要折叠

实例方法摘要折叠

可订阅中包含的方法

#subscribe#subscribers#subscribers? , #unsubscribe

ID中包含的方法

包含

构造函数详情

#initialize (options = {}) ⇒监控

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

初始化监控。

例子:

创建新的监控。

Monitoring.new(:monitoring => true)

参数:

  • 选项 哈希 (默认为: {}

    选项。 客户端构造函数将其选项转发到监控构造函数,尽管监控只能识别客户端所识别选项的子集。

选项哈希 ( options ):

  • :monitoring ( true , false )

    如果为 false,则在没有全局监控事件订阅者的情况下初始化监控实例,并且不会发布 SDAM 事件。 命令监控事件仍将发布,驱动程序仍将执行 SDAM 并监控其集群,以便执行服务器选择。 SDAM 事件的内置驱动程序日志记录将被禁用,因为它是通过 SDAM 事件订阅实现的。 对于所有事件类型,Client#subscribe 都会成功,但不会调用 SDAM 事件的订阅者。 false 以外的值会导致默认行为,即执行正常的 SDAM 事件发布。

由于:

  • 2.1.0



220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
# File 'build/Ruby-driver-v 2.19 /lib/mongo/monitoring.rb', line 220

def 初始化(选项 = {})
  @options = 选项
  if 选项[:monitoring] != false
    全局.订阅者. do |topic, 订阅者|
      订阅者. do |订阅者|
        订阅(topic, 订阅者)
      end
    end
    订阅(命令, CommandLogSubscriber.new(选项))
    #默认不记录 CMAP 事件,因为这会创建
    #驾驶员执行的每个操作的日志条目。
    # 订阅(CONNECTION_POOL, CmapLogSubscriber.new(options))
    订阅(SERVER_OPENING, ServerOpeningLogSubscriber.new(选项))
    订阅(SERVER_CLOSED, ServerClosedLogSubscriber.new(选项))
    订阅(SERVER_DESCRIPTION_CHANGED, ServerDescriptionChangedLogSubscriber.new(选项))
    订阅(TOPOLOGY_OPENING, TopologyOpeningLogSubscriber.new(选项))
    订阅(TOPOLOGY_CHANGED, TopologyChangedLogSubscriber.new(选项))
    订阅(TOPOLOGY_CLOSED, TopologyClosedLogSubscriber.new(选项))
  end
end

实例属性详细信息

# options对象(只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.1.0



242
243
244
# File 'build/Ruby-driver-v 2.19 /lib/mongo/monitoring.rb', line 242

def 选项
  @options
end

类方法详细信息

next_operation_id整数

用于生成唯一的操作 ID,将事件链接在一起。

例子:

获取下一个操作 ID。

Monitoring.next_operation_id

返回:

  • ( Integer )

    下一个操作 ID。

由于:

  • 2.1.0



79
80
81
# File 'build/Ruby-driver-v 2.19 /lib/mongo/monitoring.rb', line 79

def self.next_operation_id
  self.next_id
end

实例方法详细信息

# failed (topic, event) ⇒ Object

发布失败的事件。

此方法用于包含已启动/成功/失败事件的事件类型,例如命令和心跳事件。

例子:

发布失败的事件。

monitoring.failed(COMMAND, event)

参数:

  • topic ( string )

    事件主题。

  • 事件 (事件)

    要发布的事件。

由于:

  • 2.1.0



306
307
308
# File 'build/Ruby-driver-v 2.19 /lib/mongo/monitoring.rb', line 306

def 已失败(topic, 事件)
  subscribers_for(topic).{ |订阅者| 订阅者.已失败(事件) }
end

#监控?布尔

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回:

  • 布尔值

由于:

  • 2.1.0



245
246
247
# File 'build/Ruby-driver-v 2.19 /lib/mongo/monitoring.rb', line 245

def 监控?
  选项[:monitoring] != false
end

# publish_heartbeat (服务器, awaited: false) ⇒对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.1.0



311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
# File 'build/Ruby-driver-v 2.19 /lib/mongo/monitoring.rb', line 311

def publish_heartbeat(server, 等待: false)
  if 监控?
    started_event = 事件::ServerHeartbeatStarted.new(
      server.地址, 等待: 等待)
    已启动(SERVER_HEARTBEAT, started_event)
  end

  # 我们在心跳成功/失败事件中发布的持续时间为
  # 整个心跳花费的时间。 这可能包括时间
  # 连接套接字(包括 TLS 握手),而不仅仅是时间
  # 花费在 hello 调用本身上。
  # 位于 https://github.com/mongodb/specifications/blob/master/source/server-discovery-and-monitoring/server-discovery-and-monitoring-monitoring.rst 的规范
  # 要求此处公开的持续时间从“发送
  # message" (hello)。 在以下情况下,此要求没有意义:
  # 例如,我们根本无法连接到服务器
  # 因此 hello 从未被发送。
  start_time = Utils.monotic_time

  开始
    结果 = 产量
  救援 => 排除
    if 监控?
      事件 = 事件::ServerHeartbeatFailed.new(
        server.地址,
        Utils.monotic_time - start_time,
        排除,
        等待: 等待,
        starts_event: started_event,
      )
      已失败(SERVER_HEARTBEAT, 事件)
    end
    提高
  else
    if 监控?
      事件 = 事件::ServerHeartbeatSucceeded.new(
        server.地址,
        Utils.monotic_time - start_time,
        等待: 等待,
        starts_event: started_event,
      )
      成功(SERVER_HEARTBEAT, 事件)
    end
    结果
  end
end

#已发布(主题, 事件) ⇒对象

发布事件。

此方法用于仅包含单个事件的事件类型。

参数:

  • topic ( string )

    事件主题。

  • 事件 (事件)

    要发布的事件。

由于:

  • 2.9.0



258
259
260
# File 'build/Ruby-driver-v 2.19 /lib/mongo/monitoring.rb', line 258

def 已发布(topic, 事件)
  subscribers_for(topic).{ |订阅者| 订阅者.已发布(事件) }
end

#已启动(主题, 事件) ⇒对象

发布已启动事件。

此方法用于包含已启动/成功/失败事件的事件类型,例如命令和心跳事件。

例子:

发布已启动事件。

monitoring.started(COMMAND, event)

参数:

  • topic ( string )

    事件主题。

  • 事件 (事件)

    要发布的事件。

由于:

  • 2.1.0



274
275
276
# File 'build/Ruby-driver-v 2.19 /lib/mongo/monitoring.rb', line 274

def 已启动(topic, 事件)
  subscribers_for(topic).{ |订阅者| 订阅者.已启动(事件) }
end

# success (topic, event) ⇒ Object

发布成功事件。

此方法用于包含已启动/成功/失败事件的事件类型,例如命令和心跳事件。

例子:

发布成功事件。

monitoring.succeeded(COMMAND, event)

参数:

  • topic ( string )

    事件主题。

  • 事件 (事件)

    要发布的事件。

由于:

  • 2.1.0



290
291
292
# File 'build/Ruby-driver-v 2.19 /lib/mongo/monitoring.rb', line 290

def 成功(topic, 事件)
  subscribers_for(topic).{ |订阅者| 订阅者.成功(事件) }
end