whacamole 0.1.0 → 0.2.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/lib/whacamole/stream.rb +11 -0
- data/lib/whacamole/version.rb +1 -1
- data/spec/stream_spec.rb +8 -3
- data/whacamole.gemspec +1 -1
- metadata +3 -3
data/lib/whacamole/stream.rb
CHANGED
@@ -50,12 +50,23 @@ module Whacamole
|
|
50
50
|
|
51
51
|
def memory_size_from_chunk(chunk)
|
52
52
|
sizes = []
|
53
|
+
|
54
|
+
# new log format
|
53
55
|
chunk.split("\n").select{|line| line.include? "sample#memory_total"}.each do |line|
|
54
56
|
dyno = line.match(/web\.\d+/)
|
55
57
|
next unless dyno
|
56
58
|
size = line.match(/sample#memory_total=([\d\.]+)/)
|
57
59
|
sizes << [dyno[0], size[1]]
|
58
60
|
end
|
61
|
+
|
62
|
+
# old log format
|
63
|
+
chunk.split("\n").select{|line| line.include? "measure=memory_total"}.each do |line|
|
64
|
+
dyno = line.match(/web\.\d+/)
|
65
|
+
next unless dyno
|
66
|
+
size = line.match(/val=([\d\.]+)/)
|
67
|
+
sizes << [dyno[0], size[1]]
|
68
|
+
end
|
69
|
+
|
59
70
|
sizes
|
60
71
|
end
|
61
72
|
|
data/lib/whacamole/version.rb
CHANGED
data/spec/stream_spec.rb
CHANGED
@@ -37,15 +37,20 @@ describe Whacamole::Stream do
|
|
37
37
|
context "when memory usage is present" do
|
38
38
|
it "surfaces the memory usage" do
|
39
39
|
stream.dispatch_handlers <<-CHUNK
|
40
|
+
## NEW LOG FORMAT
|
40
41
|
2013-08-22T16:39:22.208103+00:00 heroku[router]: at=info method=GET path=/favicon.ico host=aisle50.com fwd="205.159.94.63" dyno=web.3 connect=1ms service=20ms status=200 bytes=894
|
41
42
|
2013-08-22T16:39:22.224847+00:00 heroku[router]: at=info method=GET path=/ host=www.aisle50.com fwd="119.63.193.132" dyno=web.3 connect=1ms service=5ms status=301 bytes=0
|
42
43
|
2013-08-22T16:39:22.919300+00:00 heroku[web.2]: source=web.2 dyno=heroku.772639.a334caa8-736c-48b3-bac2-d366f75d7fa0 sample#load_avg_1m=0.20 sample#load_avg_5m=0.33 sample#load_avg_15m=0.38
|
43
44
|
2013-08-22T16:39:22.919536+00:00 heroku[web.2]: source=web.2 dyno=heroku.772639.a334caa8-736c-48b3-bac2-d366f75d7fa0 sample#memory_total=581.95MB sample#memory_rss=581.75MB sample#memory_cache=0.16MB sample#memory_swap=0.03MB sample#memory_pgpgin=0pages sample#memory_pgpgout=179329pages
|
44
45
|
2013-08-22T16:39:22.919773+00:00 heroku[web.2]: source=web.2 dyno=heroku.772639.a334caa8-736c-48b3-bac2-d366f75d7fa0 sample#diskmbytes=0MB
|
45
46
|
2013-08-22T16:39:23.045250+00:00 heroku[web.1]: source=web.1 dyno=heroku.772639.4c9dcf54-f339-4d81-9756-8dad47f178a4 sample#load_avg_1m=0.24 sample#load_avg_5m=0.59
|
46
|
-
2013-08-22T16:39:23.045521+00:00 heroku[web.90]: source=web.1 dyno=heroku.772639.4c9dcf54-f339-4d81-9756-8dad47f178a4 sample#memory_total=66MB sample#memory_rss=471.21MB sample#memory_cache=0.05MB sample#memory_swap=0.02MB sample#memory_pgpgin=0pages sample#memory_pgpgout=145277pages
|
47
47
|
2013-08-22T16:39:23.045789+00:00 heroku[web.1]: source=web.1 dyno=heroku.772639.4c9dcf54-f339-4d81-9756-8dad47f178a4 sample#diskmbytes=0MB
|
48
48
|
2013-08-22T16:39:23.364649+00:00 heroku[worker.1]: source=worker.1 dyno=heroku.772639.ae391b5d-e776-43f9-b056-360912563d61 sample#load_avg_1m=0.00 sample#load_avg_5m=0.01 sample#load_avg_15m=0.02
|
49
|
+
|
50
|
+
## OLD LOG FORMAT
|
51
|
+
2013-08-30T14:39:57.132272+00:00 heroku[web.1]: source=heroku.772639.web.1.50578a75-9052-4e14-ac30-ba3686750017 measure=load_avg_1m val=0.00
|
52
|
+
2013-08-30T14:39:57.132782+00:00 heroku[web.1]: source=heroku.772639.web.1.50578a75-9052-4e14-ac30-ba3686750017 measure=load_avg_15m val=0.20
|
53
|
+
2013-08-30T14:39:57.133012+00:00 heroku[web.1]: source=heroku.772639.web.1.50578a75-9052-4e14-ac30-ba3686750017 measure=memory_total val=509 units=MB
|
49
54
|
CHUNK
|
50
55
|
|
51
56
|
eh.events.length.should == 2
|
@@ -56,9 +61,9 @@ describe Whacamole::Stream do
|
|
56
61
|
eh.events.first.process.should == "web.2"
|
57
62
|
|
58
63
|
eh.events.last.should be_a Whacamole::Events::DynoSize
|
59
|
-
eh.events.last.size.should ==
|
64
|
+
eh.events.last.size.should == 509
|
60
65
|
eh.events.last.units.should == "MB"
|
61
|
-
eh.events.last.process.should == "web.
|
66
|
+
eh.events.last.process.should == "web.1"
|
62
67
|
end
|
63
68
|
end
|
64
69
|
|
data/whacamole.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |gem|
|
|
9
9
|
gem.email = "archslide@gmail.com"
|
10
10
|
|
11
11
|
gem.description = "Whacamole"
|
12
|
-
gem.summary = ""
|
12
|
+
gem.summary = "restart heroku dynos that run out of RAM instead of swapping to disk"
|
13
13
|
gem.homepage = "http://github.com/arches/whacamole"
|
14
14
|
gem.version = Whacamole::VERSION
|
15
15
|
gem.license = 'MIT'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: whacamole
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-08-
|
12
|
+
date: 2013-08-30 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -94,7 +94,7 @@ rubyforge_project:
|
|
94
94
|
rubygems_version: 1.8.19
|
95
95
|
signing_key:
|
96
96
|
specification_version: 3
|
97
|
-
summary:
|
97
|
+
summary: restart heroku dynos that run out of RAM instead of swapping to disk
|
98
98
|
test_files:
|
99
99
|
- spec/config_spec.rb
|
100
100
|
- spec/events_spec.rb
|