rack-monitor 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -5,12 +5,12 @@ monitoring tools like Munin.
5
5
 
6
6
  ==Installation
7
7
 
8
- $ sudo gem install rack-monitor
8
+ sudo gem install rack-monitor
9
9
 
10
10
  ==Basic Usage
11
11
 
12
12
  Rack::Monitor is implemented as a piece of Rack middleware and can be used with
13
- any Rack-based application. If your application includes a rackup (`.ru`) file
13
+ any Rack-based application. If your application includes a rackup (<tt>.ru</tt>) file
14
14
  or uses Rack::Builder to construct the application pipeline, simply require
15
15
  and use as follows:
16
16
 
@@ -22,23 +22,25 @@ and use as follows:
22
22
 
23
23
  ==Using with Rails
24
24
 
25
- Add this to your `config/environments/production.rb`:
25
+ Add this to your <tt>config/environments/production.rb</tt>:
26
26
 
27
27
  config.gem "rack-monitor", :lib => "rack/monitor"
28
28
 
29
29
  require 'rack/monitor' #Rails bug?
30
- config.middleware.use Rack::Monitor
30
+ config.middleware.use ::Rack::Monitor
31
31
 
32
- You should now see `Rack::Monitor` listed in the middleware pipeline:
32
+ You should now see <tt>Rack::Monitor</tt> listed in the middleware pipeline:
33
33
 
34
34
  RAILS_ENV=production rake middleware
35
35
 
36
+ Rack::Monitor doesn't work properly when started with mongrel_rails. Use thin instead.
37
+
36
38
  ==Monitoring with Munin
37
39
 
38
40
  Copy plugin files from http://github.com/pka/rack-monitor/tree/master/munin/ to /etc/munin/plugins/
39
41
 
40
42
  Setup a configuration in /etc/munin/plugin-conf.d/ like
41
- http://github.com/pka/rack-monitor/tree/master/muninplugin-conf.d/rack
43
+ http://github.com/pka/rack-monitor/tree/master/munin/plugin-conf.d/rack
42
44
 
43
45
  /etc/init.d/munin-node restart
44
46
 
@@ -21,9 +21,9 @@ class MonitorApp
21
21
  [200, {'Content-Type' => 'text/plain'}, [monitor_output]]
22
22
  else
23
23
  @sensors.each { |sensor| sensor.before(env) }
24
- status, headers, response = @app.call(env)
25
- @sensors.each { |sensor| sensor.after(env) }
26
- [status, headers, response]
24
+ status, headers, body = @app.call(env)
25
+ @sensors.each { |sensor| sensor.after(env, status, headers, body) }
26
+ [status, headers, body]
27
27
  end
28
28
  end
29
29
 
@@ -8,7 +8,7 @@ class Sensor
8
8
  end
9
9
 
10
10
  #Called after request
11
- def after(env)
11
+ def after(env, status, headers, body)
12
12
  end
13
13
 
14
14
  #Called before delivering measurements
@@ -1,16 +1,37 @@
1
1
  module Rack::Monitor
2
2
 
3
3
  class Request < Sensor
4
+ STATUS_CODES = [200, 403, 404]
4
5
  def initialize
5
6
  @count = 0
7
+ @status = {}
8
+ (STATUS_CODES+[1,2,3,4,5]).each { |code| @status[code] = 0 }
6
9
  end
7
10
 
8
- def after(env)
11
+ def after(env, status, headers, body)
9
12
  @count += 1
13
+ @status[code_group(status)] += 1
10
14
  end
11
15
 
12
16
  def measurements
13
- [['count', 'Total requests', @count]]
17
+ m = [['count', 'Total requests', @count]]
18
+ STATUS_CODES.each do |status|
19
+ m << ["status#{status}", "Responses with status #{status}", @status[status]]
20
+ end
21
+ [1,2,3,4,5].each do |status|
22
+ m << ["status#{status}", "Responses with other status #{status}xx", @status[status]]
23
+ end
24
+ m
25
+ end
26
+
27
+ private
28
+
29
+ def code_group(code)
30
+ if STATUS_CODES.include?(code)
31
+ code
32
+ else
33
+ code / 100
34
+ end
14
35
  end
15
36
  end
16
37
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-monitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pirmin Kalberer
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-03 00:00:00 +01:00
12
+ date: 2010-01-05 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies: []
15
15