scout 5.5.8.pre → 5.5.8
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.markdown +2 -1
- data/README.markdown +10 -9
- data/lib/scout/server.rb +25 -1
- data/lib/scout/version.rb +1 -1
- data/test/scout_test.rb +12 -0
- metadata +7 -7
data/CHANGELOG.markdown
CHANGED
data/README.markdown
CHANGED
|
@@ -22,38 +22,39 @@ Normal checkin with server:
|
|
|
22
22
|
|
|
23
23
|
$ scout [OPTIONS] SERVER_KEY
|
|
24
24
|
|
|
25
|
+
`SERVER_KEY` is the identification key assigned by your account at http://scoutapp.com.
|
|
26
|
+
|
|
25
27
|
Install:
|
|
26
28
|
|
|
27
29
|
$ scout
|
|
28
30
|
$ scout [OPTIONS] install
|
|
29
|
-
|
|
31
|
+
|
|
30
32
|
Local plugin testing:
|
|
31
33
|
|
|
32
34
|
$ scout [OPTIONS] test PATH_TO_PLUGIN [PLUGIN_OPTIONS]
|
|
33
35
|
|
|
34
|
-
|
|
35
|
-
`SERVER_KEY` is the identification key assigned by your account at http://scoutapp.com.
|
|
36
|
-
|
|
37
36
|
`PATH_TO_PLUGIN` is the file system path to a Ruby file that contains a Scout plugin.
|
|
38
37
|
|
|
39
38
|
`PLUGIN_OPTIONS` are one or more options in the form:
|
|
40
39
|
|
|
41
40
|
key1=val1 key2=val2
|
|
42
41
|
|
|
43
|
-
These options will be used for the plugin run.
|
|
42
|
+
These options will be used for the plugin run. [Lean more about creating your own plugins](https://scoutapp.com/info/creating_a_plugin).
|
|
43
|
+
|
|
44
|
+
For a full list of options:
|
|
45
|
+
|
|
46
|
+
scout --help
|
|
44
47
|
|
|
45
48
|
## Setting up in Cron
|
|
46
49
|
|
|
47
50
|
Configure Scout to run every minute. Typically, this will look like:
|
|
48
51
|
|
|
49
52
|
* * * * * deploy /usr/bin/scout SERVER_KEY
|
|
50
|
-
|
|
51
|
-
It's often helpful to log the output to a file. To do so:
|
|
52
|
-
|
|
53
|
-
* * * * * deploy /usr/bin/scout SERVER_KEY > /path/to/anywhere/scout.out 2>&1
|
|
54
53
|
|
|
55
54
|
## Troubleshooting
|
|
56
55
|
|
|
56
|
+
The `scout troubleshoot` command provides useful troubleshooting information (log of the last run, environment information, and the list of gems).
|
|
57
|
+
|
|
57
58
|
Extensive help is available via our website (http://scoutapp.com) and while installing the agent via the Scout web UI.
|
|
58
59
|
|
|
59
60
|
## Credits / Contact
|
data/lib/scout/server.rb
CHANGED
|
@@ -24,6 +24,7 @@ module Scout
|
|
|
24
24
|
attr_reader :directives
|
|
25
25
|
attr_reader :plugin_config
|
|
26
26
|
attr_reader :streamer_command
|
|
27
|
+
attr_reader :client_key
|
|
27
28
|
|
|
28
29
|
# Creates a new Scout Server connection.
|
|
29
30
|
def initialize(server, client_key, history_file, logger = nil, server_name=nil, http_proxy='', https_proxy='')
|
|
@@ -201,6 +202,27 @@ module Scout
|
|
|
201
202
|
(@history['directives'] || {})['ping_key']
|
|
202
203
|
end
|
|
203
204
|
|
|
205
|
+
def client_key_changed?
|
|
206
|
+
last_client_key=@history['last_client_key']
|
|
207
|
+
# last_client_key will be nil on versions <= 5.5.7. when the agent runs after the upgrade, it will no longer
|
|
208
|
+
# be nil. don't want to aggressively reset the history file as it clears out memory values which may impact alerts.
|
|
209
|
+
if last_client_key and client_key != last_client_key
|
|
210
|
+
warn "The key associated with the history file has changed [#{last_client_key}] => [#{client_key}]."
|
|
211
|
+
true
|
|
212
|
+
else
|
|
213
|
+
false
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
# need to load the history file first to determine if the key changed.
|
|
218
|
+
# if it has, reset.
|
|
219
|
+
def recreate_history_if_client_key_changed
|
|
220
|
+
if client_key_changed?
|
|
221
|
+
create_blank_history
|
|
222
|
+
@history = YAML.load(File.read(@history_file))
|
|
223
|
+
end
|
|
224
|
+
end
|
|
225
|
+
|
|
204
226
|
# Returns the Scout public key for code verification.
|
|
205
227
|
def scout_public_key
|
|
206
228
|
return @scout_public_key if instance_variables.include?('@scout_public_key')
|
|
@@ -499,6 +521,7 @@ module Scout
|
|
|
499
521
|
backup_history_and_recreate(contents,
|
|
500
522
|
"Couldn't parse the history file. Deleting it and resetting to an empty history file. Keeping a backup.")
|
|
501
523
|
end
|
|
524
|
+
recreate_history_if_client_key_changed
|
|
502
525
|
# YAML interprets an empty file as false. This condition catches that
|
|
503
526
|
if !@history
|
|
504
527
|
info "There is a problem with the history file at '#{@history_file}'. The root cause is sometimes a full disk. "+
|
|
@@ -523,7 +546,7 @@ module Scout
|
|
|
523
546
|
def create_blank_history
|
|
524
547
|
debug "Creating empty history file..."
|
|
525
548
|
File.open(@history_file, "w") do |file|
|
|
526
|
-
YAML.dump({"last_runs" => Hash.new, "memory" => Hash.new}, file)
|
|
549
|
+
YAML.dump({"last_runs" => Hash.new, "memory" => Hash.new, "last_client_key" => client_key}, file)
|
|
527
550
|
end
|
|
528
551
|
info "History file created."
|
|
529
552
|
end
|
|
@@ -534,6 +557,7 @@ module Scout
|
|
|
534
557
|
# Ensures reads on the history file don't see a partial write.
|
|
535
558
|
def save_history
|
|
536
559
|
debug "Saving history file..."
|
|
560
|
+
@history['last_client_key'] = client_key
|
|
537
561
|
File.open(@history_tmp_file, "w") { |file| YAML.dump(@history, file) }
|
|
538
562
|
FileUtils.mv(@history_tmp_file, @history_file)
|
|
539
563
|
info "History file saved."
|
data/lib/scout/version.rb
CHANGED
data/test/scout_test.rb
CHANGED
|
@@ -123,6 +123,18 @@ class ScoutTest < Test::Unit::TestCase
|
|
|
123
123
|
scout(@client.key)
|
|
124
124
|
assert File.read(AGENT_LOG).size > log_file_size, "log should be longer after ping"
|
|
125
125
|
end
|
|
126
|
+
|
|
127
|
+
def test_should_reset_history_on_key_change
|
|
128
|
+
test_should_run_first_time
|
|
129
|
+
data=YAML::load(File.read(PATH_TO_DATA_FILE))
|
|
130
|
+
assert_equal @client.ping_key, data['directives']['ping_key']
|
|
131
|
+
assert_equal @client.key, data['last_client_key']
|
|
132
|
+
sleep 1
|
|
133
|
+
exec_scout('INVALIDKEY')
|
|
134
|
+
data=YAML::load(File.read(PATH_TO_DATA_FILE))
|
|
135
|
+
assert_equal 'INVALIDKEY', data['last_client_key']
|
|
136
|
+
assert_nil data['directives']
|
|
137
|
+
end
|
|
126
138
|
|
|
127
139
|
def test_should_use_name_option
|
|
128
140
|
scout(@client.key,'--name=My New Server')
|
metadata
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: scout
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.5.8
|
|
5
|
-
prerelease:
|
|
4
|
+
version: 5.5.8
|
|
5
|
+
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
8
8
|
- Andre Lewis
|
|
@@ -11,11 +11,11 @@ authors:
|
|
|
11
11
|
autorequire:
|
|
12
12
|
bindir: bin
|
|
13
13
|
cert_chain: []
|
|
14
|
-
date: 2012-09-
|
|
14
|
+
date: 2012-09-10 00:00:00.000000000 Z
|
|
15
15
|
dependencies:
|
|
16
16
|
- !ruby/object:Gem::Dependency
|
|
17
17
|
name: elif
|
|
18
|
-
requirement: &
|
|
18
|
+
requirement: &2157721580 !ruby/object:Gem::Requirement
|
|
19
19
|
none: false
|
|
20
20
|
requirements:
|
|
21
21
|
- - ! '>='
|
|
@@ -23,7 +23,7 @@ dependencies:
|
|
|
23
23
|
version: '0'
|
|
24
24
|
type: :runtime
|
|
25
25
|
prerelease: false
|
|
26
|
-
version_requirements: *
|
|
26
|
+
version_requirements: *2157721580
|
|
27
27
|
description: ! 'Scout makes monitoring and reporting on your web applications as flexible
|
|
28
28
|
and simple as possible.
|
|
29
29
|
|
|
@@ -232,9 +232,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
232
232
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
233
233
|
none: false
|
|
234
234
|
requirements:
|
|
235
|
-
- - ! '
|
|
235
|
+
- - ! '>='
|
|
236
236
|
- !ruby/object:Gem::Version
|
|
237
|
-
version:
|
|
237
|
+
version: '0'
|
|
238
238
|
requirements: []
|
|
239
239
|
rubyforge_project: scout
|
|
240
240
|
rubygems_version: 1.8.10
|