Class: Cloudscale::Plugins::MongoServerStatus
- Defined in:
- lib/cloudscale/plugins/mongo/mongo_server_status.rb
Instance Attribute Summary collapse
-
#client ⇒ Object
readonly
Returns the value of attribute client.
Attributes inherited from Plugin
Instance Method Summary collapse
- #collect(agentInstanceId) ⇒ Object
-
#initialize ⇒ MongoServerStatus
constructor
A new instance of MongoServerStatus.
- #is_enabled ⇒ Object
- #report_general_information(registry, metrics, stats) ⇒ Object
- #report_global_lock_times(registry, metrics, stats) ⇒ Object
- #report_index_counters(registry, metrics, stats) ⇒ Object
- #report_memory(registry, metrics, stats) ⇒ Object
- #report_network(registry, metrics, stats) ⇒ Object
- #report_op_counters(registry, metrics, stats) ⇒ Object
Methods inherited from Plugin
Constructor Details
#initialize ⇒ MongoServerStatus
Returns a new instance of MongoServerStatus.
18 19 20 21 22 23 |
# File 'lib/cloudscale/plugins/mongo/mongo_server_status.rb', line 18 def initialize super if is_enabled @client = Preops::MongodbPreop.instance.client end end |
Instance Attribute Details
#client ⇒ Object (readonly)
Returns the value of attribute client.
12 13 14 |
# File 'lib/cloudscale/plugins/mongo/mongo_server_status.rb', line 12 def client @client end |
Instance Method Details
#collect(agentInstanceId) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/cloudscale/plugins/mongo/mongo_server_status.rb', line 25 def collect(agentInstanceId) registry = Monitor::Registry.instance metrics = Metrics::Agent.new log.info("Calling Collect on MongoServerStatus") stats = @client.command(:serverStatus => 1).first report_index_counters(registry, metrics, stats) report_global_lock_times(registry, metrics, stats) report_op_counters(registry, metrics, stats) report_general_information(registry, metrics, stats) report_memory(registry, metrics, stats) report_network(registry, metrics, stats) end |
#is_enabled ⇒ Object
14 15 16 |
# File 'lib/cloudscale/plugins/mongo/mongo_server_status.rb', line 14 def is_enabled Preops::MongodbPreop.instance.is_enabled end |
#report_general_information(registry, metrics, stats) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/cloudscale/plugins/mongo/mongo_server_status.rb', line 76 def report_general_information(registry, metrics, stats) registry.metrics["mongo.general.uptime"] = metrics.gauge :general_uptime do { :value => stats['uptime'] } end registry.metrics["mongo.general.connections.currently"] = metrics.gauge :general_connections_current do { :value => stats['connections']['current'] } end registry.metrics["mongo.general.connections.available"] = metrics.gauge :general_connections_available do { :value => stats['connections']['available'] } end registry.metrics["mongo.general.connections.total"] = metrics.gauge :general_connections_total do { :value => stats['connections']['totalCreated'] } end end |
#report_global_lock_times(registry, metrics, stats) ⇒ Object
144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'lib/cloudscale/plugins/mongo/mongo_server_status.rb', line 144 def report_global_lock_times(registry, metrics, stats) if stats['globalLock'] registry.metrics["mongo.global.lock.time"] = metrics.gauge :global_lock_time do { :value => stats['globalLock']['lockTime'] } end registry.metrics["mongo.global.lock.total.time"] = metrics.gauge :global_lock_total_time do { :value => stats['globalLock']['totalTime'] } end end end |
#report_index_counters(registry, metrics, stats) ⇒ Object
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/cloudscale/plugins/mongo/mongo_server_status.rb', line 118 def report_index_counters(registry, metrics, stats) {"accesses"=>6896, "hits"=>6896, "misses"=>0, "resets"=>0, "missRatio"=>0.0} if (stats["indexCounters"]) registry.metrics["mongo.index.counters.accesses"] = metrics.gauge :counters_accesses do { :value => stats['indexCounters']['accesses'] } end registry.metrics["mongo.index.counters.misses"] = metrics.gauge :counters_misses do { :value => stats['indexCounters']['misses'] } end registry.metrics["mongo.index.counters.hits"] = metrics.gauge :counters_hits do { :value => stats['indexCounters']['hits'] } end registry.metrics["mongo.index.counters.resets"] = metrics.gauge :counters_resets do { :value => stats['indexCounters']['resets'] } end registry.metrics["mongo.index.counters.missRatio"] = metrics.gauge :counters_missRatio do { :value => stats['indexCounters']['missRatio'] } end end end |
#report_memory(registry, metrics, stats) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/cloudscale/plugins/mongo/mongo_server_status.rb', line 38 def report_memory(registry, metrics, stats) registry.metrics["mongo.mem.bits"] = metrics.gauge :mem_bits do { :value => stats['mem']['bits'] } end registry.metrics["mongo.mem.resident"] = metrics.gauge :mem_resident do { :value => stats['mem']['resident'] } end registry.metrics["mongo.mem.virtual"] = metrics.gauge :mem_virtual do { :value => stats['mem']['virtual'] } end registry.metrics["mongo.mem.mapped"] = metrics.gauge :mem_mapped do { :value => stats['mem']['mapped'] } end registry.metrics["mongo.mem.mappedWithJournal"] = metrics.gauge :mem_mappedWithJournal do { :value => stats['mem']['mappedWithJournal'] } end end |
#report_network(registry, metrics, stats) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/cloudscale/plugins/mongo/mongo_server_status.rb', line 61 def report_network(registry, metrics, stats) registry.metrics["mongo.network.bytes.in"] = metrics.gauge :network_bytesIn do { :value => stats['network']['bytesIn'] } end registry.metrics["mongo.network.bytes.out"] = metrics.gauge :network_bytesOut do { :value => stats['network']['bytesOut'] } end registry.metrics["mongo.network.num.requests"] = metrics.gauge :network_numRequests do { :value => stats['network']['numRequests'] } end end |
#report_op_counters(registry, metrics, stats) ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/cloudscale/plugins/mongo/mongo_server_status.rb', line 95 def report_op_counters(registry, metrics, stats) registry.metrics["mongo.opcounts.insert"] = metrics.gauge :opcounters_inserts do { :value => stats['opcounters']['insert'] } end registry.metrics["mongo.opcounts.query"] = metrics.gauge :opcounters_query do { :value => stats['opcounters']['query'] } end registry.metrics["mongo.opcounts.update"] = metrics.gauge :opcounters_update do { :value => stats['opcounters']['update'] } end registry.metrics["mongo.opcounts.delete"] = metrics.gauge :opcounters_delete do { :value => stats['opcounters']['delete'] } end registry.metrics["mongo.opcounts.getmore"] = metrics.gauge :opcounters_getmore do { :value => stats['opcounters']['getmore'] } end end |