quark 0.0.6 → 0.0.7

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.
data/bin/quark CHANGED
@@ -7,10 +7,12 @@ module Quark
7
7
  class CLI
8
8
  class<<self
9
9
  def run()
10
- Quark::Config.set("quark.address", "127.0.0.1")
11
- Quark::Config.set("quark.port", 12161)
12
- Quark::Config.set("quark.blocksize", 3600000)
13
- Quark::Config.set("quark.udp.enabled", false)
10
+ Quark::Config.set("quark.address", "127.0.0.1")
11
+ Quark::Config.set("quark.port", 12161)
12
+ Quark::Config.set("quark.blocksize", 3600000)
13
+ Quark::Config.set("quark.udp.enabled", false)
14
+ Quark::Config.set("quark.graphite_compat", true)
15
+ Quark::Config.set("debug", false)
14
16
 
15
17
  (OptionParser.new do |opts|
16
18
  opts.banner = "Usage: quark [options]"
@@ -36,12 +38,12 @@ module Quark
36
38
  end
37
39
 
38
40
  # -----------------------------------------------------------------------------
39
- opts.on('-a', '--listen-address ADDR', 'The IP address to listen on') do |addr|
41
+ opts.on('-a', '--tcp-address ADDR', 'The IP address for the TCP server to listen on') do |addr|
40
42
  Quark::Config.set("quark.address", addr)
41
43
  end
42
44
 
43
45
  # -----------------------------------------------------------------------------
44
- opts.on('-p', '--listen-port PORT', 'The TCP port to listen on') do |port|
46
+ opts.on('-p', '--tcp-port PORT', 'The TCP port to listen on') do |port|
45
47
  Quark::Config.set("quark.port", port)
46
48
  end
47
49
 
@@ -55,6 +57,11 @@ module Quark
55
57
  Quark::Config.set("quark.udp.enabled", true)
56
58
  end
57
59
 
60
+ # -----------------------------------------------------------------------------
61
+ opts.on('-D', '--debug', 'Enable debug mode') do
62
+ Quark::Config.set("debug", true)
63
+ end
64
+
58
65
  # -----------------------------------------------------------------------------
59
66
  opts.on('', '--udp-address ADDR', 'The IP address to start the UDP server on') do |addr|
60
67
  Quark::Config.set("quark.udp.enabled", true)
@@ -67,6 +74,12 @@ module Quark
67
74
  Quark::Config.set("quark.udp.port", port)
68
75
  end
69
76
 
77
+
78
+ # -----------------------------------------------------------------------------
79
+ opts.on('', '--[no-]graphite', 'Enable/disable Graphite socket compatibility mode') do |mode|
80
+ Quark::Config.set("quark.graphite_compat", mode)
81
+ end
82
+
70
83
  end).parse!
71
84
 
72
85
  Quark::Server.run()
data/lib/quark.rb CHANGED
@@ -30,7 +30,7 @@ module Quark
30
30
  def receive_data(data)
31
31
  # if the data perfectly resembles a graphite-formatted metric (without a command prefix)
32
32
  # then assume the command is "observe"
33
- if data =~ /^[\w\.\-]+ -?[\d\.]+ \d{10,13}$/
33
+ if Quark::Config.get("quark.graphite_compat") and data =~ /^[\w\.\-]+ -?[\d\.]+ \d{10,13}$/
34
34
  command = "OBSERVE"
35
35
  arguments = data.chomp
36
36
  else
@@ -93,6 +93,10 @@ module Quark
93
93
  @filename = Quark::Config.get("quark.socket")
94
94
 
95
95
  EM.run do
96
+ if Quark::Config.get("debug")
97
+ puts "Debug mode is ON"
98
+ end
99
+
96
100
  if not @filename.nil? and File.writable?(File.dirname(@filename))
97
101
  puts "Starting socket server at #{@filename}..."
98
102
  EM::start_server(@filename, Quark::SocketServer)
@@ -110,6 +114,10 @@ module Quark
110
114
  puts "Starting TCP server on #{@address}:#{@port}..."
111
115
  EM::start_server(@address, @port, Quark::SocketServer)
112
116
  end
117
+
118
+ if Quark::Config.get("quark.graphite_compat")
119
+ puts "Graphite compatibility mode enabled: all sockets will accept Graphite-formatted metrics as observations"
120
+ end
113
121
  end
114
122
  end
115
123
  end
@@ -11,6 +11,10 @@ module Quark
11
11
 
12
12
  block = Integer(timestamp / Quark::Config.get("quark.blocksize").to_i)
13
13
 
14
+ if Quark::Config.get("debug")
15
+ puts "OBSERVE #{@_prefix}:#{id}:#{block} #{value} #{timestamp}"
16
+ end
17
+
14
18
  @redis.hset("#{@_prefix}:#{id}:#{block}", timestamp, value)
15
19
  return ({
16
20
  :metric => id,
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.6
4
+ version: 0.0.7
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: &16109420 !ruby/object:Gem::Requirement
16
+ requirement: &15249980 !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: *16109420
24
+ version_requirements: *15249980
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: eventmachine
27
- requirement: &16123800 !ruby/object:Gem::Requirement
27
+ requirement: &15249020 !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: *16123800
35
+ version_requirements: *15249020
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: redis
38
- requirement: &16122940 !ruby/object:Gem::Requirement
38
+ requirement: &15248140 !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: *16122940
46
+ version_requirements: *15248140
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: hiredis
49
- requirement: &16121300 !ruby/object:Gem::Requirement
49
+ requirement: &15263700 !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: *16121300
57
+ version_requirements: *15263700
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: em-synchrony
60
- requirement: &16133300 !ruby/object:Gem::Requirement
60
+ requirement: &15262720 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.0.3
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *16133300
68
+ version_requirements: *15262720
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: hashlib
71
- requirement: &16131280 !ruby/object:Gem::Requirement
71
+ requirement: &15261440 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: 0.0.35
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *16131280
79
+ version_requirements: *15261440
80
80
  description: A small service for logging and retrieving timeseries metrics into a
81
81
  Redis server
82
82
  email: garyhetzel@gmail.com