sensu-plugins-opsgenie 4.1.2 → 4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9b331b034218de65cc7d965a6136348bb39ea74af1b09b3cde378b0e19af985b
4
- data.tar.gz: 06755ff6af1bf028ff6705af8cd17a9f335a8104d1331fce85b41905c7731117
3
+ metadata.gz: 60da9a2150addc0545bb2b0f982c4f803e6fc8444b26499a9ff55a3dc10571a2
4
+ data.tar.gz: 4af0d744eb11c9e6633c01f2be7f85a7ecccb89b7795f17bdbed220da73a7095
5
5
  SHA512:
6
- metadata.gz: a31eda02fa5551796050e3c0248a2c9e5a84a3691156c4a4e225cff1564c2613ee40a68e6546e1044fb9975713888bb37a126a6ad4ca13877297159040a3801c
7
- data.tar.gz: 0d05f8a9e29149ea4199f511d6fb9ec0edf62f05189a0bcb86497e1f0e693f68b6f1fc86d37584d6aeee6241b1af4be0491977d2558449a433f92ac46fa5375a
6
+ metadata.gz: 517c8af283e218ef9bef4bda6034c70866d38509ac5eb996f56f6f817b8001e2c1d849fab103fb53cf3c4e07f93e60d49cab3d08524710aefb1a62b8a41c414d
7
+ data.tar.gz: 27e42a03d769276d52f77ae245bcfce0da47cf74ee2ecc259d860e182623f9b95509f092a13c1c99cebf82b786232d376a5f4fcc761bd4d2e63c5a4760cb0a55
data/CHANGELOG.md CHANGED
@@ -5,6 +5,13 @@ This CHANGELOG follows the format listed [here](https://github.com/sensu-plugins
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [4.2.0] - 2018-02-20
9
+ ### Changed
10
+ - Providing better alert description field using Sensu check output (@Castaglia)
11
+
12
+ ### Added
13
+ - `handler-opsgenie.rb`: Added flag of `--verbose` to enable verbose/debugging output (@Castaglia)
14
+
8
15
  ## [4.1.2] - 2018-02-05
9
16
  ### Fixed
10
17
  - Handling of tags for events (@Castaglia)
@@ -100,6 +107,7 @@ This CHANGELOG follows the format listed [here](https://github.com/sensu-plugins
100
107
  - Fixed json configuration load
101
108
 
102
109
  [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-opsgenie/compare/4.1.2...HEAD
110
+ [4.2.0]: https://github.com/sensu-plugins/sensu-plugins-opsgenie/compare/4.1.2...4.2.0
103
111
  [4.1.2]: https://github.com/sensu-plugins/sensu-plugins-opsgenie/compare/4.1.1...4.1.2
104
112
  [4.1.1]: https://github.com/sensu-plugins/sensu-plugins-opsgenie/compare/4.1.0...4.1.1
105
113
  [4.1.0]: https://github.com/sensu-plugins/sensu-plugins-opsgenie/compare/4.0.1...4.1.0
data/README.md CHANGED
@@ -81,7 +81,54 @@ To get this to work you need to specify a few different things. For a list of fi
81
81
  }
82
82
  ```
83
83
 
84
- ## Notes
84
+ ## OpsGenie Alerts
85
+
86
+ How does the handler map the various Sensu values into the OpsGenie
87
+ [alerts and alert fields](https://docs.opsgenie.com/docs/alerts-and-alert-fields) created?
88
+
89
+ ### Message
90
+
91
+ The OpsGenie _message_ alert field is comprised of the Sensu client name, and
92
+ the Sensu check name, _e.g._:
93
+ ```
94
+ web01 : check_mysql_access
95
+ ```
96
+
97
+ ### Teams
98
+
99
+ The OpsGenie _team_ alert field uses the values in the Sensu check configuration
100
+ if any, otherwise it uses the value from the handler configuration.
101
+
102
+ ### Recipients
103
+
104
+ The OpsGenie _recipients_ alert field uses the values in the Sensu check
105
+ configuration if any, otherwise it uses the value from the handler
106
+ configuration.
107
+
108
+ ### Alias
109
+
110
+ The OpsGenie _alias_ alert is field is comprised of the Sensu client name,
111
+ and the Sensu check name to create a unique key, _e.g._:
112
+ ```
113
+ web01:check_mysql_access
114
+ ```
115
+ Note that this can be changed via configuration; see notes below.
116
+
117
+ ### Entity
118
+
119
+ The OpsGenie _entity_ alert field uses the Sensu client name.
120
+
121
+ ### Description
122
+
123
+ The OpsGenie _description_ alert field is populated with the Sensu check output.
124
+
125
+ ### Priority
126
+
127
+ The OpsGenie _priority_ alert field is not explicitly set; OpsGenie will thus
128
+ assign the default priority of "P3" to the alert.
129
+
130
+
131
+ ## Configuration Notes
85
132
 
86
133
  If the check definition uses the custom `alias` attribute, _e.g._:
87
134
  ```
@@ -11,7 +11,7 @@ require 'json'
11
11
  require 'erb'
12
12
 
13
13
  class Opsgenie < Sensu::Handler
14
- attr_reader :json_config, :message_template
14
+ attr_reader :json_config, :message_template, :verbose
15
15
 
16
16
  OPSGENIE_URL = 'https://api.opsgenie.com/v2/alerts'.freeze
17
17
 
@@ -27,6 +27,12 @@ class Opsgenie < Sensu::Handler
27
27
  long: '--template <file_path>',
28
28
  default: nil
29
29
 
30
+ option :verbose,
31
+ description: 'Enable verbose/debugging output',
32
+ short: '-v',
33
+ long: '--verbose',
34
+ default: false
35
+
30
36
  def handle
31
37
  init
32
38
  process
@@ -66,6 +72,11 @@ class Opsgenie < Sensu::Handler
66
72
  puts "opsgenie -- timed out while attempting to #{@event['action']} a incident -- #{event_id}"
67
73
  end
68
74
 
75
+ def description
76
+ return json_config['description'] unless json_config['description'].nil?
77
+ @event['check']['output'].chomp
78
+ end
79
+
69
80
  def message
70
81
  return @event['notification'] unless @event['notification'].nil?
71
82
  return default_message if message_template.nil? || !File.exist?(message_template)
@@ -79,7 +90,7 @@ class Opsgenie < Sensu::Handler
79
90
  end
80
91
 
81
92
  def default_message
82
- [@event['client']['name'], @event['check']['name'], @event['check']['output'].chomp].join(' : ')
93
+ [@event['client']['name'], @event['check']['name']].join(' : ')
83
94
  end
84
95
 
85
96
  def event_id
@@ -111,7 +122,7 @@ class Opsgenie < Sensu::Handler
111
122
  post_to_opsgenie(:create,
112
123
  alias: event_id,
113
124
  message: message,
114
- description: json_config['description'],
125
+ description: description,
115
126
  entity: client_name,
116
127
  tags: tags,
117
128
  recipients: json_config['recipients'],
@@ -145,6 +156,19 @@ class Opsgenie < Sensu::Handler
145
156
  "#{encoded_alias}/close?identifierType=alias"
146
157
  end
147
158
  uri = URI.parse("#{OPSGENIE_URL}/#{uripath}")
159
+
160
+ if config[:verbose]
161
+ # Note that the ordering of these lines roughly follows the order
162
+ # alert fields are displayed in the OpsGenie web UI.
163
+ puts "URL: #{uri}"
164
+ puts "Message: #{params[:message]}"
165
+ puts "Tags: #{params[:tags]}"
166
+ puts "Entity: #{params[:entity]}"
167
+ puts "Teams: #{params[:teams]}"
168
+ puts "Alias: #{params[:alias]}"
169
+ puts "Description: #{params[:description]}"
170
+ end
171
+
148
172
  http = Net::HTTP.new(uri.host, uri.port)
149
173
  http.use_ssl = true
150
174
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
@@ -5,8 +5,8 @@ module SensuPluginsOpsgenie
5
5
  # This defines the version of the gem
6
6
  module Version
7
7
  MAJOR = 4
8
- MINOR = 1
9
- PATCH = 2
8
+ MINOR = 2
9
+ PATCH = 0
10
10
 
11
11
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
12
12
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-opsgenie
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.2
4
+ version: 4.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sensu-Plugins and contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-06 00:00:00.000000000 Z
11
+ date: 2018-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sensu-plugin
@@ -267,7 +267,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
267
267
  version: '0'
268
268
  requirements: []
269
269
  rubyforge_project:
270
- rubygems_version: 2.7.5
270
+ rubygems_version: 2.7.6
271
271
  signing_key:
272
272
  specification_version: 4
273
273
  summary: Sensu plugins for working with opsgenie