eye-patch 0.2.2 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: daa9923c94a9698043b4ad07a2ce8f40ea5bf4df
4
- data.tar.gz: a4edfe025c1520087fbdd406199fadae52f91362
3
+ metadata.gz: 7b3916ac3ff82a328806885a727764529794589f
4
+ data.tar.gz: a772bb0b5a1a22b40d5b47fea49e968d4ac1ac3e
5
5
  SHA512:
6
- metadata.gz: bf6445dd6d87fe9e416fb994904534bbaa744a2dbddb9ea1386a92959f19efcab107571adf2bf706db0643c68f0383c95cc8cfa2bcff9e3e3fcd32064f5f1da3
7
- data.tar.gz: 2a28f7699141a8e757aac39a3dbd70118b9d43c1926b9c0534f5afae3cb4542ef50c3059bb615cc03cbabffd1f817e612af8bff141480d5f040b3f00cd8e51e2
6
+ metadata.gz: 18d93b251bd6a48484c4d4f21c042ca79cf9ad91b87a63fa1ab3ed47040858b44517da916bbd0e40a20c066950c842448c4c7ae51feb73a56df4312fa2a10dd4
7
+ data.tar.gz: 8c107ef5c89ebb9423966e69e24159c2e032e0a86c628bd0264de4cc565ac86ded97306225f289e05ab7dd11ddf1048466c9363977b9860dd75b843f7a29d856
data/README.md CHANGED
@@ -28,28 +28,64 @@ Or install it yourself as:
28
28
 
29
29
  `Eye::Patch` forgoes granular process-level notification in favor of setting up application-wide notifications for different reporting levels. The following configuration will send all error notifications to the described contact via Amazon's SES service.
30
30
 
31
- notifications:
32
- - name: admin
33
- type: ses
34
- level: error
35
- contact: test+admin@example.com
36
- config:
37
- from: eye+notifications@example.com
38
- access_key_id: Your+AWS+Access+Key+ID
39
- secret_access_key: Your+AWS+Secret+Access+Key
31
+ Note that SES support will only be provided if a necessary gem is installed on the system.
32
+
33
+ `Eye::Patch` supports 2 different SES-backed gems:
34
+
35
+ 1. If the [`aws-ses`](https://github.com/drewblas/aws-ses) gem is available on the system, use the `type: ses` setting.
36
+
37
+ Example configuration:
38
+
39
+ notifications:
40
+ - name: crash # this name must match the "notify" target of the process.
41
+ type: ses # for aws-ses
42
+ level: error
43
+ contact: test+admin@example.com
44
+ config:
45
+ from: eye+notifications@example.com
46
+ access_key_id: Your+AWS+Access+Key+ID
47
+ secret_access_key: Your+AWS+Secret+Access+Key
48
+
49
+ 2. If the [`aws-sdk`](https://github.com/aws/aws-sdk-ruby/) gem is available on the system, use the `type: aws_sdk` setting. (Note: usually this gem is installed as a consequence of installing [aws-sdk-rails](https://github.com/aws/aws-sdk-rails)).
50
+
51
+ Example configuration:
40
52
 
41
- Note that SES support will only be provided if the [`aws-ses`](https://github.com/drewblas/aws-ses) gem is available on the system.
53
+ notifications:
54
+ - name: crash # this name must match the "notify" target of the process.
55
+ type: aws_sdk # for aws-sdk
56
+ level: error
57
+ contact: test+admin@example.com
58
+ config:
59
+ from: eye+notifications@example.com
60
+ region: us-east-1 # optional
61
+ # NOTE: the default region is us-east-1. It can be overriden.
62
+ access_key_id: Your+AWS+Access+Key+ID # optional
63
+ secret_access_key: Your+AWS+Secret+Access+Key # optional
64
+
65
+
66
+ In either case above, an example notification block for monitored process:
67
+
68
+ processes:
69
+ - name: unicorn
70
+ config:
71
+ pid_file: tmp/pids/unicorn.pid
72
+ start_command: bundle exec unicorn -c config/unicorn/<%= ENV["RAILS_ENV"] %>.rb -D
73
+ ....
74
+ monitor_children:
75
+ stop_command: "kill -QUIT {PID}"
76
+ notify:
77
+ crash: error # this must match the "name" of the notification above
42
78
 
43
79
  #### Triggers/Checks
44
80
 
45
- Triggers and checks are set up much like `eye`'s basic DSL. All trigger and check types available in `eye` are supported.
81
+ Triggers and checks are set up much like `eye`'s basic DSL. All trigger and check types available in `eye` are supported.
46
82
 
47
83
  triggers:
48
84
  - name: flapping
49
85
  config:
50
86
  times: 10
51
87
  within: 1 minute
52
-
88
+
53
89
  checks:
54
90
  - name: memory
55
91
  config:
@@ -73,7 +109,7 @@ Processes will inherit all configurations from the main application. All process
73
109
 
74
110
  ##### Checks and Triggers
75
111
 
76
- You can define per-process checks and triggers by defining a `checks` or `triggers` block within the process definition.
112
+ You can define per-process checks and triggers by defining a `checks` or `triggers` block within the process definition.
77
113
 
78
114
  processes:
79
115
  - name: my-process
@@ -0,0 +1,44 @@
1
+ require "aws-sdk-core"
2
+ require "aws-sdk-core/ses"
3
+
4
+ module Eye
5
+ class Notify
6
+ class AWSSDK < Eye::Notify
7
+ param :region, String
8
+ param :access_key_id, String
9
+ param :secret_access_key, String
10
+ param :from, String, true
11
+
12
+ def execute
13
+ options = { region: "us-east-1" } # default to us-east-1
14
+ options[:region] = region if region
15
+ if access_key_id && secret_access_key
16
+ options[:credentials] = Aws::Credentials.new(access_key_id, secret_access_key)
17
+ end
18
+ client = Aws::SES::Client.new(options)
19
+ client.send_email(message)
20
+ end
21
+
22
+ def message
23
+ { source: from,
24
+ destination: {
25
+ to_addresses: [contact]
26
+ },
27
+ message: {
28
+ subject: {
29
+ data: message_subject
30
+ },
31
+ body: {
32
+ text: {
33
+ data: message_body
34
+ },
35
+ html: {
36
+ data: message_body
37
+ }
38
+ }
39
+ }
40
+ }
41
+ end
42
+ end
43
+ end
44
+ end
@@ -19,5 +19,3 @@ class Eye::Notify::SES < Eye::Notify
19
19
  text_body: message_body }
20
20
  end
21
21
  end
22
-
23
- Eye::Notify::TYPES[:ses] = "SES"
@@ -1,10 +1,14 @@
1
1
  require "eye"
2
2
  require "eye/patch/overrides"
3
3
 
4
- begin
5
- require "eye/notify/ses"
6
- rescue LoadError
7
- # Don't worry about loading the ses notifier when `aws/ses` is unavailable
4
+ Eye::Notify::TYPES[:ses] = "SES"
5
+ Eye::Notify::TYPES[:aws_sdk] = "AWSSDK"
6
+
7
+ module Eye
8
+ class Notify
9
+ autoload :SES, "eye/notify/ses"
10
+ autoload :AWSSDK, "eye/notify/awssdk"
11
+ end
8
12
  end
9
13
 
10
14
  module Eye::Patch
@@ -1,5 +1,5 @@
1
1
  module Eye
2
2
  module Patch
3
- VERSION = "0.2.2"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eye-patch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Horner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-29 00:00:00.000000000 Z
11
+ date: 2015-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eye
@@ -116,6 +116,7 @@ files:
116
116
  - examples/thin.yml
117
117
  - examples/unicorn.yml
118
118
  - eye-patch.gemspec
119
+ - lib/eye/notify/awssdk.rb
119
120
  - lib/eye/notify/ses.rb
120
121
  - lib/eye/patch.rb
121
122
  - lib/eye/patch/application.rb
@@ -156,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
156
157
  version: '0'
157
158
  requirements: []
158
159
  rubyforge_project:
159
- rubygems_version: 2.4.5
160
+ rubygems_version: 2.4.5.1
160
161
  signing_key:
161
162
  specification_version: 4
162
163
  summary: Eye::Patch abstracts out the Eye DSL to allow you to load your configuration