heroku_mongo_watcher 0.0.1.alpha → 0.0.2.alpha
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/README.md +30 -0
- data/example/.watcher +4 -1
- data/lib/heroku_mongo_watcher/cli.rb +15 -6
- data/lib/heroku_mongo_watcher/configuration.rb +2 -1
- data/lib/heroku_mongo_watcher/version.rb +1 -1
- metadata +8 -7
data/README.md
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# Heroku Mongo Watcher
|
2
|
+
|
3
|
+
I needed to find a way to marry mongo stats with my application stats
|
4
|
+
|
5
|
+
It needed to accomplish the following:
|
6
|
+
|
7
|
+
* See Mongostats and heroku stats at the same time, the key ones being requests per minute, average response time and lock %
|
8
|
+
* Have multiple ways of notifying me: colors, beeps and email notifications
|
9
|
+
* Be able to parse the web log for certain errors and other logged events and aggregate data on them
|
10
|
+
|
11
|
+
The output looks like the following ...
|
12
|
+
|
13
|
+
|<---- heroku stats ------------------------------------------------------------>|<----mongo stats ------------------------------------------------------->|
|
14
|
+
dyno reqs art max r_err w_err wait queue slowest | insert query update faults locked qr|qw netIn netOut time |
|
15
|
+
20 76 27 586 0 0 0 0 /pxl/4fdbc97dc6b36c003000| 0 0 0 0 0 0|0 305b 257b 15:03:19
|
16
|
+
20 1592 62 1292 0 0 0 0 /assets/companions/5009ab| 17 2 32 0 1.2 0|0 14k 26k 15:04:19
|
17
|
+
[4] VAST Error
|
18
|
+
[28] Timeout::Error
|
19
|
+
[11] Cannot find impression when looking for asset
|
20
|
+
20 23935 190 7144 0 43 0 0 /crossdomain.xml| 307 0 618 1 21.6 0|0 260k 221k 15:05:19
|
21
|
+
|
22
|
+
## Prereqs
|
23
|
+
|
24
|
+
1. need to have a heroku account, and have the heroku gem running on your machine
|
25
|
+
|
26
|
+
## To install
|
27
|
+
|
28
|
+
1. bundle install heroku_mongo_watcher
|
29
|
+
2. create a .watcher file (see the examples) in your user directory ~/.watcher
|
30
|
+
3. then run `bundle exec watcher`
|
data/example/.watcher
CHANGED
@@ -23,4 +23,7 @@ mongo_password: 'skret'
|
|
23
23
|
heroku_appname: 'my-heroku-app-name'
|
24
24
|
|
25
25
|
#if you have multiple accounts
|
26
|
-
heroku_account: 'my-heroku-account'
|
26
|
+
heroku_account: 'my-heroku-account'
|
27
|
+
|
28
|
+
# If you want to display the list of errors in the logs
|
29
|
+
display_errors: true
|
@@ -1,5 +1,17 @@
|
|
1
1
|
require 'heroku_mongo_watcher/configuration'
|
2
2
|
require 'term/ansicolor'
|
3
|
+
|
4
|
+
#http://stackoverflow.com/a/9117903/192791
|
5
|
+
require 'net/smtp'
|
6
|
+
Net.instance_eval {remove_const :SMTPSession} if defined?(Net::SMTPSession)
|
7
|
+
|
8
|
+
require 'net/pop'
|
9
|
+
Net::POP.instance_eval {remove_const :Revision} if defined?(Net::POP::Revision)
|
10
|
+
Net.instance_eval {remove_const :POP} if defined?(Net::POP)
|
11
|
+
Net.instance_eval {remove_const :POPSession} if defined?(Net::POPSession)
|
12
|
+
Net.instance_eval {remove_const :POP3Session} if defined?(Net::POP3Session)
|
13
|
+
Net.instance_eval {remove_const :APOPSession} if defined?(Net::APOPSession)
|
14
|
+
|
3
15
|
require 'tlsmail'
|
4
16
|
|
5
17
|
class HerokuMongoWatcher::CLI
|
@@ -142,7 +154,7 @@ class HerokuMongoWatcher::CLI
|
|
142
154
|
end
|
143
155
|
|
144
156
|
def self.print_errors
|
145
|
-
if
|
157
|
+
if config[:print_errors] &&@errors && @errors.keys && @errors.keys.length > 0
|
146
158
|
@errors.each do |error,count|
|
147
159
|
puts "\t\t[#{count}] #{error}"
|
148
160
|
end
|
@@ -253,7 +265,8 @@ class HerokuMongoWatcher::CLI
|
|
253
265
|
|
254
266
|
def self.notify(msg)
|
255
267
|
Thread.new('notify_admins') do
|
256
|
-
|
268
|
+
subscribers = config[:notify]
|
269
|
+
subscribers.each { |user_email| send_email(user_email, msg) } unless subscribers.empty?
|
257
270
|
end
|
258
271
|
end
|
259
272
|
|
@@ -268,9 +281,7 @@ class HerokuMongoWatcher::CLI
|
|
268
281
|
end
|
269
282
|
|
270
283
|
def self.send_email(to, msg)
|
271
|
-
|
272
284
|
return unless config[:gmail_username] && config[:gmail_password]
|
273
|
-
|
274
285
|
content = [
|
275
286
|
"From: Mongo Watcher <#{config[:gmail_username]}>",
|
276
287
|
"To: #{to}",
|
@@ -287,8 +298,6 @@ class HerokuMongoWatcher::CLI
|
|
287
298
|
Net::SMTP.start('smtp.gmail.com', 587, 'gmail.com', config[:gmail_username], config[:gmail_password], :login) do |smtp|
|
288
299
|
smtp.send_message(content, config[:gmail_username], to)
|
289
300
|
end
|
290
|
-
|
291
|
-
|
292
301
|
end
|
293
302
|
|
294
303
|
def self.color_print(field, options ={})
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: heroku_mongo_watcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2.alpha
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-07-20 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: term-ansicolor
|
16
|
-
requirement: &
|
16
|
+
requirement: &2157594420 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2157594420
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: tlsmail
|
27
|
-
requirement: &
|
27
|
+
requirement: &2157593520 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2157593520
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: heroku
|
38
|
-
requirement: &
|
38
|
+
requirement: &2157586200 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2157586200
|
47
47
|
description: Also notifies you when certain thresholds are hit. I have found this
|
48
48
|
much more accurate than New Relic
|
49
49
|
email:
|
@@ -55,6 +55,7 @@ extra_rdoc_files: []
|
|
55
55
|
files:
|
56
56
|
- .gitignore
|
57
57
|
- Gemfile
|
58
|
+
- README.md
|
58
59
|
- Rakefile
|
59
60
|
- bin/watcher
|
60
61
|
- example/.watcher
|