sensu-plugins-pagerduty 0.0.7 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
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