simple_metrics 0.3.6 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. data/README.markdown +53 -16
  2. data/Rakefile +0 -17
  3. data/bin/populate +13 -26
  4. data/bin/simple_metrics_client +64 -0
  5. data/bin/simple_metrics_server +3 -4
  6. data/lib/simple_metrics.rb +76 -17
  7. data/lib/simple_metrics/bucket.rb +106 -43
  8. data/lib/simple_metrics/client.rb +83 -0
  9. data/lib/simple_metrics/data_point.rb +137 -45
  10. data/lib/simple_metrics/functions.rb +5 -5
  11. data/lib/simple_metrics/graph.rb +32 -69
  12. data/lib/simple_metrics/mongo.rb +48 -0
  13. data/lib/simple_metrics/server.rb +66 -0
  14. data/lib/simple_metrics/version.rb +1 -1
  15. data/simple_metrics.gemspec +0 -6
  16. data/spec/bucket_spec.rb +152 -17
  17. data/spec/data_point_spec.rb +64 -14
  18. data/spec/graph_spec.rb +19 -30
  19. data/spec/spec_helper.rb +3 -3
  20. metadata +24 -139
  21. data/.travis.yml +0 -3
  22. data/bin/simple_metrics_web +0 -11
  23. data/config.ru +0 -6
  24. data/default_config.yml +0 -34
  25. data/lib/simple_metrics/app.rb +0 -52
  26. data/lib/simple_metrics/configuration.rb +0 -97
  27. data/lib/simple_metrics/data_point/base.rb +0 -59
  28. data/lib/simple_metrics/data_point/counter.rb +0 -20
  29. data/lib/simple_metrics/data_point/event.rb +0 -16
  30. data/lib/simple_metrics/data_point/gauge.rb +0 -19
  31. data/lib/simple_metrics/data_point/timing.rb +0 -15
  32. data/lib/simple_metrics/data_point_repository.rb +0 -114
  33. data/lib/simple_metrics/importer.rb +0 -64
  34. data/lib/simple_metrics/metric.rb +0 -29
  35. data/lib/simple_metrics/metric_repository.rb +0 -54
  36. data/lib/simple_metrics/public/css/bootstrap-responsive.min.css +0 -12
  37. data/lib/simple_metrics/public/css/bootstrap.min.css +0 -689
  38. data/lib/simple_metrics/public/css/graph.css +0 -45
  39. data/lib/simple_metrics/public/css/rickshaw.min.css +0 -1
  40. data/lib/simple_metrics/public/img/glyphicons-halflings-white.png +0 -0
  41. data/lib/simple_metrics/public/img/glyphicons-halflings.png +0 -0
  42. data/lib/simple_metrics/public/js/app.js +0 -20
  43. data/lib/simple_metrics/public/js/collections/graph.js +0 -16
  44. data/lib/simple_metrics/public/js/collections/metric.js +0 -9
  45. data/lib/simple_metrics/public/js/helpers.js +0 -23
  46. data/lib/simple_metrics/public/js/lib/backbone-0.9.2.min.js +0 -38
  47. data/lib/simple_metrics/public/js/lib/bootstrap.min.js +0 -6
  48. data/lib/simple_metrics/public/js/lib/d3.v2.min.js +0 -4
  49. data/lib/simple_metrics/public/js/lib/handlebars-1.0.0.beta.6.js +0 -1550
  50. data/lib/simple_metrics/public/js/lib/jquery-1.7.1.min.js +0 -4
  51. data/lib/simple_metrics/public/js/lib/moment.min.js +0 -6
  52. data/lib/simple_metrics/public/js/lib/rickshaw.min.js +0 -1
  53. data/lib/simple_metrics/public/js/lib/underscore-1.3.1.min.js +0 -31
  54. data/lib/simple_metrics/public/js/models/graph.js +0 -6
  55. data/lib/simple_metrics/public/js/models/metric.js +0 -7
  56. data/lib/simple_metrics/public/js/router.js +0 -42
  57. data/lib/simple_metrics/public/js/views/app.js +0 -18
  58. data/lib/simple_metrics/public/js/views/dashboard.js +0 -10
  59. data/lib/simple_metrics/public/js/views/graph.js +0 -101
  60. data/lib/simple_metrics/public/js/views/metric.js +0 -82
  61. data/lib/simple_metrics/public/js/views/metrics.js +0 -10
  62. data/lib/simple_metrics/repository.rb +0 -34
  63. data/lib/simple_metrics/udp_server.rb +0 -81
  64. data/lib/simple_metrics/views/graph.erb +0 -93
  65. data/lib/simple_metrics/views/index.erb +0 -0
  66. data/lib/simple_metrics/views/layout.erb +0 -138
  67. data/lib/simple_metrics/views/show.erb +0 -31
  68. data/spec/data_point_repository_spec.rb +0 -77
  69. data/spec/importer_spec.rb +0 -126
  70. data/spec/metric_repository_spec.rb +0 -53
data/spec/spec_helper.rb CHANGED
@@ -5,6 +5,6 @@ RSpec.configure do |config|
5
5
  end
6
6
 
7
7
  SimpleMetrics.logger = Logger.new('/dev/null')
8
- SimpleMetrics.configure do |config|
9
- config.db = { :host => 'localhost', :prefix => 'test', :options => {} }
10
- end
8
+ SimpleMetrics.db_config = { :host => 'localhost', :prefix => 'test' }
9
+
10
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_metrics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-15 00:00:00.000000000 Z
12
+ date: 2012-04-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70211252366540 !ruby/object:Gem::Requirement
16
+ requirement: &70302462447680 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70211252366540
24
+ version_requirements: *70302462447680
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70211252365800 !ruby/object:Gem::Requirement
27
+ requirement: &70302462446940 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70211252365800
35
+ version_requirements: *70302462446940
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rr
38
- requirement: &70211252365360 !ruby/object:Gem::Requirement
38
+ requirement: &70302462446200 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,21 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70211252365360
47
- - !ruby/object:Gem::Dependency
48
- name: shotgun
49
- requirement: &70211252364740 !ruby/object:Gem::Requirement
50
- none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- type: :development
56
- prerelease: false
57
- version_requirements: *70211252364740
46
+ version_requirements: *70302462446200
58
47
  - !ruby/object:Gem::Dependency
59
48
  name: eventmachine
60
- requirement: &70211252380520 !ruby/object:Gem::Requirement
49
+ requirement: &70302462445460 !ruby/object:Gem::Requirement
61
50
  none: false
62
51
  requirements:
63
52
  - - ! '>='
@@ -65,10 +54,10 @@ dependencies:
65
54
  version: '0'
66
55
  type: :runtime
67
56
  prerelease: false
68
- version_requirements: *70211252380520
57
+ version_requirements: *70302462445460
69
58
  - !ruby/object:Gem::Dependency
70
59
  name: daemons
71
- requirement: &70211252380000 !ruby/object:Gem::Requirement
60
+ requirement: &70302462444740 !ruby/object:Gem::Requirement
72
61
  none: false
73
62
  requirements:
74
63
  - - ! '>='
@@ -76,10 +65,10 @@ dependencies:
76
65
  version: '0'
77
66
  type: :runtime
78
67
  prerelease: false
79
- version_requirements: *70211252380000
68
+ version_requirements: *70302462444740
80
69
  - !ruby/object:Gem::Dependency
81
70
  name: mongo
82
- requirement: &70211252379280 !ruby/object:Gem::Requirement
71
+ requirement: &70302462444200 !ruby/object:Gem::Requirement
83
72
  none: false
84
73
  requirements:
85
74
  - - ~>
@@ -87,21 +76,10 @@ dependencies:
87
76
  version: '1.6'
88
77
  type: :runtime
89
78
  prerelease: false
90
- version_requirements: *70211252379280
79
+ version_requirements: *70302462444200
91
80
  - !ruby/object:Gem::Dependency
92
81
  name: bson
93
- requirement: &70211252378520 !ruby/object:Gem::Requirement
94
- none: false
95
- requirements:
96
- - - ~>
97
- - !ruby/object:Gem::Version
98
- version: '1.6'
99
- type: :runtime
100
- prerelease: false
101
- version_requirements: *70211252378520
102
- - !ruby/object:Gem::Dependency
103
- name: bson_ext
104
- requirement: &70211252377940 !ruby/object:Gem::Requirement
82
+ requirement: &70302462443660 !ruby/object:Gem::Requirement
105
83
  none: false
106
84
  requirements:
107
85
  - - ~>
@@ -109,129 +87,39 @@ dependencies:
109
87
  version: '1.6'
110
88
  type: :runtime
111
89
  prerelease: false
112
- version_requirements: *70211252377940
113
- - !ruby/object:Gem::Dependency
114
- name: sinatra
115
- requirement: &70211252377400 !ruby/object:Gem::Requirement
116
- none: false
117
- requirements:
118
- - - ! '>='
119
- - !ruby/object:Gem::Version
120
- version: '0'
121
- type: :runtime
122
- prerelease: false
123
- version_requirements: *70211252377400
124
- - !ruby/object:Gem::Dependency
125
- name: erubis
126
- requirement: &70211252376600 !ruby/object:Gem::Requirement
127
- none: false
128
- requirements:
129
- - - ! '>='
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :runtime
133
- prerelease: false
134
- version_requirements: *70211252376600
135
- - !ruby/object:Gem::Dependency
136
- name: vegas
137
- requirement: &70211252375960 !ruby/object:Gem::Requirement
138
- none: false
139
- requirements:
140
- - - ~>
141
- - !ruby/object:Gem::Version
142
- version: 0.1.2
143
- type: :runtime
144
- prerelease: false
145
- version_requirements: *70211252375960
146
- - !ruby/object:Gem::Dependency
147
- name: json
148
- requirement: &70211252375460 !ruby/object:Gem::Requirement
149
- none: false
150
- requirements:
151
- - - ! '>='
152
- - !ruby/object:Gem::Version
153
- version: '0'
154
- type: :runtime
155
- prerelease: false
156
- version_requirements: *70211252375460
90
+ version_requirements: *70302462443660
157
91
  description: SimpleMetrics
158
92
  email:
159
93
  - fdietz@gmail.com
160
94
  executables:
161
95
  - populate
96
+ - simple_metrics_client
162
97
  - simple_metrics_server
163
- - simple_metrics_web
164
98
  extensions: []
165
99
  extra_rdoc_files: []
166
100
  files:
167
101
  - .gitignore
168
102
  - .rvmrc
169
- - .travis.yml
170
103
  - Gemfile
171
104
  - README.markdown
172
105
  - Rakefile
173
106
  - bin/populate
107
+ - bin/simple_metrics_client
174
108
  - bin/simple_metrics_server
175
- - bin/simple_metrics_web
176
- - config.ru
177
- - default_config.yml
178
109
  - example/increment.rb
179
110
  - lib/simple_metrics.rb
180
- - lib/simple_metrics/app.rb
181
111
  - lib/simple_metrics/bucket.rb
182
- - lib/simple_metrics/configuration.rb
112
+ - lib/simple_metrics/client.rb
183
113
  - lib/simple_metrics/data_point.rb
184
- - lib/simple_metrics/data_point/base.rb
185
- - lib/simple_metrics/data_point/counter.rb
186
- - lib/simple_metrics/data_point/event.rb
187
- - lib/simple_metrics/data_point/gauge.rb
188
- - lib/simple_metrics/data_point/timing.rb
189
- - lib/simple_metrics/data_point_repository.rb
190
114
  - lib/simple_metrics/functions.rb
191
115
  - lib/simple_metrics/graph.rb
192
- - lib/simple_metrics/importer.rb
193
- - lib/simple_metrics/metric.rb
194
- - lib/simple_metrics/metric_repository.rb
195
- - lib/simple_metrics/public/css/bootstrap-responsive.min.css
196
- - lib/simple_metrics/public/css/bootstrap.min.css
197
- - lib/simple_metrics/public/css/graph.css
198
- - lib/simple_metrics/public/css/rickshaw.min.css
199
- - lib/simple_metrics/public/img/glyphicons-halflings-white.png
200
- - lib/simple_metrics/public/img/glyphicons-halflings.png
201
- - lib/simple_metrics/public/js/app.js
202
- - lib/simple_metrics/public/js/collections/graph.js
203
- - lib/simple_metrics/public/js/collections/metric.js
204
- - lib/simple_metrics/public/js/helpers.js
205
- - lib/simple_metrics/public/js/lib/backbone-0.9.2.min.js
206
- - lib/simple_metrics/public/js/lib/bootstrap.min.js
207
- - lib/simple_metrics/public/js/lib/d3.v2.min.js
208
- - lib/simple_metrics/public/js/lib/handlebars-1.0.0.beta.6.js
209
- - lib/simple_metrics/public/js/lib/jquery-1.7.1.min.js
210
- - lib/simple_metrics/public/js/lib/moment.min.js
211
- - lib/simple_metrics/public/js/lib/rickshaw.min.js
212
- - lib/simple_metrics/public/js/lib/underscore-1.3.1.min.js
213
- - lib/simple_metrics/public/js/models/graph.js
214
- - lib/simple_metrics/public/js/models/metric.js
215
- - lib/simple_metrics/public/js/router.js
216
- - lib/simple_metrics/public/js/views/app.js
217
- - lib/simple_metrics/public/js/views/dashboard.js
218
- - lib/simple_metrics/public/js/views/graph.js
219
- - lib/simple_metrics/public/js/views/metric.js
220
- - lib/simple_metrics/public/js/views/metrics.js
221
- - lib/simple_metrics/repository.rb
222
- - lib/simple_metrics/udp_server.rb
116
+ - lib/simple_metrics/mongo.rb
117
+ - lib/simple_metrics/server.rb
223
118
  - lib/simple_metrics/version.rb
224
- - lib/simple_metrics/views/graph.erb
225
- - lib/simple_metrics/views/index.erb
226
- - lib/simple_metrics/views/layout.erb
227
- - lib/simple_metrics/views/show.erb
228
119
  - simple_metrics.gemspec
229
120
  - spec/bucket_spec.rb
230
- - spec/data_point_repository_spec.rb
231
121
  - spec/data_point_spec.rb
232
122
  - spec/graph_spec.rb
233
- - spec/importer_spec.rb
234
- - spec/metric_repository_spec.rb
235
123
  - spec/spec_helper.rb
236
124
  homepage: ''
237
125
  licenses: []
@@ -247,7 +135,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
247
135
  version: '0'
248
136
  segments:
249
137
  - 0
250
- hash: -3369843487740317274
138
+ hash: -520904601544402240
251
139
  required_rubygems_version: !ruby/object:Gem::Requirement
252
140
  none: false
253
141
  requirements:
@@ -256,18 +144,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
256
144
  version: '0'
257
145
  segments:
258
146
  - 0
259
- hash: -3369843487740317274
147
+ hash: -520904601544402240
260
148
  requirements: []
261
149
  rubyforge_project:
262
- rubygems_version: 1.8.15
150
+ rubygems_version: 1.8.17
263
151
  signing_key:
264
152
  specification_version: 3
265
153
  summary: SimpleMetrics
266
154
  test_files:
267
155
  - spec/bucket_spec.rb
268
- - spec/data_point_repository_spec.rb
269
156
  - spec/data_point_spec.rb
270
157
  - spec/graph_spec.rb
271
- - spec/importer_spec.rb
272
- - spec/metric_repository_spec.rb
273
158
  - spec/spec_helper.rb
data/.travis.yml DELETED
@@ -1,3 +0,0 @@
1
- rvm:
2
- - 1.9.2
3
- - 1.9.3
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- $LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
4
-
5
- require "rubygems"
6
- require 'vegas'
7
- require "simple_metrics"
8
-
9
- Vegas::Runner.new(SimpleMetrics::App, 'simple_metrics_web') do |runner, opts, app|
10
- # add more options here
11
- end
data/config.ru DELETED
@@ -1,6 +0,0 @@
1
- $LOAD_PATH.unshift ::File.expand_path(::File.dirname(__FILE__) + '/lib')
2
-
3
- require "rubygems"
4
- require "simple_metrics"
5
-
6
- run SimpleMetrics::App.new
data/default_config.yml DELETED
@@ -1,34 +0,0 @@
1
- server:
2
- host: 'localhost'
3
- port: 8125
4
- flush_interval: 10
5
-
6
- db:
7
- host: 'localhost'
8
- port: 27017
9
- prefix: 'development'
10
- options:
11
- pool_size: 5
12
- timeout: 5
13
-
14
- web:
15
- host: 'localhost'
16
- port: 5678
17
-
18
- buckets:
19
- - name: 'stats_per_10s'
20
- seconds: 10
21
- capped: true
22
- size: 180_000 # 6*30 = 180 (30 min ttl), 180 * 100 = 18.000 (100 data points), 18.000 * 10 (bytes each) = 180.000
23
- - name: 'stats_per_1min'
24
- seconds: 60
25
- capped: true
26
- size: 120_000 # 60*3 = 180 (3h ttl), 120 * 100 = 18.000 (100 data points), 18.000 * 10 (bytes each) = 180.000
27
- - name: 'stats_per_10min'
28
- seconds: 600
29
- size: 0
30
- capped: false
31
- - name: 'stats_per_day'
32
- seconds: 86400 # 600*6*24
33
- size: 0
34
- capped: false
@@ -1,52 +0,0 @@
1
- require "sinatra"
2
- require "erubis"
3
- require "json"
4
-
5
- if defined? Encoding
6
- Encoding.default_external = Encoding::UTF_8
7
- end
8
-
9
- module SimpleMetrics
10
- class App < Sinatra::Base
11
-
12
- set :views, ::File.expand_path('../views', __FILE__)
13
- set :public_folder, File.expand_path('../public', __FILE__)
14
-
15
- helpers do
16
- end
17
-
18
- get "/api/metrics" do
19
- content_type :json
20
- metrics = SimpleMetrics::MetricRepository.find_all
21
- metrics.inject([]) { |result, m| result << m.attributes }.to_json
22
- end
23
-
24
- get "/api/metrics/:name" do
25
- content_type :json
26
- metric = SimpleMetrics::MetricRepository.find_one_by_name(params[:name])
27
- metric.attributes.to_json
28
- end
29
-
30
- get "/api/graph" do
31
- content_type :json
32
- from = (params[:from] || Time.now).to_i
33
- time = params[:time] || 'minute'
34
- targets = params[:targets]
35
- data_points = prepare_data_points(from, time, *targets)
36
- data_points.to_json
37
- end
38
-
39
- get "/*" do
40
- erb :index
41
- end
42
-
43
- private
44
-
45
- def prepare_data_points(from, time, *targets)
46
- bucket = SimpleMetrics::Bucket.for_time(time)
47
- to = from - SimpleMetrics::Graph.time_range(time)
48
- SimpleMetrics::Graph.query_all(bucket, to, from, *targets)
49
- end
50
-
51
- end
52
- end
@@ -1,97 +0,0 @@
1
- require 'yaml'
2
-
3
- module SimpleMetrics
4
- class Configuration
5
-
6
- attr_reader :config
7
-
8
- def initialize(hash = {}, &block)
9
- @config = load_defaults.merge(symbolize_keys(hash))
10
- end
11
-
12
- def configure(hash = {}, &block)
13
- yield self if block_given?
14
- self
15
- end
16
-
17
- def db
18
- @db ||= config.fetch(:db)
19
- end
20
-
21
- def db=(db)
22
- @db = db
23
- end
24
-
25
- def buckets
26
- @buckets ||= begin
27
- tmp = config.fetch(:buckets)
28
- tmp.map { |b| symbolize_keys(b)}
29
- end
30
- end
31
-
32
- def buckets=(buckets)
33
- @buckets = buckets
34
- end
35
-
36
- def server
37
- @server ||= config.fetch(:server)
38
- end
39
-
40
- def server=(server)
41
- @server = server
42
- end
43
-
44
- def web
45
- @web ||= config.fetch(:web)
46
- end
47
-
48
- def web=(web)
49
- @web = web
50
- end
51
-
52
- private
53
-
54
- def load_defaults
55
- @config = symbolize_keys(load_config)
56
- rescue Errno::ENOENT # not found error
57
- logger.info "Creating initial config file: #{config_file}"
58
- FileUtils.cp(default_config_file, config_file)
59
- @config = load_config
60
- end
61
-
62
- def config_file
63
- File.expand_path('~/.simple_metrics.conf')
64
- end
65
-
66
- def default_config_file
67
- File.expand_path('../../../default_config.yml', __FILE__)
68
- end
69
-
70
- def load_config
71
- YAML.load_file(config_file)
72
- rescue ArgumentError => e
73
- logger.error "Error parsing config file: #{e}"
74
- rescue IOError => e
75
- logger.error "Error reading config file: #{e}"
76
- end
77
-
78
- def symbolize_keys(hash)
79
- hash.inject({}){|result, (key, value)|
80
- new_key = case key
81
- when String then key.to_sym
82
- else key
83
- end
84
- new_value = case value
85
- when Hash then symbolize_keys(value)
86
- else value
87
- end
88
- result[new_key] = new_value
89
- result
90
- }
91
- end
92
-
93
- def logger
94
- SimpleMetrics.logger
95
- end
96
- end
97
- end