librato-rack 0.4.0 → 0.4.1
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.tar.gz.sig +0 -0
- data/CHANGELOG.md +5 -0
- data/lib/librato/rack.rb +2 -2
- data/lib/librato/rack/configuration.rb +17 -11
- data/lib/librato/rack/logger.rb +1 -1
- data/lib/librato/rack/tracker.rb +36 -21
- data/lib/librato/rack/version.rb +1 -1
- data/test/unit/rack/logger_test.rb +1 -1
- metadata +4 -4
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG.md
CHANGED
data/lib/librato/rack.rb
CHANGED
@@ -41,14 +41,14 @@ module Librato
|
|
41
41
|
|
42
42
|
def initialize(app, options={})
|
43
43
|
old_style = false
|
44
|
-
if options.respond_to?(:
|
44
|
+
if options.respond_to?(:log_level) # old-style single argument
|
45
45
|
config = options
|
46
46
|
old_style = true
|
47
47
|
else
|
48
48
|
config = options.fetch(:config, Configuration.new)
|
49
49
|
end
|
50
50
|
@app, @config = app, config
|
51
|
-
@tracker = Tracker.new(@config)
|
51
|
+
@tracker = @config.tracker || Tracker.new(@config)
|
52
52
|
Librato.register_tracker(@tracker) # create global reference
|
53
53
|
|
54
54
|
if old_style
|
@@ -13,8 +13,8 @@ module Librato
|
|
13
13
|
EVENT_MODES = [:eventmachine, :synchrony]
|
14
14
|
|
15
15
|
attr_accessor :user, :token, :autorun, :api_endpoint, :tracker,
|
16
|
-
:source_pids, :log_level, :
|
17
|
-
:disable_rack_metrics
|
16
|
+
:source_pids, :log_level, :log_prefix, :log_target,
|
17
|
+
:disable_rack_metrics, :flush_interval
|
18
18
|
attr_reader :prefix, :source, :deprecations
|
19
19
|
|
20
20
|
def initialize
|
@@ -23,18 +23,11 @@ module Librato
|
|
23
23
|
self.api_endpoint = Librato::Metrics.api_endpoint
|
24
24
|
self.flush_interval = 60
|
25
25
|
self.source_pids = false
|
26
|
+
self.log_prefix = '[librato-rack] '
|
26
27
|
@listeners = []
|
27
28
|
@deprecations = []
|
28
29
|
|
29
|
-
|
30
|
-
self.user = ENV['LIBRATO_USER'] || ENV['LIBRATO_METRICS_USER']
|
31
|
-
self.token = ENV['LIBRATO_TOKEN'] || ENV['LIBRATO_METRICS_TOKEN']
|
32
|
-
self.autorun = detect_autorun
|
33
|
-
self.prefix = ENV['LIBRATO_PREFIX'] || ENV['LIBRATO_METRICS_PREFIX']
|
34
|
-
self.source = ENV['LIBRATO_SOURCE'] || ENV['LIBRATO_METRICS_SOURCE']
|
35
|
-
self.log_level = ENV['LIBRATO_LOG_LEVEL'] || :info
|
36
|
-
self.event_mode = ENV['LIBRATO_EVENT_MODE']
|
37
|
-
check_deprecations
|
30
|
+
load_configuration
|
38
31
|
end
|
39
32
|
|
40
33
|
def event_mode
|
@@ -57,6 +50,19 @@ module Librato
|
|
57
50
|
!!@explicit_source
|
58
51
|
end
|
59
52
|
|
53
|
+
# check environment variables and capture current state
|
54
|
+
# for configuration
|
55
|
+
def load_configuration
|
56
|
+
self.user = ENV['LIBRATO_USER'] || ENV['LIBRATO_METRICS_USER']
|
57
|
+
self.token = ENV['LIBRATO_TOKEN'] || ENV['LIBRATO_METRICS_TOKEN']
|
58
|
+
self.autorun = detect_autorun
|
59
|
+
self.prefix = ENV['LIBRATO_PREFIX'] || ENV['LIBRATO_METRICS_PREFIX']
|
60
|
+
self.source = ENV['LIBRATO_SOURCE'] || ENV['LIBRATO_METRICS_SOURCE']
|
61
|
+
self.log_level = ENV['LIBRATO_LOG_LEVEL'] || :info
|
62
|
+
self.event_mode = ENV['LIBRATO_EVENT_MODE']
|
63
|
+
check_deprecations
|
64
|
+
end
|
65
|
+
|
60
66
|
def prefix=(prefix)
|
61
67
|
@prefix = prefix
|
62
68
|
@listeners.each { |l| l.prefix = prefix }
|
data/lib/librato/rack/logger.rb
CHANGED
data/lib/librato/rack/tracker.rb
CHANGED
@@ -25,7 +25,7 @@ module Librato
|
|
25
25
|
# thread will not pass with the fork
|
26
26
|
def check_worker
|
27
27
|
return if @worker # already running
|
28
|
-
return
|
28
|
+
return unless start_worker?
|
29
29
|
log(:debug) { "config: #{config.dump}" }
|
30
30
|
@pid = $$
|
31
31
|
log(:debug) { ">> starting up worker for pid #{@pid}..." }
|
@@ -65,6 +65,23 @@ module Librato
|
|
65
65
|
config.source_pids ? "#{source}.#{$$}" : source
|
66
66
|
end
|
67
67
|
|
68
|
+
# given current state, should the tracker start a reporter thread?
|
69
|
+
def should_start?
|
70
|
+
if !config.user || !config.token
|
71
|
+
# don't show this unless we're debugging, expected behavior
|
72
|
+
log :debug, 'halting: credentials not present.'
|
73
|
+
elsif config.autorun == false
|
74
|
+
log :debug, 'halting: LIBRATO_AUTORUN disabled startup'
|
75
|
+
elsif qualified_source !~ SOURCE_REGEX
|
76
|
+
log :warn, "halting: '#{qualified_source}' is an invalid source name."
|
77
|
+
elsif on_heroku && !config.explicit_source?
|
78
|
+
log :warn, 'halting: source must be provided in configuration.'
|
79
|
+
else
|
80
|
+
return true
|
81
|
+
end
|
82
|
+
false
|
83
|
+
end
|
84
|
+
|
68
85
|
# change output stream for logging
|
69
86
|
def update_log_target(target)
|
70
87
|
logger.outlet = target
|
@@ -110,6 +127,7 @@ module Librato
|
|
110
127
|
return @logger if @logger
|
111
128
|
@logger = Logger.new(config.log_target)
|
112
129
|
@logger.log_level = config.log_level
|
130
|
+
@logger.prefix = config.log_prefix
|
113
131
|
@logger
|
114
132
|
end
|
115
133
|
|
@@ -129,34 +147,31 @@ module Librato
|
|
129
147
|
RUBY_DESCRIPTION.split[0]
|
130
148
|
end
|
131
149
|
|
132
|
-
def should_start?
|
133
|
-
return false if @pid_checked == $$ # only check once per process
|
134
|
-
@pid_checked = $$
|
135
|
-
if !config.user || !config.token
|
136
|
-
# don't show this unless we're debugging, expected behavior
|
137
|
-
log :debug, 'halting: credentials not present.'
|
138
|
-
elsif config.autorun == false
|
139
|
-
log :debug, 'halting: LIBRATO_AUTORUN disabled startup'
|
140
|
-
elsif qualified_source !~ SOURCE_REGEX
|
141
|
-
log :warn, "halting: '#{qualified_source}' is an invalid source name."
|
142
|
-
elsif on_heroku && !config.explicit_source?
|
143
|
-
log :warn, 'halting: source must be provided in configuration.'
|
144
|
-
else
|
145
|
-
return true
|
146
|
-
end
|
147
|
-
false
|
148
|
-
end
|
149
|
-
|
150
150
|
def source
|
151
151
|
@source ||= (config.source || Socket.gethostname).downcase
|
152
152
|
end
|
153
153
|
|
154
|
+
# should we spin up a worker? wrap this in a process check
|
155
|
+
# so we only actually check once per process. this allows us
|
156
|
+
# to check again if the process forks.
|
157
|
+
def start_worker?
|
158
|
+
if @pid_checked == $$
|
159
|
+
false
|
160
|
+
else
|
161
|
+
@pid_checked = $$
|
162
|
+
should_start?
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
154
166
|
def user_agent
|
155
|
-
ua_chunks = []
|
156
|
-
ua_chunks << "librato-rack/#{Librato::Rack::VERSION}"
|
167
|
+
ua_chunks = [version_string]
|
157
168
|
ua_chunks << "(#{ruby_engine}; #{RUBY_VERSION}p#{RUBY_PATCHLEVEL}; #{RUBY_PLATFORM})"
|
158
169
|
ua_chunks.join(' ')
|
159
170
|
end
|
171
|
+
|
172
|
+
def version_string
|
173
|
+
"librato-rack/#{Librato::Rack::VERSION}"
|
174
|
+
end
|
160
175
|
end
|
161
176
|
end
|
162
177
|
end
|
data/lib/librato/rack/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: librato-rack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -37,7 +37,7 @@ cert_chain:
|
|
37
37
|
bktaNmhlblFBRjFDSDk2WmNxY0pIMTc5UzJ0SWlLRE04a2VlUklVT1BDM1dU
|
38
38
|
MGZhb2svMgpnQTJvemRyODUxYy9uQT09Ci0tLS0tRU5EIENFUlRJRklDQVRF
|
39
39
|
LS0tLS0K
|
40
|
-
date: 2013-08-
|
40
|
+
date: 2013-08-21 00:00:00.000000000 Z
|
41
41
|
dependencies:
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: librato-metrics
|
@@ -131,7 +131,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
131
131
|
version: '0'
|
132
132
|
segments:
|
133
133
|
- 0
|
134
|
-
hash:
|
134
|
+
hash: 3171702989332283637
|
135
135
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
136
|
none: false
|
137
137
|
requirements:
|
@@ -140,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
140
140
|
version: '0'
|
141
141
|
segments:
|
142
142
|
- 0
|
143
|
-
hash:
|
143
|
+
hash: 3171702989332283637
|
144
144
|
requirements: []
|
145
145
|
rubyforge_project:
|
146
146
|
rubygems_version: 1.8.23
|
metadata.gz.sig
CHANGED
Binary file
|