aws-alert-monitor 0.0.3 → 0.0.4
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/.travis.yml +4 -0
- data/CHANGELOG +4 -0
- data/README.md +3 -1
- data/lib/aws-alert-monitor/alert.rb +26 -23
- data/lib/aws-alert-monitor/version.rb +1 -1
- data/spec/alert_spec.rb +1 -1
- data/spec/config_spec.rb +1 -0
- metadata +11 -10
data/.travis.yml
ADDED
data/CHANGELOG
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
[](http://travis-ci.org/intuit/aws-alert-monitor)
|
2
|
+
|
3
|
+
## AWS Alert Monitor
|
2
4
|
|
3
5
|
AWS Alert Monitor listenting to an SQS queue for alarms and sends email via SES based on rules applied in ~/.aws-alert-monitor.yml to those alerts.
|
4
6
|
|
@@ -27,43 +27,46 @@ module AwsAlertMonitor
|
|
27
27
|
private
|
28
28
|
|
29
29
|
def send_alert(policy)
|
30
|
-
message_source = policy['email']['source']
|
31
|
-
message_destination = policy['email']['destination']
|
30
|
+
@message_source = policy['email']['source']
|
31
|
+
@message_destination = policy['email']['destination']
|
32
32
|
|
33
|
-
if message_destination
|
34
|
-
@logger.info "Sending alert to #{message_destination}."
|
35
|
-
|
36
|
-
options = { :source => message_source,
|
37
|
-
:destination => { :to_addresses => [ message_destination ] },
|
38
|
-
:message => { :subject => {
|
39
|
-
:data => "Alert: #{@name}"
|
40
|
-
},
|
41
|
-
:body => {
|
42
|
-
:text => {
|
43
|
-
:data => @message_data
|
44
|
-
}
|
45
|
-
}
|
46
|
-
}
|
47
|
-
}
|
48
|
-
ses.send_email options
|
33
|
+
if @message_destination
|
34
|
+
@logger.info "Sending alert to #{@message_destination}."
|
35
|
+
ses.send_email email_options
|
49
36
|
else
|
50
37
|
@logger.info "Destination not set, no message sent."
|
51
38
|
end
|
52
39
|
end
|
53
40
|
|
41
|
+
def email_options
|
42
|
+
{ :source => @message_source,
|
43
|
+
:destination => { :to_addresses => [ @message_destination ] },
|
44
|
+
:message => { :subject => {
|
45
|
+
:data => "Alert: #{@message_subject}"
|
46
|
+
},
|
47
|
+
:body => {
|
48
|
+
:text => {
|
49
|
+
:data => @message_data
|
50
|
+
}
|
51
|
+
}
|
52
|
+
}
|
53
|
+
}
|
54
|
+
end
|
55
|
+
|
54
56
|
def process_message(message)
|
55
57
|
begin
|
56
58
|
message_body = JSON.parse message
|
57
|
-
|
59
|
+
message_details = JSON.parse message_body['Message']
|
58
60
|
rescue JSON::ParserError => e
|
59
61
|
@logger.error e.message
|
60
62
|
return false
|
61
63
|
end
|
62
64
|
|
63
|
-
@message_cause =
|
64
|
-
@message_event =
|
65
|
-
@message_description =
|
66
|
-
@
|
65
|
+
@message_cause = message_details['Cause']
|
66
|
+
@message_event = message_details['Event']
|
67
|
+
@message_description = message_details['Description']
|
68
|
+
@message_subject = message_body['Subject']
|
69
|
+
@message_data = "#{@name} received alert: \n\n #{@message_description} \n\n #{@message_cause}"
|
67
70
|
|
68
71
|
true
|
69
72
|
end
|
data/spec/alert_spec.rb
CHANGED
@@ -16,7 +16,7 @@ describe AwsAlertMonitor::Alert do
|
|
16
16
|
|
17
17
|
it "should process the given message against known events" do
|
18
18
|
@ses_mock.should_receive(:send_email)
|
19
|
-
.with({:source=>"brett_weaver@intuit.com", :destination=>{:to_addresses=>["brett_weaver@intuit.com"]}, :message=>{:subject=>{:data=>"Alert:
|
19
|
+
.with({:source=>"brett_weaver@intuit.com", :destination=>{:to_addresses=>["brett_weaver@intuit.com"]}, :message=>{:subject=>{:data=>"Alert: Auto Scaling: launch for group \"lc-pod-2-qa-1-app-1-Instances-XCYGCEQC0H02\""}, :body=>{:text=>{:data=>"test app received alert: \n\n Launching a new EC2 instance: i-d6a2cb8f \n\n At 2012-11-29T16:39:05Z an instance was started in response to a difference between desired and actual capacity, increasing the capacity from 0 to 1."}}}})
|
20
20
|
@alert.process @options
|
21
21
|
end
|
22
22
|
|
data/spec/config_spec.rb
CHANGED
@@ -4,6 +4,7 @@ require 'yaml'
|
|
4
4
|
describe AwsAlertMonitor::Config do
|
5
5
|
before do
|
6
6
|
@data = "app:\n access_key: key \n secret_key: secret\n region: us-west-1\n sqs_endpoint: https://sqs.us-west-1.amazonaws.com/123456789012/app\n events: \n 'autoscaling:EC2_INSTANCE_LAUNCH':\n email:\n source: brett_weaver@intuit.com\n destination: brett_weaver@intuit.com\n"
|
7
|
+
File.stub :exists? => true
|
7
8
|
File.should_receive(:open).
|
8
9
|
with("#{ENV['HOME']}/.aws-alert-monitor.yml").
|
9
10
|
and_return @data
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws-alert-monitor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
|
-
requirement: &
|
16
|
+
requirement: &70314215544440 !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: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70314215544440
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &70314215543440 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 2.11.0
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70314215543440
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: aws-sdk
|
38
|
-
requirement: &
|
38
|
+
requirement: &70314215542860 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: 1.7.1
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70314215542860
|
47
47
|
description: I watch an SQS queue and escalate alert messages.
|
48
48
|
email:
|
49
49
|
- brett@weav.net
|
@@ -54,6 +54,7 @@ extra_rdoc_files: []
|
|
54
54
|
files:
|
55
55
|
- .gitignore
|
56
56
|
- .rvmrc
|
57
|
+
- .travis.yml
|
57
58
|
- CHANGELOG
|
58
59
|
- Gemfile
|
59
60
|
- LICENSE.txt
|
@@ -91,7 +92,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
91
92
|
version: '0'
|
92
93
|
segments:
|
93
94
|
- 0
|
94
|
-
hash: -
|
95
|
+
hash: -3329563464597490015
|
95
96
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
97
|
none: false
|
97
98
|
requirements:
|
@@ -100,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
101
|
version: '0'
|
101
102
|
segments:
|
102
103
|
- 0
|
103
|
-
hash: -
|
104
|
+
hash: -3329563464597490015
|
104
105
|
requirements: []
|
105
106
|
rubyforge_project:
|
106
107
|
rubygems_version: 1.8.16
|