scout 5.0.3 → 5.1.0

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/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ == 5.1.0
2
+
3
+ * Agent now reports data on initial install
4
+ * If history file is empty, Agent will resume normal checkin when it can write history file again (thx @jnewland)
5
+ * inclusion of counter functionality (thx @lindvall)
6
+
1
7
  == 5.0.3
2
8
 
3
9
  * fixed regression: Error when running `scout AGENT_KEY` without first running scout and manually entering the agent key
@@ -22,7 +22,10 @@ module Scout
22
22
 
23
23
  puts "\nAttempting to contact the server..."
24
24
  begin
25
- Scout::Server.new(server, key, history, log) { |scout| scout.fetch_plan }
25
+ Scout::Server.new(server, key, history, log) do |scout|
26
+ scout.fetch_plan
27
+ scout.run_plugins_by_plan
28
+ end
26
29
 
27
30
  puts <<-END_SUCCESS.gsub(/^ {10}/, "")
28
31
  Success!
data/lib/scout/command.rb CHANGED
@@ -218,7 +218,7 @@ module Scout
218
218
  if running
219
219
  if pid == "unknown"
220
220
  log.warn "Could not create or read PID file. " +
221
- "You may need to the path to the config directory. " +
221
+ "You may need to specify the path to the config directory. " +
222
222
  "See: http://scoutapp.com/help#data_file" if log
223
223
  else
224
224
  log.warn "Process #{pid} was already running" if log
data/lib/scout/plugin.rb CHANGED
@@ -155,6 +155,52 @@ module Scout
155
155
  (0...other.size).step(2) { |i| memory.merge!(other[i] => other[i + 1]) }
156
156
  end
157
157
 
158
+ #
159
+ # Usage:
160
+ #
161
+ # counter(:rkbps, stats['rsect'] / 2, :per => :second)
162
+ # counter(:rpm, request_counter, :per => :minute)
163
+ # counter(:swap_ins, vmstat['pswpin'], :per => :second, :round => true)
164
+ #
165
+ def counter(name, value, options = {}, &block)
166
+ current_time = Time.now
167
+
168
+ if data = memory("_counter_#{name}")
169
+ last_time, last_value = data[:time], data[:value]
170
+ elapsed_seconds = current_time - last_time
171
+
172
+ # We won't log it if the value has wrapped or enough time hasn't
173
+ # elapsed
174
+ if value >= last_value && elapsed_seconds >= 1
175
+ if block
176
+ result = block.call(last_value, value)
177
+ else
178
+ result = value - last_value
179
+ end
180
+
181
+ case options[:per]
182
+ when :second, 'second'
183
+ result = result / elapsed_seconds.to_f
184
+ when :minute, 'minute'
185
+ result = result / elapsed_seconds.to_f / 60.0
186
+ else
187
+ raise "Unknown option for ':per': #{options[:per].inspect}"
188
+ end
189
+
190
+ if options[:round]
191
+ # Backward compatibility
192
+ options[:round] = 1 if options[:round] == true
193
+
194
+ result = (result * (10 ** options[:round])).round / (10 ** options[:round]).to_f
195
+ end
196
+
197
+ report(name => result)
198
+ end
199
+ end
200
+
201
+ remember("_counter_#{name}" => { :time => current_time, :value => value })
202
+ end
203
+
158
204
  #
159
205
  # Old plugins will work because they override this method. New plugins can
160
206
  # now leave this method in place, add a build_report() method instead, and
data/lib/scout/server.rb CHANGED
@@ -67,7 +67,7 @@ module Scout
67
67
  def fetch_plan
68
68
  url = urlify(:plan)
69
69
  info "Pinging server at #{url}..."
70
- headers = Hash.new
70
+ headers = {"x_scout_tty" => ($stdin.tty? ? 'true' : 'false')}
71
71
  if @history["plan_last_modified"] and @history["old_plugins"]
72
72
  headers["If-Modified-Since"] = @history["plan_last_modified"]
73
73
  end
@@ -291,7 +291,7 @@ module Scout
291
291
  # it creates one.
292
292
  #
293
293
  def load_history
294
- unless File.exist? @history_file
294
+ if !File.exist?(@history_file) || File.zero?(@history_file)
295
295
  create_blank_history
296
296
  end
297
297
  debug "Loading history file..."
data/lib/scout.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby -wKU
2
2
 
3
3
  module Scout
4
- VERSION = "5.0.3".freeze
4
+ VERSION = "5.1.0".freeze
5
5
  end
6
6
 
7
7
  require "scout/command"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scout
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.3
4
+ version: 5.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Highgroove Studios
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-30 00:00:00 -08:00
12
+ date: 2010-02-23 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency