graphiterb 0.1.4 → 0.1.5
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/VERSION +1 -1
- data/examples/api_call_monitor.rb +51 -0
- data/examples/file_monitor.rb +1 -1
- data/examples/run_servers.sh +2 -0
- data/graphiterb.gemspec +10 -3
- metadata +12 -9
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.5
|
@@ -0,0 +1,51 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$: << File.dirname(__FILE__)+'/../lib/'
|
3
|
+
require 'graphiterb'
|
4
|
+
require 'graphiterb/graphite_script'
|
5
|
+
|
6
|
+
WC_EXEC = '/usr/bin/wc'
|
7
|
+
|
8
|
+
class ApiCallMonitor < Graphiterb::GraphiteLogger
|
9
|
+
API_CALLS_TO_MONITOR = %w[trstrank wordbag influence conversation]
|
10
|
+
ERROR_CODES_TO_MONITOR = %w[4.. 5.. 200]
|
11
|
+
|
12
|
+
def initialize *args
|
13
|
+
super *args
|
14
|
+
@current_total = Hash.new
|
15
|
+
@prev_total = Hash.new
|
16
|
+
end
|
17
|
+
|
18
|
+
def calls api
|
19
|
+
total_calls = `cat /var/www/apeyeye/shared/log/apeyeye-access.log | egrep 'GET /soc/net/tw/#{api}' | #{WC_EXEC} -l` rescue 0
|
20
|
+
@current_total[api] = total_calls.to_i
|
21
|
+
end
|
22
|
+
|
23
|
+
def errors error_code
|
24
|
+
log_cat = `cat /var/www/apeyeye/shared/log/apeyeye-access.log | egrep 'GET /soc/net/tw/.*HTTP/1\.[0-1]..#{error_code}' | #{WC_EXEC} -l` rescue 0
|
25
|
+
@current_total[error_code] = log_cat.to_i
|
26
|
+
end
|
27
|
+
|
28
|
+
def rate item
|
29
|
+
@prev_total[item] ||= @current_total[item]
|
30
|
+
rate = @current_total[item].to_i - @prev_total[item].to_i
|
31
|
+
@prev_total[item] = @current_total[item]
|
32
|
+
[0, rate].max
|
33
|
+
end
|
34
|
+
|
35
|
+
def get_metrics metrics, iter, since
|
36
|
+
API_CALLS_TO_MONITOR.each do |api|
|
37
|
+
metrics << [scope_name(hostname, api, 'total_accesses'), calls(api)]
|
38
|
+
metrics << [scope_name(hostname, api, 'accesses'), rate(api)]
|
39
|
+
end
|
40
|
+
ERROR_CODES_TO_MONITOR.each do |code|
|
41
|
+
metrics << [scope_name(hostname, code.gsub('.','x'), 'total_errors'), errors(code)]
|
42
|
+
metrics << [scope_name(hostname, code.gsub('.','x'), 'errors'), rate(code)]
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
warn "Update delay is #{Settings.update_delay} seconds. You probably want something larger: some of these checks are data-intensive" if Settings.update_delay < 60
|
49
|
+
Settings.die "Update delay is #{Settings.update_delay} seconds. You need to radio in at least as often as /usr/local/share/graphite/conf/storage-schemas says -- this is typically 5 minutes." if Settings.update_delay >= 300
|
50
|
+
|
51
|
+
ApiCallMonitor.new('apeyeye', :iters => nil, :time => Settings.update_delay).run!
|
data/examples/file_monitor.rb
CHANGED
data/graphiterb.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{graphiterb}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Philip (flip) Kromer (@mrflip)"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-08-16}
|
13
13
|
s.description = %q{Uses http://github.com/mrflip/configliere and http://graphite.wikidot.com}
|
14
14
|
s.email = %q{info@infochimps.org}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -24,6 +24,12 @@ Gem::Specification.new do |s|
|
|
24
24
|
"README.textile",
|
25
25
|
"Rakefile",
|
26
26
|
"VERSION",
|
27
|
+
"examples/api_call_monitor.rb",
|
28
|
+
"examples/file_monitor.rb",
|
29
|
+
"examples/loadavg_graphite_sender.rb",
|
30
|
+
"examples/run_servers.sh",
|
31
|
+
"examples/storage_monitor.rb",
|
32
|
+
"examples/toy.rb",
|
27
33
|
"graphiterb.gemspec",
|
28
34
|
"lib/graphiterb.rb",
|
29
35
|
"lib/graphiterb/graphite_logger.rb",
|
@@ -42,9 +48,10 @@ Gem::Specification.new do |s|
|
|
42
48
|
s.test_files = [
|
43
49
|
"spec/graphiterb_spec.rb",
|
44
50
|
"spec/spec_helper.rb",
|
45
|
-
"examples/toy.rb",
|
46
51
|
"examples/storage_monitor.rb",
|
52
|
+
"examples/api_call_monitor.rb",
|
47
53
|
"examples/loadavg_graphite_sender.rb",
|
54
|
+
"examples/toy.rb",
|
48
55
|
"examples/file_monitor.rb"
|
49
56
|
]
|
50
57
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphiterb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 5
|
10
|
+
version: 0.1.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Philip (flip) Kromer (@mrflip)
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-08-16 00:00:00 +00:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -65,6 +65,12 @@ files:
|
|
65
65
|
- README.textile
|
66
66
|
- Rakefile
|
67
67
|
- VERSION
|
68
|
+
- examples/api_call_monitor.rb
|
69
|
+
- examples/file_monitor.rb
|
70
|
+
- examples/loadavg_graphite_sender.rb
|
71
|
+
- examples/run_servers.sh
|
72
|
+
- examples/storage_monitor.rb
|
73
|
+
- examples/toy.rb
|
68
74
|
- graphiterb.gemspec
|
69
75
|
- lib/graphiterb.rb
|
70
76
|
- lib/graphiterb/graphite_logger.rb
|
@@ -74,10 +80,6 @@ files:
|
|
74
80
|
- spec/graphiterb_spec.rb
|
75
81
|
- spec/spec.opts
|
76
82
|
- spec/spec_helper.rb
|
77
|
-
- examples/toy.rb
|
78
|
-
- examples/storage_monitor.rb
|
79
|
-
- examples/loadavg_graphite_sender.rb
|
80
|
-
- examples/file_monitor.rb
|
81
83
|
has_rdoc: true
|
82
84
|
homepage: http://github.com/infochimps/graphiterb
|
83
85
|
licenses: []
|
@@ -115,7 +117,8 @@ summary: Fast Ubiquitous Dashboard Logs with Graphite (http://graphite.wikidot.c
|
|
115
117
|
test_files:
|
116
118
|
- spec/graphiterb_spec.rb
|
117
119
|
- spec/spec_helper.rb
|
118
|
-
- examples/toy.rb
|
119
120
|
- examples/storage_monitor.rb
|
121
|
+
- examples/api_call_monitor.rb
|
120
122
|
- examples/loadavg_graphite_sender.rb
|
123
|
+
- examples/toy.rb
|
121
124
|
- examples/file_monitor.rb
|