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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +13 -1
- data/README.md +1 -0
- data/bin/handler-pagerduty.rb +18 -20
- data/bin/mutator-pagerduty-priority-override.rb +86 -0
- data/lib/sensu-plugins-pagerduty/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +11 -9
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9222fa366c5e2758e05c849c1583a4e85bdeb1f8
|
4
|
+
data.tar.gz: 21258205f389dc0db43a288ab789e8757925a03b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
data/bin/handler-pagerduty.rb
CHANGED
@@ -18,12 +18,12 @@
|
|
18
18
|
#
|
19
19
|
|
20
20
|
require 'sensu-handler'
|
21
|
-
require '
|
21
|
+
require 'pagerduty'
|
22
22
|
|
23
23
|
#
|
24
24
|
# Pagerduty
|
25
25
|
#
|
26
|
-
class
|
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(
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
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
|
-
|
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
|
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.
|
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
|
33
|
+
date: 2015-12-10 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
|
-
name:
|
36
|
+
name: sensu-plugin
|
37
37
|
requirement: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - '='
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
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:
|
48
|
+
version: 1.2.0
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
|
-
name:
|
50
|
+
name: pagerduty
|
51
51
|
requirement: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - '='
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version:
|
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:
|
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
|
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
|