bipbip 0.5.2 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f8eacf61d4510fa9f694eaea20ac6f54569122f4
4
- data.tar.gz: 836957c95356edc85dbb274f0edbde201fc02b03
3
+ metadata.gz: 9f3f706944fb1a4083b89c9be46134dfd8865b82
4
+ data.tar.gz: 79932d0864a70ec3baeb2b15e82902c74dd8c95b
5
5
  SHA512:
6
- metadata.gz: d9308614edae2bfce676ebd9f7d1dadd819d353e65d94e52d78555d26d3d5becbeb12d4b058f7b31aa63023f196d35d95835b84eb5548e8376a7b1ff523cd144
7
- data.tar.gz: ecf32d46dd6f182a6748d841eeb9b4b8b4bd87a9d26f4ca4132c36e346b2ddb0924cc1d2764afba402430939d3457f20b280e8e996f11310e18791317b954c80
6
+ metadata.gz: 79c99748103287522a626b7f549f00ad8650c9b742a47456ebb4f50545f06a757abcc8a70668acf349374acaf8ae547522c468e64794837eaf68b0a6297c4ece
7
+ data.tar.gz: f15aacbead140f12ebc0334401e79c023702c75043a9e08eee2c08e845fe9f140fd6cf844e624a7e7e7d726b2fe968ee333b7ff7f5ec2606029c1ddee7ed0f75
@@ -19,20 +19,12 @@ module Bipbip
19
19
  {:name => 'mem_mapped', :type => 'gauge', :unit => 'MB'},
20
20
  {:name => 'mem_pagefaults', :type => 'gauge', :unit => 'faults'},
21
21
  {:name => 'globalLock_currentQueue', :type => 'gauge'},
22
+ {:name => 'replication_lag', :type => 'gauge', :unit => 'Seconds'},
22
23
  ]
23
24
  end
24
25
 
25
26
  def monitor
26
- options = {
27
- 'hostname' => 'localhost',
28
- 'port' => 27017,
29
- 'username' => nil,
30
- 'password' => nil
31
- }.merge(config)
32
- connection = Mongo::MongoClient.new(options['hostname'], options['port'], {:op_timeout => 2, :slave_ok => true})
33
- mongo = connection.db('admin')
34
- mongo.authenticate(options['username'], options['password']) unless options['password'].nil?
35
- mongoStats = mongo.command('serverStatus' => 1)
27
+ mongoStats = server_status
36
28
 
37
29
  data = {}
38
30
 
@@ -63,7 +55,44 @@ module Bipbip
63
55
  if mongoStats['globalLock'] && mongoStats['globalLock']['currentQueue']
64
56
  data['globalLock_currentQueue'] = mongoStats['globalLock']['currentQueue']['total'].to_i
65
57
  end
58
+ if mongoStats['repl'] && mongoStats['repl']['secondary'] == true
59
+ data['replication_lag'] = replication_lag
60
+ end
66
61
  data
67
62
  end
63
+
64
+ private
65
+
66
+ def admin_database
67
+ options = {
68
+ 'hostname' => 'localhost',
69
+ 'port' => 27017,
70
+ 'username' => nil,
71
+ 'password' => nil
72
+ }.merge(config)
73
+ connection = Mongo::MongoClient.new(options['hostname'], options['port'], {:op_timeout => 2, :slave_ok => true})
74
+ mongo = connection.db('admin')
75
+ mongo.authenticate(options['username'], options['password']) unless options['password'].nil?
76
+ mongo
77
+ end
78
+
79
+ def server_status
80
+ admin_database.command('serverStatus' => 1)
81
+ end
82
+
83
+ def replica_status
84
+ admin_database.command('replSetGetStatus' => 1)
85
+ end
86
+
87
+ def replication_lag
88
+ member_list = replica_status['members']
89
+ primary = member_list.select { |member| member['stateStr'] == 'PRIMARY' }.first
90
+ secondary = member_list.select { |member| member['stateStr'] == 'SECONDARY' and member['self'] == true }.first
91
+
92
+ raise "No primary member in replica `#{replica_status['set']}`" if primary.nil?
93
+ raise "Cannot find itself as secondary member in replica `#{replica_status['set']}`" if secondary.nil?
94
+
95
+ (primary['optime'].seconds - secondary['optime'].seconds)
96
+ end
68
97
  end
69
98
  end
@@ -1,3 +1,3 @@
1
1
  module Bipbip
2
- VERSION = '0.5.2'
2
+ VERSION = '0.5.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bipbip
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cargo Media
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-11-26 00:00:00.000000000 Z
13
+ date: 2014-12-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: copperegg