afstatsd 0.0.3 → 0.0.4
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/example/example.rb +67 -67
- data/ext/mkrf_conf.rb +18 -0
- data/lib/afstatsd.rb +8 -4
- metadata +7 -22
data/example/example.rb
CHANGED
@@ -1,67 +1,67 @@
|
|
1
|
-
require 'afstatsd'
|
2
|
-
|
3
|
-
#$statsd = Statsd.new 'statsd_server.my_company.com', 8125, 20
|
4
|
-
|
5
|
-
$statsd = Statsd.new # use defaults
|
6
|
-
$statsd.namespace = 'test.ruby'
|
7
|
-
|
8
|
-
|
9
|
-
$statsd.increment 'counter1'
|
10
|
-
$statsd.increment 'counter1'
|
11
|
-
$statsd.decrement 'counter1' #counters accumulate
|
12
|
-
|
13
|
-
$statsd.gauge 'gauge1', 1024
|
14
|
-
$statsd.gauge 'gauge1', 1025
|
15
|
-
$statsd.gauge 'gauge1', 1026
|
16
|
-
$statsd.gauge 'gauge1', 1027
|
17
|
-
$statsd.gauge 'gauge1', 1028 # gauges get overwritten when aggregated
|
18
|
-
|
19
|
-
$statsd.time('timing1'){sleep 0.01}
|
20
|
-
$statsd.time('timing1'){sleep 0.02}
|
21
|
-
$statsd.time('timing1'){sleep 0.03}
|
22
|
-
$statsd.time('timing1'){sleep 0.04} # timings get averaged when aggregated
|
23
|
-
|
24
|
-
|
25
|
-
=begin
|
26
|
-
|
27
|
-
100.times do
|
28
|
-
$statsd.increment 'sampled', 0.1, 'sampled'
|
29
|
-
end
|
30
|
-
|
31
|
-
$statsd.set 'set1', 1099, "ez"
|
32
|
-
|
33
|
-
for i in 10..19 do
|
34
|
-
$statsd.increment "counter#{i}" # create a group of counters
|
35
|
-
end
|
36
|
-
|
37
|
-
1000.times do
|
38
|
-
$statsd.increment 'fast' # don't do this if aggregation is off
|
39
|
-
end
|
40
|
-
|
41
|
-
15.times do
|
42
|
-
sleep 2
|
43
|
-
$statsd.increment 'slow'
|
44
|
-
end
|
45
|
-
|
46
|
-
=end
|
47
|
-
|
48
|
-
=begin
|
49
|
-
# test for thread safety
|
50
|
-
threads = []
|
51
|
-
start = Time.now
|
52
|
-
for i in 0..9 do
|
53
|
-
threads << Thread.new(i) do |j|
|
54
|
-
start = Time.now
|
55
|
-
1000000.times do
|
56
|
-
$statsd.increment 'inthethread'
|
57
|
-
# sleep(0.01)
|
58
|
-
end
|
59
|
-
puts "thread #{j} says: I took #{((Time.now - start)*1000).round} ms"
|
60
|
-
end
|
61
|
-
end
|
62
|
-
threads.each { |t| t.join }
|
63
|
-
|
64
|
-
puts "total time: #{((Time.now - start)*1000).round} ms"
|
65
|
-
=end
|
66
|
-
|
67
|
-
puts "#{$statsd.dropped} messages dropped"
|
1
|
+
require 'afstatsd'
|
2
|
+
|
3
|
+
#$statsd = Statsd.new 'statsd_server.my_company.com', 8125, 20
|
4
|
+
|
5
|
+
$statsd = Statsd.new # use defaults
|
6
|
+
$statsd.namespace = 'test.ruby'
|
7
|
+
|
8
|
+
|
9
|
+
$statsd.increment 'counter1'
|
10
|
+
$statsd.increment 'counter1'
|
11
|
+
$statsd.decrement 'counter1' #counters accumulate
|
12
|
+
|
13
|
+
$statsd.gauge 'gauge1', 1024
|
14
|
+
$statsd.gauge 'gauge1', 1025
|
15
|
+
$statsd.gauge 'gauge1', 1026
|
16
|
+
$statsd.gauge 'gauge1', 1027
|
17
|
+
$statsd.gauge 'gauge1', 1028 # gauges get overwritten when aggregated
|
18
|
+
|
19
|
+
$statsd.time('timing1'){sleep 0.01}
|
20
|
+
$statsd.time('timing1'){sleep 0.02}
|
21
|
+
$statsd.time('timing1'){sleep 0.03}
|
22
|
+
$statsd.time('timing1'){sleep 0.04} # timings get averaged when aggregated
|
23
|
+
|
24
|
+
|
25
|
+
=begin
|
26
|
+
|
27
|
+
100.times do
|
28
|
+
$statsd.increment 'sampled', 0.1, 'sampled'
|
29
|
+
end
|
30
|
+
|
31
|
+
$statsd.set 'set1', 1099, "ez"
|
32
|
+
|
33
|
+
for i in 10..19 do
|
34
|
+
$statsd.increment "counter#{i}" # create a group of counters
|
35
|
+
end
|
36
|
+
|
37
|
+
1000.times do
|
38
|
+
$statsd.increment 'fast' # don't do this if aggregation is off
|
39
|
+
end
|
40
|
+
|
41
|
+
15.times do
|
42
|
+
sleep 2
|
43
|
+
$statsd.increment 'slow'
|
44
|
+
end
|
45
|
+
|
46
|
+
=end
|
47
|
+
|
48
|
+
=begin
|
49
|
+
# test for thread safety
|
50
|
+
threads = []
|
51
|
+
start = Time.now
|
52
|
+
for i in 0..9 do
|
53
|
+
threads << Thread.new(i) do |j|
|
54
|
+
start = Time.now
|
55
|
+
1000000.times do
|
56
|
+
$statsd.increment 'inthethread'
|
57
|
+
# sleep(0.01)
|
58
|
+
end
|
59
|
+
puts "thread #{j} says: I took #{((Time.now - start)*1000).round} ms"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
threads.each { |t| t.join }
|
63
|
+
|
64
|
+
puts "total time: #{((Time.now - start)*1000).round} ms"
|
65
|
+
=end
|
66
|
+
|
67
|
+
puts "#{$statsd.dropped} messages dropped"
|
data/ext/mkrf_conf.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rubygems/command.rb'
|
2
|
+
require 'rubygems/dependency_installer.rb'
|
3
|
+
begin
|
4
|
+
Gem::Command.build_args = ARGV
|
5
|
+
rescue NoMethodError
|
6
|
+
end
|
7
|
+
inst = Gem::DependencyInstaller.new
|
8
|
+
begin
|
9
|
+
if RUBY_PLATFORM =~ /linux/i
|
10
|
+
inst.install "posix_mq", "~> 2.0.0"
|
11
|
+
end
|
12
|
+
rescue
|
13
|
+
exit(1)
|
14
|
+
end
|
15
|
+
|
16
|
+
f = File.open(File.join(File.dirname(__FILE__), "Rakefile"), "w") # create dummy rakefile to indicate success
|
17
|
+
f.write("task :default\n")
|
18
|
+
f.close
|
data/lib/afstatsd.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'socket'
|
2
2
|
require 'forwardable'
|
3
3
|
require 'rubygems'
|
4
|
-
require 'posix_mq'
|
4
|
+
require 'posix_mq' if RUBY_PLATFORM =~ /linux/i
|
5
5
|
require 'afstatsd/statsd_metrics'
|
6
6
|
require 'afstatsd/statsd_aggregator'
|
7
7
|
require 'monitor'
|
@@ -64,7 +64,11 @@ class Statsd
|
|
64
64
|
@prefix = nil
|
65
65
|
@postfix = nil
|
66
66
|
@aggregator = StatsdAggregator.new(interval)
|
67
|
-
|
67
|
+
if RUBY_PLATFORM =~ /linux/i
|
68
|
+
set_transport :mq_transport
|
69
|
+
else
|
70
|
+
set_transport :udp_transport
|
71
|
+
end
|
68
72
|
self.aggregating = true unless interval == 0
|
69
73
|
@dropped = 0
|
70
74
|
@debugging = false
|
@@ -154,7 +158,7 @@ class Statsd
|
|
154
158
|
# @param [String] optional note (AppFirst extension to StatsD)
|
155
159
|
def count(stat, count, sample_rate=1, note="")
|
156
160
|
if sample_rate == 1 or rand < sample_rate
|
157
|
-
send_metric StatsdMetrics::CMetric.new(expand_name(stat), count, sample_rate, note)
|
161
|
+
send_metric StatsdMetrics::CMetric.new(expand_name(stat), count.round, sample_rate, note)
|
158
162
|
end
|
159
163
|
end
|
160
164
|
|
@@ -200,7 +204,7 @@ class Statsd
|
|
200
204
|
# @param [String] optional note (AppFirst extension to StatsD)
|
201
205
|
def timing(stat, ms, sample_rate=1, note="")
|
202
206
|
if sample_rate == 1 or rand < sample_rate
|
203
|
-
send_metric StatsdMetrics::TMetric.new(expand_name(stat), ms, sample_rate, note)
|
207
|
+
send_metric StatsdMetrics::TMetric.new(expand_name(stat), ms.round, sample_rate, note)
|
204
208
|
end
|
205
209
|
end
|
206
210
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: afstatsd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,34 +9,20 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03
|
13
|
-
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: posix_mq
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: 2.0.0
|
22
|
-
type: :runtime
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: 2.0.0
|
12
|
+
date: 2013-07-03 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
30
14
|
description: A StatsD library with AppFirst Extensions
|
31
15
|
email: clark@appfirst.com
|
32
16
|
executables: []
|
33
|
-
extensions:
|
17
|
+
extensions:
|
18
|
+
- ext/mkrf_conf.rb
|
34
19
|
extra_rdoc_files: []
|
35
20
|
files:
|
36
21
|
- lib/afstatsd.rb
|
37
22
|
- lib/afstatsd/statsd_aggregator.rb
|
38
23
|
- lib/afstatsd/statsd_metrics.rb
|
39
24
|
- example/example.rb
|
25
|
+
- ext/mkrf_conf.rb
|
40
26
|
homepage: http://appfirst.com
|
41
27
|
licenses: []
|
42
28
|
post_install_message:
|
@@ -57,9 +43,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
57
43
|
version: '0'
|
58
44
|
requirements: []
|
59
45
|
rubyforge_project:
|
60
|
-
rubygems_version: 1.8.
|
46
|
+
rubygems_version: 1.8.25
|
61
47
|
signing_key:
|
62
48
|
specification_version: 3
|
63
49
|
summary: AppFirst StatsD Library
|
64
50
|
test_files: []
|
65
|
-
has_rdoc:
|