jruby-rack-metrics 0.0.2 → 0.0.3
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/README.md +1 -2
- data/VERSION +1 -1
- data/jruby-rack-metrics.gemspec +58 -0
- data/lib/jruby-rack-metrics.rb +14 -8
- metadata +3 -2
data/README.md
CHANGED
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.0.
|
|
1
|
+
0.0.3
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Generated by jeweler
|
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
|
4
|
+
# -*- encoding: utf-8 -*-
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |s|
|
|
7
|
+
s.name = %q{jruby-rack-metrics}
|
|
8
|
+
s.version = "0.0.3"
|
|
9
|
+
|
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
|
+
s.authors = ["Thomas Dudziak"]
|
|
12
|
+
s.date = %q{2011-09-15}
|
|
13
|
+
s.description = %q{A simple rack app wrapper that gathers request metrics using Coda Hale's metrics library}
|
|
14
|
+
s.email = %q{tomdzk@gmail.com}
|
|
15
|
+
s.extra_rdoc_files = [
|
|
16
|
+
"LICENSE.txt",
|
|
17
|
+
"README.md"
|
|
18
|
+
]
|
|
19
|
+
s.files = [
|
|
20
|
+
".document",
|
|
21
|
+
"LICENSE.txt",
|
|
22
|
+
"README.md",
|
|
23
|
+
"Rakefile",
|
|
24
|
+
"VERSION",
|
|
25
|
+
"jruby-rack-metrics.gemspec",
|
|
26
|
+
"lib/jruby-rack-metrics.rb"
|
|
27
|
+
]
|
|
28
|
+
s.homepage = %q{http://github.com/tomdz/jruby-rack-metrics}
|
|
29
|
+
s.licenses = ["ASL 2.0"]
|
|
30
|
+
s.require_paths = ["lib"]
|
|
31
|
+
s.rubygems_version = %q{1.5.1}
|
|
32
|
+
s.summary = %q{Metrics for jruby rack apps}
|
|
33
|
+
|
|
34
|
+
if s.respond_to? :specification_version then
|
|
35
|
+
s.specification_version = 3
|
|
36
|
+
|
|
37
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
38
|
+
s.add_runtime_dependency(%q<rack>, ["~> 1.1"])
|
|
39
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
|
40
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
|
41
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
|
42
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
|
43
|
+
else
|
|
44
|
+
s.add_dependency(%q<rack>, ["~> 1.1"])
|
|
45
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
|
46
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
|
47
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
|
48
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
|
49
|
+
end
|
|
50
|
+
else
|
|
51
|
+
s.add_dependency(%q<rack>, ["~> 1.1"])
|
|
52
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
|
53
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
|
54
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
|
55
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
data/lib/jruby-rack-metrics.rb
CHANGED
|
@@ -3,6 +3,12 @@ require 'uri'
|
|
|
3
3
|
require 'java'
|
|
4
4
|
require 'rack'
|
|
5
5
|
|
|
6
|
+
java_import 'java.lang.System'
|
|
7
|
+
java_import 'java.util.concurrent.TimeUnit'
|
|
8
|
+
java_import 'com.yammer.metrics.Metrics'
|
|
9
|
+
java_import 'com.yammer.metrics.core.MetricName'
|
|
10
|
+
java_import 'com.yammer.metrics.reporting.JmxReporter'
|
|
11
|
+
|
|
6
12
|
module JrubyRackMetrics
|
|
7
13
|
class Monitor
|
|
8
14
|
attr_reader :options
|
|
@@ -10,31 +16,31 @@ module JrubyRackMetrics
|
|
|
10
16
|
def initialize(app, opts = {})
|
|
11
17
|
@app = app
|
|
12
18
|
@options = default_options.merge(opts)
|
|
13
|
-
@timing_unit =
|
|
19
|
+
@timing_unit = TimeUnit::NANOSECONDS
|
|
14
20
|
if @options[:jmx_enabled]
|
|
15
|
-
|
|
21
|
+
JmxReporter.startDefault(metrics_registry)
|
|
16
22
|
end
|
|
17
23
|
end
|
|
18
24
|
|
|
19
25
|
def default_options
|
|
20
|
-
{ :default_duration_unit =>
|
|
21
|
-
:default_rate_unit =>
|
|
26
|
+
{ :default_duration_unit => TimeUnit::MILLISECONDS,
|
|
27
|
+
:default_rate_unit => TimeUnit::SECONDS,
|
|
22
28
|
:jmx_enabled => false }
|
|
23
29
|
end
|
|
24
30
|
|
|
25
31
|
def metrics_registry
|
|
26
|
-
@options[:metrics_registry] ||=
|
|
32
|
+
@options[:metrics_registry] ||= Metrics.defaultRegistry
|
|
27
33
|
end
|
|
28
34
|
|
|
29
35
|
def call(env = nil)
|
|
30
36
|
if env.nil?
|
|
31
37
|
@app.call(env)
|
|
32
38
|
else
|
|
33
|
-
start_time =
|
|
39
|
+
start_time = System.nanoTime()
|
|
34
40
|
begin
|
|
35
41
|
status, headers, body = @app.call(env)
|
|
36
42
|
ensure
|
|
37
|
-
elapsed =
|
|
43
|
+
elapsed = System.nanoTime() - start_time
|
|
38
44
|
# some web servers give us the full url, some only the path part
|
|
39
45
|
uri = URI.parse(env['REQUEST_URI'])
|
|
40
46
|
if defined? uri.path && !uri.path.nil?
|
|
@@ -46,7 +52,7 @@ module JrubyRackMetrics
|
|
|
46
52
|
end
|
|
47
53
|
type = env['REQUEST_METHOD'].downcase
|
|
48
54
|
name = (status || 500).to_s
|
|
49
|
-
metric_name =
|
|
55
|
+
metric_name = MetricName.new(group, type, name)
|
|
50
56
|
metrics_registry.newTimer(metric_name,
|
|
51
57
|
@options[:default_duration_unit],
|
|
52
58
|
@options[:default_rate_unit]).update(elapsed, @timing_unit)
|
metadata
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: jruby-rack-metrics
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease:
|
|
5
|
-
version: 0.0.
|
|
5
|
+
version: 0.0.3
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
8
8
|
- Thomas Dudziak
|
|
@@ -10,7 +10,7 @@ autorequire:
|
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
12
|
|
|
13
|
-
date: 2011-09-
|
|
13
|
+
date: 2011-09-15 00:00:00 -07:00
|
|
14
14
|
default_executable:
|
|
15
15
|
dependencies:
|
|
16
16
|
- !ruby/object:Gem::Dependency
|
|
@@ -83,6 +83,7 @@ files:
|
|
|
83
83
|
- README.md
|
|
84
84
|
- Rakefile
|
|
85
85
|
- VERSION
|
|
86
|
+
- jruby-rack-metrics.gemspec
|
|
86
87
|
- lib/jruby-rack-metrics.rb
|
|
87
88
|
has_rdoc: true
|
|
88
89
|
homepage: http://github.com/tomdz/jruby-rack-metrics
|