sensu-plugins-pagerduty 0.0.7 → 0.0.9

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: 2113087689f53feb5a4a2dc14ea9974e9929541b
4
- data.tar.gz: 0bfa98c7fbc66bc98347df4201a29392d47112a5
3
+ metadata.gz: 9222fa366c5e2758e05c849c1583a4e85bdeb1f8
4
+ data.tar.gz: 21258205f389dc0db43a288ab789e8757925a03b
5
5
  SHA512:
6
- metadata.gz: 93d2459ce1896c0b01ed4e6fa18ee2f3c1a056130a4c2bbe2a05f01d24ee26f99d2a87f80506f8abe610c300745c7dca2be55d4defe6d3dc60d2b5c3b84023bc
7
- data.tar.gz: 51735879fa43c59e7788a3c3f83de7489693de8f42ad3dc38a31eff9a1471f85b7bba49bb0694a5542a01fe4259e9de01c6435aac281cd6bf55b20b0d6b5ce4f
6
+ metadata.gz: 252432e02f04eaae814d4a11576c1ea2610c7ebbf87f01ba50726c399d22dcb6c069aad6b79b283a61d2874bd3dd3606687579b53ba35907244d5809f49cbc16
7
+ data.tar.gz: febe475f6ed0420eb02f2fa9d5aed2bc2c744c22106b507e50a49b486a075499c82ee307ab6e26935fd39a89e5b79a9ba5962da76bd2a3511fea2ddac244be15
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -4,7 +4,19 @@ This project adheres to [Semantic Versioning](http://semver.org/).
4
4
  This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/)
5
5
 
6
6
  ## Unreleased
7
- - nothing
7
+
8
+ ## [0.0.9] - 2015-12-10
9
+ ### Fixed
10
+ - fix dependencies
11
+
12
+ ## [0.0.8] - 2015-12-10
13
+ ### Added
14
+ - Added a handler to allow overrides based on priority, now you can different
15
+ alerts trigger different PagerDuty API endpoints. For example one can hit a high
16
+ priority endpoint but warning can hit a lowpriority point.
17
+
18
+ ### Changed
19
+ - Use pagerduty gem instead of redphone, now also sends description and event details when resolving
8
20
 
9
21
  ## [0.0.7] - 2015-10-29
10
22
  ### Changed
data/README.md CHANGED
@@ -11,6 +11,7 @@
11
11
 
12
12
  ## Files
13
13
  * bin/handler-pagerduty.rb
14
+ * bin/mutator-pagerduty-priority-override.rb
14
15
 
15
16
  ## Usage
16
17
 
@@ -18,12 +18,12 @@
18
18
  #
19
19
 
20
20
  require 'sensu-handler'
21
- require 'redphone/pagerduty'
21
+ require 'pagerduty'
22
22
 
23
23
  #
24
24
  # Pagerduty
25
25
  #
26
- class Pagerduty < Sensu::Handler
26
+ class PagerdutyHandler < Sensu::Handler
27
27
  option :json_config,
28
28
  description: 'Config Name',
29
29
  short: '-j JsonConfig',
@@ -54,25 +54,23 @@ class Pagerduty < Sensu::Handler
54
54
  incident_key_prefix = settings[json_config]['incident_key_prefix']
55
55
  description_prefix = settings[json_config]['description_prefix']
56
56
  begin
57
- timeout(10) do
58
- response = case @event['action']
59
- when 'create'
60
- Redphone::Pagerduty.trigger_incident(
61
- service_key: api_key,
62
- incident_key: [incident_key_prefix, incident_key].compact.join(''),
63
- description: [description_prefix, event_summary].compact.join(' '),
64
- details: @event
65
- )
66
- when 'resolve'
67
- Redphone::Pagerduty.resolve_incident(
68
- service_key: api_key,
69
- incident_key: [incident_key_prefix, incident_key].compact.join('')
70
- )
71
- end
72
- if response['status'] == 'success'
57
+ timeout(5) do
58
+ pagerduty = Pagerduty.new(api_key)
59
+
60
+ begin
61
+ case @event['action']
62
+ when 'create'
63
+ pagerduty.trigger([description_prefix, event_summary].compact.join(' '),
64
+ incident_key: [incident_key_prefix, incident_key].compact.join(''),
65
+ details: @event)
66
+ when 'resolve'
67
+ pagerduty.get_incident([incident_key_prefix, incident_key].compact.join('')).resolve(
68
+ description: [description_prefix, event_summary].compact.join(' '), details: @event)
69
+ end
73
70
  puts 'pagerduty -- ' + @event['action'].capitalize + 'd incident -- ' + incident_key
74
- else
75
- puts 'pagerduty -- failed to ' + @event['action'] + ' incident -- ' + incident_key
71
+ rescue Net::HTTPServerException => error
72
+ puts 'pagerduty -- failed to ' + @event['action'] + ' incident -- ' + incident_key + ' -- ' +
73
+ error.response.code + ' ' + error.response.message + ': ' + error.response.body
76
74
  end
77
75
  end
78
76
  rescue Timeout::Error
@@ -0,0 +1,86 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # PagerDuty
4
+ # ===
5
+ #
6
+ # DESCRIPTION:
7
+ # This mutator take the Client hash and looks for overrides of the pager_team.
8
+ # PagerDuty Handler looks for client['pager_team'] to know which pager duty api token to use.
9
+ # This will allow user to set high and low priority alerts on the client as a whole,
10
+ # or on a check by check basis. This will also allow override on a warning and critical basis
11
+ # for each check.
12
+ #
13
+ # EX: Override all warnings on host
14
+ # client.pd_override.baseline.warning: <value to override pager_team with>
15
+ #
16
+ # EX: Override warning on host for specific check
17
+ # client.pd_override.<check_name>.warning: <value to override pager_team with>
18
+ #
19
+ # OUTPUT:
20
+ # Sensu event with pager_team value changed if an override is passed.
21
+ #
22
+ # PLATFORM:
23
+ # all
24
+ #
25
+ # DEPENDENCIES:
26
+ # none
27
+ #
28
+ # Copyright 2015 Zach Bintliff <https://github.com/zbintliff>
29
+ #
30
+ # Released under the same terms as Sensu (the MIT license); see LICENSE
31
+ # for details.
32
+ require 'json'
33
+
34
+ module Sensu
35
+ module Mutator
36
+ class PagerDuty
37
+ class PriorityOverride
38
+ ## Make it a class that takes an IO object for easier testing
39
+ def execute(input = STDIN)
40
+ # parse event
41
+ event = JSON.parse(input.read, symbolize_names: true)
42
+
43
+ check_name = event[:check][:name]
44
+ status = get_status_string(event[:check])
45
+
46
+ baseline_override = get_override(event, 'baseline', status)
47
+ check_override = get_override(event, check_name, status)
48
+
49
+ if !check_override.nil?
50
+ event[:client][:pager_team] = check_override
51
+ elsif !baseline_override.nil?
52
+ event[:client][:pager_team] = baseline_override
53
+ end
54
+ JSON.dump(event)
55
+ end
56
+
57
+ def get_status_string(check)
58
+ status = check[:status]
59
+ if status == 1
60
+ return 'warning'
61
+ elsif status == 0
62
+ ## 0 means its a resolve event, to know which PagerDuty API to resolve on
63
+ ## we need to look at previous alert
64
+ ## strangely enough the history array in the event is an array of strings...
65
+ return get_status_string(status: check[:history][-2].to_i)
66
+ else
67
+ return 'critical'
68
+ end
69
+ end
70
+
71
+ def get_override(event, check, status)
72
+ return nil if !event[:client].key?(:pd_override) || !event[:client][:pd_override].key?(check.to_sym)
73
+ event[:client][:pd_override][check.to_sym][status.to_sym]
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
79
+
80
+ ## Is called from Gem script. Program name is full path to this script
81
+ ### __FILE__ is the initial script ran, which is
82
+ ### /usr/local/bin/mutator-pagerduty-priority-override.rb
83
+ if $PROGRAM_NAME.include?(__FILE__.split('/').last)
84
+ mutator = Sensu::Mutator::PagerDuty::PriorityOverride.new
85
+ puts mutator.execute
86
+ end
@@ -2,7 +2,7 @@ module SensuPluginsPagerduty
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- PATCH = 7
5
+ PATCH = 9
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-pagerduty
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sensu-Plugins and contributors
@@ -30,36 +30,36 @@ cert_chain:
30
30
  8sHuVruarogxxKPBzlL2is4EUb6oN/RdpGx2l4254+nyR+abg//Ed27Ym0PkB4lk
31
31
  HP0m8WSjZmFr109pE/sVsM5jtOCvogyujQOjNVGN4gz1wwPr
32
32
  -----END CERTIFICATE-----
33
- date: 2015-10-29 00:00:00.000000000 Z
33
+ date: 2015-12-10 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
- name: redphone
36
+ name: sensu-plugin
37
37
  requirement: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - '='
40
40
  - !ruby/object:Gem::Version
41
- version: 0.0.6
41
+ version: 1.2.0
42
42
  type: :runtime
43
43
  prerelease: false
44
44
  version_requirements: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - '='
47
47
  - !ruby/object:Gem::Version
48
- version: 0.0.6
48
+ version: 1.2.0
49
49
  - !ruby/object:Gem::Dependency
50
- name: sensu-plugin
50
+ name: pagerduty
51
51
  requirement: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - '='
54
54
  - !ruby/object:Gem::Version
55
- version: 1.2.0
55
+ version: 2.0.1
56
56
  type: :runtime
57
57
  prerelease: false
58
58
  version_requirements: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - '='
61
61
  - !ruby/object:Gem::Version
62
- version: 1.2.0
62
+ version: 2.0.1
63
63
  - !ruby/object:Gem::Dependency
64
64
  name: bundler
65
65
  requirement: !ruby/object:Gem::Requirement
@@ -186,9 +186,10 @@ dependencies:
186
186
  - - "~>"
187
187
  - !ruby/object:Gem::Version
188
188
  version: '0.8'
189
- description: Sensu plugins for pagerduty
189
+ description: This plugin provides a Sensu handler for PagerDuty
190
190
  email: "<sensu-users@googlegroups.com>"
191
191
  executables:
192
+ - mutator-pagerduty-priority-override.rb
192
193
  - handler-pagerduty.rb
193
194
  extensions: []
194
195
  extra_rdoc_files: []
@@ -197,6 +198,7 @@ files:
197
198
  - LICENSE
198
199
  - README.md
199
200
  - bin/handler-pagerduty.rb
201
+ - bin/mutator-pagerduty-priority-override.rb
200
202
  - lib/sensu-plugins-pagerduty.rb
201
203
  - lib/sensu-plugins-pagerduty/version.rb
202
204
  homepage: https://github.com/sensu-plugins/sensu-plugins-pagerduty
metadata.gz.sig CHANGED
Binary file