quark 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/bin/quark CHANGED
@@ -7,7 +7,9 @@ module Quark
7
7
  class CLI
8
8
  class<<self
9
9
  def run()
10
- @options = {}
10
+ Quark::Config.set("quark.address", "127.0.0.1")
11
+ Quark::Config.set("quark.port", 12161)
12
+ Quark::Config.set("quark.blocksize", 3600000)
11
13
 
12
14
  (OptionParser.new do |opts|
13
15
  opts.banner = "Usage: quark [options]"
@@ -42,6 +44,11 @@ module Quark
42
44
  Quark::Config.set("quark.port", port)
43
45
  end
44
46
 
47
+ # -----------------------------------------------------------------------------
48
+ opts.on('-B', '--metric-block-size MSEC', 'The size of metric buckets (in milliseconds) that metrics should be split into') do |blocksize|
49
+ Quark::Config.set("quark.blocksize", blocksize)
50
+ end
51
+
45
52
  end).parse!
46
53
 
47
54
  Quark::Server.run()
data/lib/quark.rb CHANGED
@@ -48,8 +48,8 @@ module Quark
48
48
 
49
49
  class Server
50
50
  def self.run()
51
- @address = Quark::Config.get("quark.address", "127.0.0.1")
52
- @port = Quark::Config.get("quark.port", 12161)
51
+ @address = Quark::Config.get("quark.address")
52
+ @port = Quark::Config.get("quark.port")
53
53
  @filename = Quark::Config.get("quark.socket")
54
54
 
55
55
  EM.run do
@@ -23,8 +23,8 @@ module Quark
23
23
  block = block.to_i
24
24
 
25
25
  # skip keys whose block falls outside of the given time range (if given)
26
- next if block > 0 and not from.nil? and block < (from.to_i/1000/3600).to_i
27
- next if block > 0 and not to.nil? and block > (to.to_i/1000/3600).to_i
26
+ next if block > 0 and not from.nil? and block < (from.to_i/Quark::Config.get("quark.blocksize").to_i).to_i
27
+ next if block > 0 and not to.nil? and block > (to.to_i/Quark::Config.get("quark.blocksize").to_i).to_i
28
28
 
29
29
  # get all values, sort by timestamp ascending, and append to ouput (within range, if given)
30
30
  @redis.hgetall(key).sort{|a,b|
@@ -2,7 +2,14 @@ module Quark
2
2
  module SocketServer
3
3
  def process_command_observe(data)
4
4
  id, value, timestamp = data.chomp.split(' ')
5
- block = Integer(timestamp.to_i / 1000 / 3600)
5
+ timestamp = timestamp.to_i
6
+
7
+ # automatically convert epoch seconds to milliseconds to provide Graphite metric compatibility
8
+ if timestamp < 2147483647
9
+ (timestamp = timestamp * 1000)
10
+ end
11
+
12
+ block = Integer(timestamp / Quark::Config.get("quark.blocksize").to_i)
6
13
 
7
14
  @redis.hset("#{@_prefix}:#{id}:#{block}", timestamp, value)
8
15
  return nil
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quark
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2014-05-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
16
- requirement: &14255880 !ruby/object:Gem::Requirement
16
+ requirement: &13898660 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - =
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.7.9
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *14255880
24
+ version_requirements: *13898660
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: eventmachine
27
- requirement: &14253980 !ruby/object:Gem::Requirement
27
+ requirement: &13897140 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.0.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *14253980
35
+ version_requirements: *13897140
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: redis
38
- requirement: &14252900 !ruby/object:Gem::Requirement
38
+ requirement: &13896080 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 3.0.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *14252900
46
+ version_requirements: *13896080
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: hiredis
49
- requirement: &14251500 !ruby/object:Gem::Requirement
49
+ requirement: &13894740 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.5.2
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *14251500
57
+ version_requirements: *13894740
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: em-synchrony
60
- requirement: &14265760 !ruby/object:Gem::Requirement
60
+ requirement: &13893380 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: 1.0.3
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *14265760
68
+ version_requirements: *13893380
69
69
  description: A small service for logging and retrieving timeseries metrics into a
70
70
  Redis server
71
71
  email: garyhetzel@gmail.com