canvas_statsd 1.0.1 → 1.0.2
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.
- checksums.yaml +4 -4
- data/lib/canvas_statsd.rb +2 -0
- data/lib/canvas_statsd/default_tracking.rb +3 -1
- data/lib/canvas_statsd/null_logger.rb +11 -0
- data/lib/canvas_statsd/request_logger.rb +34 -0
- data/spec/canvas_statsd/default_tracking_spec.rb +7 -0
- data/spec/canvas_statsd/null_logger_spec.rb +23 -0
- data/spec/canvas_statsd/request_logger_spec.rb +54 -0
- data/spec/support/test.log +0 -0
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f4d82332ae38bf5817fccb8a0bc7558427e9bc1c
|
4
|
+
data.tar.gz: b007d80588d91577b3997008fe236386e86551c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 623fdba2e7573d930fa7ae361703957e32ad476a270e3ca6b27116e1ca63e6b2866a55c76cfb2c53f56416e3453133d3055de62153719350d5d6753727f077e2
|
7
|
+
data.tar.gz: c4b10a26a2bdec126571e3128ae68a68060f550eb05178e25c30a99b595a17f715110d73244e35bd024ec64814840c2944ad6846c23d564bcd44ef1692819656
|
data/lib/canvas_statsd.rb
CHANGED
@@ -8,6 +8,8 @@ module CanvasStatsd
|
|
8
8
|
require "canvas_statsd/counter"
|
9
9
|
require "canvas_statsd/sql_tracker"
|
10
10
|
require "canvas_statsd/default_tracking"
|
11
|
+
require "canvas_statsd/request_logger"
|
12
|
+
require "canvas_statsd/null_logger"
|
11
13
|
|
12
14
|
def self.settings
|
13
15
|
@settings || env_settings
|
@@ -5,7 +5,8 @@ module CanvasStatsd
|
|
5
5
|
@sql_tracker = CanvasStatsd::SqlTracker.new(blocked_names: ['SCHEMA'])
|
6
6
|
|
7
7
|
def self.track_default_metrics(options={})
|
8
|
-
options = {sql: true, active_record: true}.merge(options)
|
8
|
+
options = {sql: true, active_record: true, logger: nil}.merge(options)
|
9
|
+
@logger = RequestLogger.new(options[:logger])
|
9
10
|
track_timing
|
10
11
|
track_sql if !!options[:sql]
|
11
12
|
track_active_record if !!options[:active_record]
|
@@ -57,6 +58,7 @@ module CanvasStatsd
|
|
57
58
|
request_stat.sql_write_count = @sql_tracker.num_writes if @tracking_sql
|
58
59
|
request_stat.sql_cache_count = @sql_tracker.num_caches if @tracking_sql
|
59
60
|
request_stat.report
|
61
|
+
@logger.log(request_stat)
|
60
62
|
end
|
61
63
|
|
62
64
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module CanvasStatsd
|
2
|
+
class RequestLogger
|
3
|
+
|
4
|
+
VALUES_MAP = {
|
5
|
+
total: :ms,
|
6
|
+
view: :view_runtime,
|
7
|
+
db: :db_runtime,
|
8
|
+
sql_read: :sql_read_count,
|
9
|
+
sql_write: :sql_write_count,
|
10
|
+
sql_cache: :sql_cache_count,
|
11
|
+
active_record: :ar_count
|
12
|
+
}.freeze
|
13
|
+
|
14
|
+
|
15
|
+
def initialize(logger)
|
16
|
+
@logger = logger || CanvasStatsd::NullLogger.new
|
17
|
+
end
|
18
|
+
|
19
|
+
def log(request_stat, header=nil)
|
20
|
+
@logger.info(build_log_message(request_stat, header))
|
21
|
+
end
|
22
|
+
|
23
|
+
def build_log_message(request_stat, header=nil)
|
24
|
+
header ||= "STATSD"
|
25
|
+
message = "[#{header}]"
|
26
|
+
VALUES_MAP.each do |k,v|
|
27
|
+
value = request_stat.respond_to?(v) ? request_stat.send(v) : nil
|
28
|
+
message += " (#{k}: #{value})" if value
|
29
|
+
end
|
30
|
+
message
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
@@ -20,6 +20,13 @@ describe CanvasStatsd::DefaultTracking do
|
|
20
20
|
expect(CanvasStatsd::DefaultTracking).not_to receive(:track_active_record)
|
21
21
|
CanvasStatsd::DefaultTracking.track_default_metrics active_record: false
|
22
22
|
end
|
23
|
+
|
24
|
+
it 'should delegate log messages to the optional logger' do
|
25
|
+
log_double = double()
|
26
|
+
expect(log_double).to receive(:info)
|
27
|
+
CanvasStatsd::DefaultTracking.track_default_metrics logger: log_double
|
28
|
+
CanvasStatsd::DefaultTracking.finalize_processing('name', 1000, 10001, 1234, {})
|
29
|
+
end
|
23
30
|
end
|
24
31
|
|
25
32
|
describe '#track_active_record' do
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe CanvasStatsd::NullLogger do
|
4
|
+
|
5
|
+
describe 'initialize' do
|
6
|
+
it 'takes any arguments' do
|
7
|
+
expect{CanvasStatsd::NullLogger.new}.to_not raise_error
|
8
|
+
expect{CanvasStatsd::NullLogger.new(1, 2, 3)}.to_not raise_error
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe 'debug, info, warn, fatal, and unknown' do
|
13
|
+
it 'should all no-op instead of logging' do
|
14
|
+
log_path = 'spec/support/test.log'
|
15
|
+
File.open(log_path, 'w') { |f| f.write('') } # empty log file
|
16
|
+
logger = CanvasStatsd::NullLogger.new(log_path)
|
17
|
+
%w[debug info warn error fatal unknown].each { |m| logger.send(m, 'foo') }
|
18
|
+
log_contents = File.read(log_path)
|
19
|
+
expect(log_contents).to eq ''
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'logger'
|
3
|
+
|
4
|
+
describe CanvasStatsd::RequestLogger do
|
5
|
+
|
6
|
+
describe '#build_log_message' do
|
7
|
+
before :all do
|
8
|
+
@logger = CanvasStatsd::RequestLogger.new(Logger.new(STDOUT))
|
9
|
+
end
|
10
|
+
it 'should include the supplied header' do
|
11
|
+
request_stat = double('request_stat')
|
12
|
+
results = @logger.build_log_message(request_stat, 'FOO_STATS')
|
13
|
+
expect(results).to eq("[FOO_STATS]")
|
14
|
+
end
|
15
|
+
it 'should fallback to the default header' do
|
16
|
+
request_stat = double('request_stat')
|
17
|
+
results = @logger.build_log_message(request_stat)
|
18
|
+
expect(results).to eq("[STATSD]")
|
19
|
+
end
|
20
|
+
it 'should include stats that are available' do
|
21
|
+
request_stat = double('request_stat')
|
22
|
+
request_stat.stub(:ms).and_return(100.2)
|
23
|
+
request_stat.stub(:ar_count).and_return(24)
|
24
|
+
results = @logger.build_log_message(request_stat)
|
25
|
+
expect(results).to eq("[STATSD] (total: 100.2) (active_record: 24)")
|
26
|
+
end
|
27
|
+
it 'should not include nil stats' do
|
28
|
+
request_stat = double('request_stat')
|
29
|
+
request_stat.stub(:ms).and_return(100.2)
|
30
|
+
request_stat.stub(:ar_count).and_return(nil)
|
31
|
+
results = @logger.build_log_message(request_stat)
|
32
|
+
expect(results).to eq("[STATSD] (total: 100.2)")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '#log' do
|
37
|
+
it 'should send info method to logger if logger exists' do
|
38
|
+
std_out_logger = Logger.new(STDOUT)
|
39
|
+
logger = CanvasStatsd::RequestLogger.new(std_out_logger)
|
40
|
+
expect(std_out_logger).to receive(:info)
|
41
|
+
request_stat = double('request_stat')
|
42
|
+
logger.log(request_stat)
|
43
|
+
end
|
44
|
+
it 'should send info method with build_log_message output if logger exists' do
|
45
|
+
std_out_logger = Logger.new(STDOUT)
|
46
|
+
logger = CanvasStatsd::RequestLogger.new(std_out_logger)
|
47
|
+
expect(std_out_logger).to receive(:info).with("[DEFAULT_METRICS] (total: 100.2)")
|
48
|
+
request_stat = double('request_stat')
|
49
|
+
request_stat.stub(:ms).and_return(100.2)
|
50
|
+
logger.log(request_stat, "DEFAULT_METRICS")
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
File without changes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: canvas_statsd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Cloward
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: statsd-ruby
|
@@ -90,16 +90,21 @@ files:
|
|
90
90
|
- lib/canvas_statsd.rb
|
91
91
|
- lib/canvas_statsd/counter.rb
|
92
92
|
- lib/canvas_statsd/default_tracking.rb
|
93
|
+
- lib/canvas_statsd/null_logger.rb
|
94
|
+
- lib/canvas_statsd/request_logger.rb
|
93
95
|
- lib/canvas_statsd/request_stat.rb
|
94
96
|
- lib/canvas_statsd/sql_tracker.rb
|
95
97
|
- lib/canvas_statsd/statsd.rb
|
96
98
|
- spec/canvas_statsd/canvas_statsd_spec.rb
|
97
99
|
- spec/canvas_statsd/counter_spec.rb
|
98
100
|
- spec/canvas_statsd/default_tracking_spec.rb
|
101
|
+
- spec/canvas_statsd/null_logger_spec.rb
|
102
|
+
- spec/canvas_statsd/request_logger_spec.rb
|
99
103
|
- spec/canvas_statsd/request_stat_spec.rb
|
100
104
|
- spec/canvas_statsd/sql_tracker_spec.rb
|
101
105
|
- spec/canvas_statsd/statsd_spec.rb
|
102
106
|
- spec/spec_helper.rb
|
107
|
+
- spec/support/test.log
|
103
108
|
- test.sh
|
104
109
|
homepage: https://github.com/instructure/canvas_statsd
|
105
110
|
licenses:
|
@@ -129,8 +134,11 @@ test_files:
|
|
129
134
|
- spec/canvas_statsd/canvas_statsd_spec.rb
|
130
135
|
- spec/canvas_statsd/counter_spec.rb
|
131
136
|
- spec/canvas_statsd/default_tracking_spec.rb
|
137
|
+
- spec/canvas_statsd/null_logger_spec.rb
|
138
|
+
- spec/canvas_statsd/request_logger_spec.rb
|
132
139
|
- spec/canvas_statsd/request_stat_spec.rb
|
133
140
|
- spec/canvas_statsd/sql_tracker_spec.rb
|
134
141
|
- spec/canvas_statsd/statsd_spec.rb
|
135
142
|
- spec/spec_helper.rb
|
143
|
+
- spec/support/test.log
|
136
144
|
has_rdoc:
|