nutcracker-graphite 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2ac51b5f953ef068101cc9c5b2f4aac6b0370eb2
4
- data.tar.gz: 7f2d673e8982941ae96c2d65bb92f89e6ea116db
3
+ metadata.gz: 52cc5c2040d5d1bcb9aefba5adf0db53b8b11d40
4
+ data.tar.gz: 5924e87e53d107161fb91b75e5671f5698b4e2e8
5
5
  SHA512:
6
- metadata.gz: 39344998867494f870f0c473533f13dbee63013ac3f8a0793ea9b4b8567390166603d4d411ab9a6d6dd2889ddded9b2c80ec13a997d65041e1d8d9883b9a93d1
7
- data.tar.gz: aec3d483bbeaaeb8f8ac4514e7283a6ff33a1493d63c668e97fe93b38047ba4d200ccfd8def4b4f26403d256443f52465020d55ce853ddc9851e5a198c375718
6
+ metadata.gz: 1878f7312745bada8e6b08dedd214e36289c2280e215c2001004ae087e83d309c1eae883197953ef72dfa7546140e1ade4f7e2a2e3c5ef69e2b864cdc9128659
7
+ data.tar.gz: 89d8292403ca2c568f821b0cb046544ceceaa33bab621816395d178db9b69e2da2dd728922707691cbc03668367805138b77201c4f87a748b3892a45dc620f77
data/README.md CHANGED
@@ -34,7 +34,7 @@ require 'nutcracker'
34
34
  require 'nutcracker/graphite'
35
35
 
36
36
  # Start nutcracker
37
- nutcracker = Nutcracker.start(cluster: 'cluster.conf')
37
+ nutcracker = Nutcracker.start(config_file: 'cluster.conf')
38
38
 
39
39
  # Start Graphite stats agent
40
40
  nutcracker.use(:graphite, graphite: 'graphite.example.com')
@@ -1,6 +1,6 @@
1
+ require 'nutcracker'
1
2
  require 'nutcracker/graphite/version'
2
3
  require 'graphite-api'
3
- require 'redis'
4
4
 
5
5
  module Nutcracker
6
6
  module Graphite
@@ -16,12 +16,16 @@ module Nutcracker
16
16
 
17
17
  def initialize nutcracker, options
18
18
  @nutcracker = nutcracker
19
- @graphite = GraphiteAPI.new options.merge(:interval => INTERVAL)
19
+ @graphite = GraphiteAPI.new options.merge interval: INTERVAL
20
20
  end
21
21
 
22
22
  def start
23
- @task ||= graphite.every INTERVAL do |client|
24
- client.metrics metrics parse nutcracker.stats
23
+ @task ||= graphite.every(INTERVAL) do |client|
24
+ begin
25
+ client.metrics metrics nutcracker.overview
26
+ rescue Exception => e
27
+ STDERR.puts [e.message,e.backtrace.join("\n")]
28
+ end
25
29
  end
26
30
  self
27
31
  end
@@ -32,67 +36,29 @@ module Nutcracker
32
36
 
33
37
  private
34
38
 
35
- def metrics parsed_stats
36
- data = parsed_stats.clone
37
- escape = ->(s) { s.gsub(/\.|\:/,'_') }
39
+ def metrics stats
40
+ data = stats.clone
41
+ escape = ->(s) { s.gsub(/redis:\/\//,'').gsub(/\.|\:/,'_') }
38
42
  hash = {}
39
- data[:clusters].each do |cluster, cluster_data|
40
- next unless ( nutcracker.config[cluster]["redis"] rescue false ) # skip memcached
41
- cluster_key = ['nutcracker',cluster,data['source']].map(&escape).join('.')
43
+ data[:clusters].each do |cluster_data|
44
+ cluster_key = ['nutcracker',cluster_data[:name],data['source']].map(&escape).join('.')
42
45
  cluster_data.each do |key, value|
43
46
  hash[[cluster_key,key].join('.')] = value if value.is_a? Fixnum or value.is_a? Float
44
47
  end
45
48
 
46
- cluster_data[:nodes].each do |node, node_data|
47
- node_key = "#{cluster_key}.#{escape.(node)}"
49
+ cluster_data[:nodes].each do |node_data|
50
+ info = node_data.delete(:info)
51
+ node_key = "#{cluster_key}.#{escape.(node_data[:server_url])}"
48
52
  node_data.each do |key, value|
49
53
  hash["#{node_key}.cluster_#{key}"] = value if value.is_a? Fixnum or value.is_a? Float
50
54
  end
51
- redis_info(node).each {|k,v| hash["#{node_key}.#{k}"] = v }
55
+ info.each {|k,v| hash["#{node_key}.#{k}"] = v }
52
56
  end
53
57
 
54
58
  end
55
59
  hash
56
60
  end
57
61
 
58
- def redis_info url
59
- url = "redis://#{url}" unless url =~ /redis\:\/\//
60
- redis = Redis.connect url: url
61
- server_info = redis.info
62
- db_size = redis.dbsize
63
- max_memory = redis.config(:get, 'maxmemory')['maxmemory'].to_i
64
- redis.quit
65
- {
66
- 'connections' => server_info['connected_clients'].to_i,
67
- 'used_memory' => server_info['used_memory'].to_f,
68
- 'used_memory_rss' => server_info['used_memory_rss'].to_f,
69
- 'fragmentation' => server_info['mem_fragmentation_ratio'].to_f,
70
- 'expired_keys' => server_info['expired_keys'].to_i,
71
- 'evicted_keys' => server_info['evicted_keys'].to_i,
72
- 'hits' => server_info['keyspace_hits'].to_i,
73
- 'misses' => server_info['keyspace_misses'].to_i,
74
- 'keys' => db_size,
75
- 'max_memory' => max_memory,
76
- 'hit_ratio' => 0
77
- }.tap {|d| d['hit_ratio'] = d['hits'].to_f / (d['hits']+d['misses']).to_f if d['hits'] > 0 }
78
- end
79
-
80
-
81
- def parse stats
82
- { :clusters => {} }.tap do |data|
83
- (stats.dup).each do |key, value|
84
- (data[key] = value and next) if !value.is_a? Hash
85
- data[:clusters][key] = value
86
- data[:clusters][key][:nodes] = {}
87
- data[:clusters][key].each do |key2,value2|
88
- if value2.kind_of? Hash and key2.is_a? String
89
- data[:clusters][key][:nodes][key2] = data[:clusters][key].delete(key2)
90
- end
91
- end
92
- end
93
- end
94
- end
95
-
96
62
  end
97
63
  end
98
64
  end
@@ -1,5 +1,5 @@
1
1
  module Nutcracker
2
2
  module Graphite
3
- VERSION="0.0.1"
3
+ VERSION="0.0.2"
4
4
  end
5
5
  end
@@ -0,0 +1 @@
1
+ {:clusters=>[{:nodes=>[{:server_url=>"redis://redis181.example.com:6379", :info=>{"connections"=>94, "used_memory"=>19825592552.0, "used_memory_rss"=>20232921088.0, "fragmentation"=>1.02, "expired_keys"=>4645397, "evicted_keys"=>0, "hits"=>209622650, "misses"=>10623982, "keys"=>25045709, "max_memory"=>21474836480, "hit_ratio"=>0.9517632487565122}, :running=>true, "server_eof"=>0, "server_err"=>0, "server_timedout"=>0, "server_connections"=>0, "requests"=>0, "request_bytes"=>0, "responses"=>0, "response_bytes"=>0, "in_queue"=>0, "in_queue_bytes"=>0, "out_queue"=>0, "out_queue_bytes"=>0}], :name=>"shuki_cluster", "client_eof"=>0, "client_err"=>0, "client_connections"=>0, "server_ejects"=>0, "forward_error"=>0, "fragments"=>0}, {:nodes=>[{:server_url=>"redis://redis181.example.com:6379", :info=>{"connections"=>94, "used_memory"=>19825619944.0, "used_memory_rss"=>20232925184.0, "fragmentation"=>1.02, "expired_keys"=>4645399, "evicted_keys"=>0, "hits"=>209622856, "misses"=>10623985, "keys"=>25045720, "max_memory"=>21474836480, "hit_ratio"=>0.951763280908987}, :running=>true, "server_eof"=>0, "server_err"=>0, "server_timedout"=>0, "server_connections"=>0, "requests"=>0, "request_bytes"=>0, "responses"=>0, "response_bytes"=>0, "in_queue"=>0, "in_queue_bytes"=>0, "out_queue"=>0, "out_queue_bytes"=>0}], :name=>"page_data_cluster", "client_eof"=>0, "client_err"=>0, "client_connections"=>0, "server_ejects"=>0, "forward_error"=>0, "fragments"=>0}], :config=>{"page_data_cluster"=>{"listen"=>"0.0.0.0:22121", "hash"=>"fnv1a_64", "distribution"=>"modula", "auto_eject_hosts"=>true, "redis"=>true, "server_retry_timeout"=>2000, "server_failure_limit"=>1, "timeout"=>500, "servers"=>["redis181.example.com:6379:1"]}, "shuki_cluster"=>{"listen"=>"0.0.0.0:22122", "hash"=>"fnv1a_64", "distribution"=>"modula", "auto_eject_hosts"=>true, "redis"=>true, "server_retry_timeout"=>2000, "server_failure_limit"=>1, "timeout"=>500, "servers"=>["redis181.example.com:6379:1"]}}, "service"=>"nutcracker", "source"=>"Eran-Levis-MacBook-Pro.local", "version"=>"0.2.4", "uptime"=>125, "timestamp"=>1372852037}
@@ -0,0 +1 @@
1
+ {"nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.client_eof"=>0, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.client_err"=>0, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.client_connections"=>0, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.server_ejects"=>0, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.forward_error"=>0, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.fragments"=>0, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_server_eof"=>0, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_server_err"=>0, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_server_timedout"=>0, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_server_connections"=>0, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_requests"=>0, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_request_bytes"=>0, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_responses"=>0, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_response_bytes"=>0, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_in_queue"=>0, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_in_queue_bytes"=>0, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_out_queue"=>0, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_out_queue_bytes"=>0, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.connections"=>94, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.used_memory"=>19825592552.0, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.used_memory_rss"=>20232921088.0, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.fragmentation"=>1.02, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.expired_keys"=>4645397, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.evicted_keys"=>0, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.hits"=>209622650, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.misses"=>10623982, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.keys"=>25045709, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.max_memory"=>21474836480, "nutcracker.shuki_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.hit_ratio"=>0.9517632487565122, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.client_eof"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.client_err"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.client_connections"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.server_ejects"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.forward_error"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.fragments"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_server_eof"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_server_err"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_server_timedout"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_server_connections"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_requests"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_request_bytes"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_responses"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_response_bytes"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_in_queue"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_in_queue_bytes"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_out_queue"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.cluster_out_queue_bytes"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.connections"=>94, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.used_memory"=>19825619944.0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.used_memory_rss"=>20232925184.0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.fragmentation"=>1.02, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.expired_keys"=>4645399, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.evicted_keys"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.hits"=>209622856, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.misses"=>10623985, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.keys"=>25045720, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.max_memory"=>21474836480, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.redis181_example_com_6379.hit_ratio"=>0.951763280908987}
@@ -11,41 +11,14 @@ module Nutcracker
11
11
  end
12
12
 
13
13
  attr_reader :agent, :options, :nutcracker
14
-
15
- def test_stats_parser
16
- assert_equal load_fixture('expected_stats.ruby_hash'),
17
- agent.send(:parse,load_fixture('stats.json'))
18
- end
19
-
14
+
20
15
  def test_metrics_generator
21
- nutcracker.expects(:config).returns({'page_data_cluster' => {'redis' => true}})
22
- agent.expects(:redis_info).with('node1:6379').returns({})
23
-
24
- assert_equal load_fixture('expected_metrics_wo_redis_info.ruby_hash') ,
25
- agent.send(:metrics,load_fixture('expected_stats.ruby_hash'))
26
-
27
- nutcracker.expects(:config).returns({'page_data_cluster' => {'redis' => true}})
28
- agent.expects(:redis_info).with('node1:6379').returns({'blabla' => 20})
29
-
30
- expected = load_fixture('expected_metrics_wo_redis_info.ruby_hash').merge(
31
- "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.node1_6379.blabla"=>20
16
+ assert_equal(
17
+ load_fixture('output.ruby_hash'),
18
+ agent.send(:metrics,load_fixture('input.ruby_hash'))
32
19
  )
33
-
34
- assert_equal expected, agent.send(:metrics,load_fixture('expected_stats.ruby_hash'))
35
20
  end
36
-
37
- def test_redis_info
38
- data = load_fixture 'redis_info.json'
39
- redis = mock
40
- Redis.expects(:connect).with(url: 'redis://node1:6379').returns(redis)
41
- redis.expects(:info).returns(data['info'])
42
- redis.expects(:dbsize).returns(data['dbsize'])
43
- redis.expects('config').with(:get,'maxmemory').returns(data['memory'])
44
- redis.expects(:quit)
45
- assert_equal load_fixture('expected_redis_info.json'),
46
- agent.send(:redis_info,'node1:6379')
47
- end
48
-
21
+
49
22
  end
50
23
  end
51
24
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nutcracker-graphite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eran Barak Levi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-26 00:00:00.000000000 Z
11
+ date: 2013-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: graphite-api
@@ -28,30 +28,16 @@ dependencies:
28
28
  name: nutcracker
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '='
32
- - !ruby/object:Gem::Version
33
- version: 0.2.4.beta3
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '='
39
- - !ruby/object:Gem::Version
40
- version: 0.2.4.beta3
41
- - !ruby/object:Gem::Dependency
42
- name: redis
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '>='
31
+ - - ~>
46
32
  - !ruby/object:Gem::Version
47
- version: '0'
33
+ version: 0.2.4.8
48
34
  type: :runtime
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
- - - '>='
38
+ - - ~>
53
39
  - !ruby/object:Gem::Version
54
- version: '0'
40
+ version: 0.2.4.8
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: minitest
57
43
  requirement: !ruby/object:Gem::Requirement
@@ -90,11 +76,8 @@ files:
90
76
  - Rakefile
91
77
  - lib/nutcracker/graphite/version.rb
92
78
  - lib/nutcracker/graphite.rb
93
- - tests/fixtures/expected_metrics_wo_redis_info.ruby_hash
94
- - tests/fixtures/expected_redis_info.json
95
- - tests/fixtures/expected_stats.ruby_hash
96
- - tests/fixtures/redis_info.json
97
- - tests/fixtures/stats.json
79
+ - tests/fixtures/input.ruby_hash
80
+ - tests/fixtures/output.ruby_hash
98
81
  - tests/minitest_helper.rb
99
82
  - tests/unit/agent_test.rb
100
83
  homepage: http://www.kontera.com
@@ -1 +0,0 @@
1
- {"nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.client_eof"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.client_err"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.client_connections"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.server_ejects"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.forward_error"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.fragments"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.node1_6379.cluster_server_eof"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.node1_6379.cluster_server_err"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.node1_6379.cluster_server_timedout"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.node1_6379.cluster_server_connections"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.node1_6379.cluster_requests"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.node1_6379.cluster_request_bytes"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.node1_6379.cluster_responses"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.node1_6379.cluster_response_bytes"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.node1_6379.cluster_in_queue"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.node1_6379.cluster_in_queue_bytes"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.node1_6379.cluster_out_queue"=>0, "nutcracker.page_data_cluster.Eran-Levis-MacBook-Pro_local.node1_6379.cluster_out_queue_bytes"=>0}
@@ -1 +0,0 @@
1
- {"connections":96,"used_memory":20042110520.0,"used_memory_rss":20905414656.0,"fragmentation":1.04,"expired_keys":36705179,"evicted_keys":12284,"hits":1370531418,"misses":58886159,"keys":24296159,"max_memory":21474836480,"hit_ratio":0.9588040891986317}
@@ -1 +0,0 @@
1
- {:clusters=>{"page_data_cluster"=>{"client_eof"=>0, "client_err"=>0, "client_connections"=>0, "server_ejects"=>0, "forward_error"=>0, "fragments"=>0, :nodes=>{"node1:6379"=>{"server_eof"=>0, "server_err"=>0, "server_timedout"=>0, "server_connections"=>0, "requests"=>0, "request_bytes"=>0, "responses"=>0, "response_bytes"=>0, "in_queue"=>0, "in_queue_bytes"=>0, "out_queue"=>0, "out_queue_bytes"=>0}}}}, "service"=>"nutcracker", "source"=>"Eran-Levis-MacBook-Pro.local", "version"=>"0.2.4", "uptime"=>53, "timestamp"=>1369558826}
@@ -1 +0,0 @@
1
- {"info":{"redis_version":"2.4.10","redis_git_sha1":"00000000","redis_git_dirty":"0","arch_bits":"64","multiplexing_api":"epoll","gcc_version":"4.1.2","process_id":"15264","uptime_in_seconds":"5247213","uptime_in_days":"60","lru_clock":"641250","used_cpu_sys":"40451.50","used_cpu_user":"172259.69","used_cpu_sys_children":"0.00","used_cpu_user_children":"0.00","connected_clients":"96","connected_slaves":"0","client_longest_output_list":"0","client_biggest_input_buf":"0","blocked_clients":"0","used_memory":"20042110520","used_memory_human":"18.67G","used_memory_rss":"20905414656","used_memory_peak":"21474896448","used_memory_peak_human":"20.00G","mem_fragmentation_ratio":"1.04","mem_allocator":"jemalloc-2.2.5","loading":"0","aof_enabled":"0","changes_since_last_save":"8316280672","bgsave_in_progress":"0","last_save_time":"1364314088","bgrewriteaof_in_progress":"0","total_connections_received":"64618","total_commands_processed":"18247026966","expired_keys":"36705179","evicted_keys":"12284","keyspace_hits":"1370531418","keyspace_misses":"58886159","pubsub_channels":"0","pubsub_patterns":"0","latest_fork_usec":"0","vm_enabled":"0","role":"master","db0":"keys=24296116,expires=739455","db2":"keys=14178,expires=0"},"dbsize":24296159,"memory":{"maxmemory":"21474836480"}}
@@ -1 +0,0 @@
1
- {"service":"nutcracker","source":"Eran-Levis-MacBook-Pro.local","version":"0.2.4","uptime":53,"timestamp":1369558826,"page_data_cluster":{"client_eof":0,"client_err":0,"client_connections":0,"server_ejects":0,"forward_error":0,"fragments":0,"node1:6379":{"server_eof":0,"server_err":0,"server_timedout":0,"server_connections":0,"requests":0,"request_bytes":0,"responses":0,"response_bytes":0,"in_queue":0,"in_queue_bytes":0,"out_queue":0,"out_queue_bytes":0}}}