flapjack 0.6.53 → 0.6.54
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/flapjack +103 -19
- data/bin/flapjack-nagios-receiver +166 -52
- data/bin/flapper +107 -18
- data/etc/flapjack_config.yaml.example +16 -0
- data/features/events.feature +63 -0
- data/features/steps/events_steps.rb +5 -5
- data/features/steps/notifications_steps.rb +8 -6
- data/features/steps/time_travel_steps.rb +4 -4
- data/features/support/env.rb +1 -2
- data/flapjack.gemspec +1 -1
- data/lib/flapjack/configuration.rb +11 -13
- data/lib/flapjack/coordinator.rb +100 -220
- data/lib/flapjack/data/entity_check.rb +2 -2
- data/lib/flapjack/data/event.rb +3 -3
- data/lib/flapjack/executive.rb +30 -40
- data/lib/flapjack/filters/delays.rb +1 -1
- data/lib/flapjack/gateways/api.rb +6 -23
- data/lib/flapjack/gateways/email.rb +4 -10
- data/lib/flapjack/gateways/email/alert.html.haml +0 -5
- data/lib/flapjack/gateways/email/alert.text.erb +0 -1
- data/lib/flapjack/gateways/jabber.rb +80 -67
- data/lib/flapjack/gateways/oobetet.rb +29 -25
- data/lib/flapjack/gateways/pagerduty.rb +26 -45
- data/lib/flapjack/gateways/sms_messagenet.rb +10 -17
- data/lib/flapjack/gateways/web.rb +7 -21
- data/lib/flapjack/gateways/web/views/_css.haml +3 -0
- data/lib/flapjack/gateways/web/views/check.haml +1 -1
- data/lib/flapjack/logger.rb +57 -0
- data/lib/flapjack/patches.rb +0 -10
- data/lib/flapjack/pikelet.rb +214 -30
- data/lib/flapjack/redis_pool.rb +2 -17
- data/lib/flapjack/version.rb +1 -1
- data/spec/lib/flapjack/coordinator_spec.rb +116 -136
- data/spec/lib/flapjack/data/entity_check_spec.rb +3 -3
- data/spec/lib/flapjack/executive_spec.rb +33 -34
- data/spec/lib/flapjack/gateways/api_spec.rb +4 -2
- data/spec/lib/flapjack/gateways/jabber_spec.rb +39 -36
- data/spec/lib/flapjack/gateways/oobetet_spec.rb +14 -24
- data/spec/lib/flapjack/gateways/pagerduty_spec.rb +43 -45
- data/spec/lib/flapjack/gateways/web_spec.rb +42 -35
- data/spec/lib/flapjack/logger_spec.rb +32 -0
- data/spec/lib/flapjack/pikelet_spec.rb +124 -15
- data/spec/lib/flapjack/redis_pool_spec.rb +1 -3
- data/spec/spec_helper.rb +34 -1
- data/tasks/events.rake +1 -0
- data/tmp/create_event_ok.rb +31 -0
- data/tmp/create_event_unknown.rb +31 -0
- data/tmp/create_events_ok.rb +1 -1
- metadata +10 -11
- data/bin/flapjack-nagios-receiver-control +0 -15
- data/bin/flapper-control +0 -15
- data/lib/flapjack/daemonizing.rb +0 -186
- data/lib/flapjack/gateways/base.rb +0 -38
@@ -8,15 +8,12 @@ require 'em-synchrony/fiber_iterator'
|
|
8
8
|
require 'yajl/json_gem'
|
9
9
|
|
10
10
|
require 'flapjack/utility'
|
11
|
-
require 'flapjack/gateways/base'
|
12
11
|
|
13
12
|
module Flapjack
|
14
13
|
|
15
14
|
module Gateways
|
16
15
|
|
17
16
|
class Oobetet < Blather::Client
|
18
|
-
|
19
|
-
include Flapjack::Gateways::Generic
|
20
17
|
include Flapjack::Utility
|
21
18
|
|
22
19
|
log = Logger.new(STDOUT)
|
@@ -24,13 +21,23 @@ module Flapjack
|
|
24
21
|
log.level = Logger::INFO
|
25
22
|
Blather.logger = log
|
26
23
|
|
24
|
+
def initialize(opts = {})
|
25
|
+
@config = opts[:config]
|
26
|
+
@logger = opts[:logger]
|
27
|
+
super()
|
28
|
+
end
|
29
|
+
|
30
|
+
def stop
|
31
|
+
@should_quit = true
|
32
|
+
end
|
33
|
+
|
27
34
|
def setup
|
28
35
|
@hostname = Socket.gethostname
|
29
36
|
@flapjacktest_jid = Blather::JID.new((@config['jabberid'] || 'flapjacktest') + "/#{@hostname}:#{Process.pid}")
|
30
37
|
|
31
38
|
super(@flapjacktest_jid, @config['password'], @config['server'], @config['port'].to_i)
|
32
39
|
|
33
|
-
logger.debug("Building jabber connection with jabberid: " +
|
40
|
+
@logger.debug("Building jabber connection with jabberid: " +
|
34
41
|
@flapjacktest_jid.to_s + ", port: " + @config['port'].to_s +
|
35
42
|
", server: " + @config['server'].to_s + ", password: " +
|
36
43
|
@config['password'].to_s)
|
@@ -80,12 +87,12 @@ module Flapjack
|
|
80
87
|
|
81
88
|
# Join the MUC Chat room after connecting.
|
82
89
|
def on_ready(stanza)
|
83
|
-
return if should_quit
|
90
|
+
return if @should_quit
|
84
91
|
@connected_at = Time.now.to_i
|
85
|
-
logger.info("Jabber Connected")
|
92
|
+
@logger.info("Jabber Connected")
|
86
93
|
if @config['rooms'] && @config['rooms'].length > 0
|
87
94
|
@config['rooms'].each do |room|
|
88
|
-
logger.info("Joining room #{room}")
|
95
|
+
@logger.info("Joining room #{room}")
|
89
96
|
presence = Blather::Stanza::Presence.new
|
90
97
|
presence.from = @flapjacktest_jid
|
91
98
|
presence.to = Blather::JID.new("#{room}/#{@config['alias']}")
|
@@ -98,8 +105,8 @@ module Flapjack
|
|
98
105
|
|
99
106
|
# returning true to prevent the reactor loop from stopping
|
100
107
|
def on_disconnect(stanza)
|
101
|
-
return true if should_quit
|
102
|
-
logger.warn("jabbers disconnected! reconnecting in 1 second ...")
|
108
|
+
return true if @should_quit
|
109
|
+
@logger.warn("jabbers disconnected! reconnecting in 1 second ...")
|
103
110
|
EventMachine::Timer.new(1) do
|
104
111
|
connect # Blather::Client.connect
|
105
112
|
end
|
@@ -107,12 +114,12 @@ module Flapjack
|
|
107
114
|
end
|
108
115
|
|
109
116
|
def on_groupchat(stanza)
|
110
|
-
return if should_quit
|
117
|
+
return if @should_quit
|
111
118
|
|
112
119
|
stanza_body = stanza.body
|
113
120
|
|
114
|
-
logger.debug("groupchat stanza body: #{stanza_body}")
|
115
|
-
logger.debug("groupchat message received: #{stanza.inspect}")
|
121
|
+
@logger.debug("groupchat stanza body: #{stanza_body}")
|
122
|
+
@logger.debug("groupchat message received: #{stanza.inspect}")
|
116
123
|
|
117
124
|
if (stanza_body =~ /^(?:problem|recovery|acknowledgement)/i) &&
|
118
125
|
(stanza_body =~ /^(\w+).*#{Regexp.escape(@check_matcher)}/)
|
@@ -120,21 +127,21 @@ module Flapjack
|
|
120
127
|
# got something interesting
|
121
128
|
status = $1.downcase
|
122
129
|
t = Time.now.to_i
|
123
|
-
logger.debug("groupchat found the following state for #{@check_matcher}: #{status}")
|
130
|
+
@logger.debug("groupchat found the following state for #{@check_matcher}: #{status}")
|
124
131
|
|
125
132
|
case status
|
126
133
|
when 'problem'
|
127
|
-
logger.debug("updating @times last_problem")
|
134
|
+
@logger.debug("updating @times last_problem")
|
128
135
|
@times[:last_problem] = t
|
129
136
|
when 'recovery'
|
130
|
-
logger.debug("updating @times last_recovery")
|
137
|
+
@logger.debug("updating @times last_recovery")
|
131
138
|
@times[:last_recovery] = t
|
132
139
|
when 'acknowledgement'
|
133
|
-
logger.debug("updating @times last_ack")
|
140
|
+
@logger.debug("updating @times last_ack")
|
134
141
|
@times[:last_ack] = t
|
135
142
|
end
|
136
143
|
end
|
137
|
-
logger.debug("@times: #{@times.inspect}")
|
144
|
+
@logger.debug("@times: #{@times.inspect}")
|
138
145
|
end
|
139
146
|
|
140
147
|
def check_timers
|
@@ -209,15 +216,15 @@ module Flapjack
|
|
209
216
|
http = EM::HttpRequest.new(@pagerduty_events_api_url).post(options)
|
210
217
|
response = Yajl::Parser.parse(http.response)
|
211
218
|
status = http.response_header.status
|
212
|
-
logger.debug "send_pagerduty_event got a return code of #{status.to_s} - #{response.inspect}"
|
219
|
+
@logger.debug "send_pagerduty_event got a return code of #{status.to_s} - #{response.inspect}"
|
213
220
|
[status, response]
|
214
221
|
end
|
215
222
|
|
216
|
-
def
|
217
|
-
logger.debug("New oobetet pikelet with the following options: #{@config.inspect}")
|
223
|
+
def start
|
224
|
+
@logger.debug("New oobetet pikelet with the following options: #{@config.inspect}")
|
218
225
|
|
219
226
|
keepalive_timer = EM::Synchrony.add_periodic_timer(60) do
|
220
|
-
logger.debug("calling keepalive on the jabber connection")
|
227
|
+
@logger.debug("calling keepalive on the jabber connection")
|
221
228
|
write(' ') if connected?
|
222
229
|
end
|
223
230
|
|
@@ -225,7 +232,7 @@ module Flapjack
|
|
225
232
|
register_handlers
|
226
233
|
connect # Blather::Client.connect
|
227
234
|
|
228
|
-
until should_quit
|
235
|
+
until @should_quit
|
229
236
|
EM::Synchrony.sleep(10)
|
230
237
|
check_timers
|
231
238
|
end
|
@@ -236,6 +243,3 @@ module Flapjack
|
|
236
243
|
end
|
237
244
|
end
|
238
245
|
end
|
239
|
-
|
240
|
-
|
241
|
-
|
@@ -9,47 +9,36 @@ require 'flapjack/data/entity_check'
|
|
9
9
|
require 'flapjack/data/global'
|
10
10
|
require 'flapjack/redis_pool'
|
11
11
|
|
12
|
-
require 'flapjack/gateways/base'
|
13
|
-
|
14
12
|
module Flapjack
|
15
13
|
|
16
14
|
module Gateways
|
17
15
|
|
18
16
|
class Pagerduty
|
19
|
-
include Flapjack::Gateways::Generic
|
20
|
-
|
21
17
|
PAGERDUTY_EVENTS_API_URL = 'https://events.pagerduty.com/generic/2010-04-15/create_event.json'
|
22
18
|
SEM_PAGERDUTY_ACKS_RUNNING = 'sem_pagerduty_acks_running'
|
23
19
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
def bootstrap(opts = {})
|
28
|
-
generic_bootstrap(opts)
|
29
|
-
|
20
|
+
def initialize(opts = {})
|
21
|
+
@config = opts[:config]
|
22
|
+
@logger = opts[:logger]
|
30
23
|
@redis_config = opts[:redis_config]
|
31
|
-
@redis = Flapjack::RedisPool.new(:config => @redis_config, :size =>
|
24
|
+
@redis = Flapjack::RedisPool.new(:config => @redis_config, :size => 2) # first will block
|
32
25
|
|
33
|
-
logger.debug("New Pagerduty pikelet with the following options: #{@config.inspect}")
|
26
|
+
@logger.debug("New Pagerduty pikelet with the following options: #{@config.inspect}")
|
34
27
|
|
35
28
|
@pagerduty_acks_started = nil
|
29
|
+
super()
|
36
30
|
end
|
37
31
|
|
38
|
-
def
|
39
|
-
@
|
40
|
-
@
|
41
|
-
|
32
|
+
def stop
|
33
|
+
@logger.info("stopping")
|
34
|
+
@should_quit = true
|
35
|
+
@redis.rpush(@config['queue'], JSON.generate('notification_type' => 'shutdown'))
|
42
36
|
end
|
43
37
|
|
44
|
-
def
|
45
|
-
|
46
|
-
redis.rpush(@config['queue'], JSON.generate('notification_type' => 'shutdown'))
|
47
|
-
end
|
48
|
-
|
49
|
-
def main
|
50
|
-
logger.debug("pagerduty gateway - commencing main method")
|
38
|
+
def start
|
39
|
+
@logger.info("starting")
|
51
40
|
while not test_pagerduty_connection do
|
52
|
-
logger.error("Can't connect to the pagerduty API, retrying after 10 seconds")
|
41
|
+
@logger.error("Can't connect to the pagerduty API, retrying after 10 seconds")
|
53
42
|
EM::Synchrony.sleep(10)
|
54
43
|
end
|
55
44
|
|
@@ -58,19 +47,18 @@ module Flapjack
|
|
58
47
|
@redis.del(SEM_PAGERDUTY_ACKS_RUNNING)
|
59
48
|
|
60
49
|
acknowledgement_timer = EM::Synchrony.add_periodic_timer(10) do
|
61
|
-
@redis_timer ||= Flapjack::RedisPool.new(:config => @redis_config, :size => 1)
|
62
50
|
find_pagerduty_acknowledgements_if_safe
|
63
51
|
end
|
64
52
|
|
65
53
|
queue = @config['queue']
|
66
54
|
events = {}
|
67
55
|
|
68
|
-
until should_quit
|
69
|
-
logger.debug("pagerduty gateway is going into blpop mode on #{queue}")
|
56
|
+
until @should_quit
|
57
|
+
@logger.debug("pagerduty gateway is going into blpop mode on #{queue}")
|
70
58
|
events[queue] = @redis.blpop(queue, 0)
|
71
59
|
event = Yajl::Parser.parse(events[queue][1])
|
72
60
|
type = event['notification_type']
|
73
|
-
logger.debug("pagerduty notification event popped off the queue: " + event.inspect)
|
61
|
+
@logger.debug("pagerduty notification event popped off the queue: " + event.inspect)
|
74
62
|
unless 'shutdown'.eql?(type)
|
75
63
|
event_id = event['event_id']
|
76
64
|
entity, check = event_id.split(':')
|
@@ -117,18 +105,18 @@ module Flapjack
|
|
117
105
|
# timeout of five minutes to guard against stale locks caused by crashing code) either in this
|
118
106
|
# process or in other processes
|
119
107
|
if (@pagerduty_acks_started and @pagerduty_acks_started > (Time.now.to_i - 300)) or
|
120
|
-
@
|
121
|
-
logger.debug("skipping looking for acks in pagerduty as this is already happening")
|
108
|
+
@redis.get(SEM_PAGERDUTY_ACKS_RUNNING) == 'true'
|
109
|
+
@logger.debug("skipping looking for acks in pagerduty as this is already happening")
|
122
110
|
return
|
123
111
|
end
|
124
112
|
|
125
113
|
@pagerduty_acks_started = Time.now.to_i
|
126
|
-
@
|
127
|
-
@
|
114
|
+
@redis.set(SEM_PAGERDUTY_ACKS_RUNNING, 'true')
|
115
|
+
@redis.expire(SEM_PAGERDUTY_ACKS_RUNNING, 300)
|
128
116
|
|
129
117
|
find_pagerduty_acknowledgements
|
130
118
|
|
131
|
-
@
|
119
|
+
@redis.del(SEM_PAGERDUTY_ACKS_RUNNING)
|
132
120
|
@pagerduty_acks_started = nil
|
133
121
|
end
|
134
122
|
|
@@ -141,7 +129,7 @@ module Flapjack
|
|
141
129
|
"description" => "I love APIs with noops." }
|
142
130
|
code, results = send_pagerduty_event(noop)
|
143
131
|
return true if code == 200 && results['status'] =~ /success/i
|
144
|
-
logger.error "Error: test_pagerduty_connection: API returned #{code.to_s} #{results.inspect}"
|
132
|
+
@logger.error "Error: test_pagerduty_connection: API returned #{code.to_s} #{results.inspect}"
|
145
133
|
false
|
146
134
|
end
|
147
135
|
|
@@ -150,15 +138,14 @@ module Flapjack
|
|
150
138
|
http = EM::HttpRequest.new(PAGERDUTY_EVENTS_API_URL).post(options)
|
151
139
|
response = Yajl::Parser.parse(http.response)
|
152
140
|
status = http.response_header.status
|
153
|
-
logger.debug "send_pagerduty_event got a return code of #{status.to_s} - #{response.inspect}"
|
141
|
+
@logger.debug "send_pagerduty_event got a return code of #{status.to_s} - #{response.inspect}"
|
154
142
|
[status, response]
|
155
143
|
end
|
156
144
|
|
157
145
|
def find_pagerduty_acknowledgements
|
146
|
+
@logger.debug("looking for acks in pagerduty for unack'd problems")
|
158
147
|
|
159
|
-
|
160
|
-
|
161
|
-
unacknowledged_failing_checks = Flapjack::Data::Global.unacknowledged_failing_checks(:redis => @redis_timer)
|
148
|
+
unacknowledged_failing_checks = Flapjack::Data::Global.unacknowledged_failing_checks(:redis => @redis)
|
162
149
|
|
163
150
|
@logger.debug "found unacknowledged failing checks as follows: " + unacknowledged_failing_checks.join(', ')
|
164
151
|
|
@@ -190,7 +177,7 @@ module Flapjack
|
|
190
177
|
end
|
191
178
|
|
192
179
|
pg_acknowledged_by = acknowledged[:pg_acknowledged_by]
|
193
|
-
@logger.
|
180
|
+
@logger.info "#{entity_check.entity_name}:#{check} is acknowledged in pagerduty, creating flapjack acknowledgement... "
|
194
181
|
who_text = ""
|
195
182
|
if !pg_acknowledged_by.nil? && !pg_acknowledged_by['name'].nil?
|
196
183
|
who_text = " by #{pg_acknowledged_by['name']}"
|
@@ -223,12 +210,6 @@ module Flapjack
|
|
223
210
|
@logger.debug("pagerduty_acknowledged?: auth: #{options[:head].inspect}")
|
224
211
|
|
225
212
|
http = EM::HttpRequest.new(url).get(options)
|
226
|
-
# DEBUG flapjack-pagerduty: pagerduty_acknowledged?: decoded response as:
|
227
|
-
# {"incidents"=>[{"incident_number"=>40, "status"=>"acknowledged",
|
228
|
-
# "last_status_change_by"=>{"id"=>"PO1NWPS", "name"=>"Jesse Reynolds",
|
229
|
-
# "email"=>"jesse@bulletproof.net",
|
230
|
-
# "html_url"=>"http://bltprf.pagerduty.com/users/PO1NWPS"}}], "limit"=>100, "offset"=>0,
|
231
|
-
# "total"=>1}
|
232
213
|
begin
|
233
214
|
response = Yajl::Parser.parse(http.response)
|
234
215
|
rescue Yajl::ParseError
|
@@ -3,27 +3,20 @@
|
|
3
3
|
require 'em-synchrony'
|
4
4
|
require 'em-synchrony/em-http'
|
5
5
|
|
6
|
-
require 'flapjack/gateways/base'
|
7
|
-
|
8
6
|
module Flapjack
|
9
7
|
module Gateways
|
10
8
|
class SmsMessagenet
|
11
|
-
extend Flapjack::Gateways::Resque
|
12
9
|
|
13
10
|
MESSAGENET_URL = 'https://www.messagenet.com.au/dotnet/Lodge.asmx/LodgeSMSMessage'
|
14
11
|
|
15
12
|
class << self
|
16
13
|
|
17
|
-
|
18
|
-
|
19
|
-
def bootstrap(opts = {})
|
20
|
-
return if @bootstrapped
|
14
|
+
def start
|
21
15
|
@sent = 0
|
22
|
-
orig_bootstrap(opts)
|
23
16
|
end
|
24
17
|
|
25
18
|
def perform(notification)
|
26
|
-
logger.debug "Woo, got a notification to send out: #{notification.inspect}"
|
19
|
+
@logger.debug "Woo, got a notification to send out: #{notification.inspect}"
|
27
20
|
|
28
21
|
notification_type = notification['notification_type']
|
29
22
|
contact_first_name = notification['contact_first_name']
|
@@ -50,15 +43,15 @@ module Flapjack
|
|
50
43
|
notification['message'] = message
|
51
44
|
|
52
45
|
# TODO log error and skip instead of raising errors
|
53
|
-
if config.nil? || (config.respond_to?(:empty?) && config.empty?)
|
54
|
-
logger.error "Messagenet config is missing"
|
46
|
+
if @config.nil? || (@config.respond_to?(:empty?) && @config.empty?)
|
47
|
+
@logger.error "Messagenet config is missing"
|
55
48
|
return
|
56
49
|
end
|
57
50
|
|
58
51
|
errors = []
|
59
52
|
|
60
|
-
username = config["username"]
|
61
|
-
password = config["password"]
|
53
|
+
username = @config["username"]
|
54
|
+
password = @config["password"]
|
62
55
|
address = notification['address']
|
63
56
|
message = notification['message']
|
64
57
|
notification_id = notification['id']
|
@@ -74,7 +67,7 @@ module Flapjack
|
|
74
67
|
end
|
75
68
|
|
76
69
|
unless errors.empty?
|
77
|
-
errors.each {|err| logger.error err }
|
70
|
+
errors.each {|err| @logger.error err }
|
78
71
|
return
|
79
72
|
end
|
80
73
|
|
@@ -85,15 +78,15 @@ module Flapjack
|
|
85
78
|
|
86
79
|
http = EM::HttpRequest.new(MESSAGENET_URL).get(:query => query)
|
87
80
|
|
88
|
-
logger.debug "server response: #{http.response}"
|
81
|
+
@logger.debug "server response: #{http.response}"
|
89
82
|
|
90
83
|
status = (http.nil? || http.response_header.nil?) ? nil : http.response_header.status
|
91
84
|
if (status >= 200) && (status <= 206)
|
92
85
|
@sent += 1
|
93
|
-
logger.info "Sent SMS via Messagenet, response status is #{status}, " +
|
86
|
+
@logger.info "Sent SMS via Messagenet, response status is #{status}, " +
|
94
87
|
"notification_id: #{notification_id}"
|
95
88
|
else
|
96
|
-
logger.error "Failed to send SMS via Messagenet, response status is #{status}, " +
|
89
|
+
@logger.error "Failed to send SMS via Messagenet, response status is #{status}, " +
|
97
90
|
"notification_id: #{notification_id}"
|
98
91
|
end
|
99
92
|
|
@@ -13,8 +13,6 @@ require 'flapjack/data/entity_check'
|
|
13
13
|
require 'flapjack/redis_pool'
|
14
14
|
require 'flapjack/utility'
|
15
15
|
|
16
|
-
require 'flapjack/gateways/base'
|
17
|
-
|
18
16
|
module Flapjack
|
19
17
|
|
20
18
|
module Gateways
|
@@ -34,8 +32,8 @@ module Flapjack
|
|
34
32
|
s, h, b = printer.call(env)
|
35
33
|
[s, h, b]
|
36
34
|
else
|
37
|
-
logger.error e.message
|
38
|
-
logger.error e.backtrace.join("\n")
|
35
|
+
@logger.error e.message
|
36
|
+
@logger.error e.backtrace.join("\n")
|
39
37
|
[503, {}, ""]
|
40
38
|
end
|
41
39
|
end
|
@@ -46,29 +44,17 @@ module Flapjack
|
|
46
44
|
use Rack::MethodOverride
|
47
45
|
|
48
46
|
class << self
|
49
|
-
|
50
|
-
|
51
|
-
attr_accessor :redis
|
52
|
-
|
53
|
-
alias_method :thin_bootstrap, :bootstrap
|
54
|
-
alias_method :thin_cleanup, :cleanup
|
47
|
+
def start
|
48
|
+
@redis = Flapjack::RedisPool.new(:config => @redis_config, :size => 1)
|
55
49
|
|
56
|
-
|
57
|
-
thin_bootstrap(opts)
|
58
|
-
@redis = Flapjack::RedisPool.new(:config => opts[:redis_config], :size => 1)
|
50
|
+
@logger.info "starting web - class"
|
59
51
|
|
60
|
-
if config && config['access_log']
|
61
|
-
access_logger = Flapjack::AsyncLogger.new(config['access_log'])
|
52
|
+
if @config && @config['access_log']
|
53
|
+
access_logger = Flapjack::AsyncLogger.new(@config['access_log'])
|
62
54
|
use Flapjack::CommonLogger, access_logger
|
63
55
|
end
|
64
56
|
|
65
57
|
end
|
66
|
-
|
67
|
-
def cleanup
|
68
|
-
@redis.empty! if @redis
|
69
|
-
thin_cleanup
|
70
|
-
end
|
71
|
-
|
72
58
|
end
|
73
59
|
|
74
60
|
include Flapjack::Utility
|
@@ -13,7 +13,7 @@
|
|
13
13
|
%form{:action => "/acknowledgements/#{check_path_escaped}", :method => "post"}
|
14
14
|
%h2
|
15
15
|
State: #{@check_state ? @check_state.upcase : ''}
|
16
|
-
- if (['warning', 'critical'].include?(@check_state) and !(@current_unscheduled_maintenance || @current_scheduled_maintenance))
|
16
|
+
- if (['warning', 'critical', 'unknown'].include?(@check_state) and !(@current_unscheduled_maintenance || @current_scheduled_maintenance))
|
17
17
|
%input{:type => 'hidden', :name => 'acknowledgement_id', :value => "#{@acknowledgement_id}"}
|
18
18
|
%input{:type => 'submit', :value => 'Acknowledge', :class => 'button'}
|
19
19
|
with
|