poise-monit-compat 1.0.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 +7 -0
- data/.foodcritic +1 -0
- data/.gitignore +11 -0
- data/.kitchen.yml +8 -0
- data/.travis.yml +20 -0
- data/.yardopts +7 -0
- data/Berksfile +30 -0
- data/CHANGELOG.md +9 -0
- data/Gemfile +36 -0
- data/LICENSE +201 -0
- data/README.md +139 -0
- data/Rakefile +17 -0
- data/chef/attributes/default.rb +63 -0
- data/chef/recipes/default.rb +47 -0
- data/chef/recipes/postfix.rb +31 -0
- data/chef/recipes/postgresql.rb +32 -0
- data/chef/recipes/rabbitmq.rb +31 -0
- data/chef/recipes/resque.rb +25 -0
- data/chef/recipes/resque_scheduler.rb +30 -0
- data/chef/recipes/ssh.rb +30 -0
- data/chef/recipes/unicorn.rb +25 -0
- data/chef/templates/compat.conf.erb +43 -0
- data/chef/templates/resque.conf.erb +21 -0
- data/chef/templates/unicorn.conf.erb +17 -0
- data/lib/poise_monit_compat.rb +21 -0
- data/lib/poise_monit_compat/cheftie.rb +17 -0
- data/lib/poise_monit_compat/resources.rb +26 -0
- data/lib/poise_monit_compat/resources/monitrc.rb +95 -0
- data/lib/poise_monit_compat/version.rb +20 -0
- data/poise-monit-compat.gemspec +42 -0
- data/test/cookbooks/monit_test/attributes/default.rb +17 -0
- data/test/cookbooks/monit_test/metadata.rb +19 -0
- data/test/cookbooks/monit_test/recipes/default.rb +17 -0
- data/test/gemfiles/chef-12.gemfile +19 -0
- data/test/gemfiles/master.gemfile +25 -0
- data/test/integration/default/serverspec/default_spec.rb +37 -0
- data/test/spec/default_spec.rb +110 -0
- data/test/spec/monitrc_spec.rb +41 -0
- data/test/spec/postfix_spec.rb +24 -0
- data/test/spec/postgresql_spec.rb +24 -0
- data/test/spec/rabbitmq_spec.rb +24 -0
- data/test/spec/resque_scheduler_spec.rb +25 -0
- data/test/spec/resque_spec.rb +24 -0
- data/test/spec/spec_helper.rb +20 -0
- data/test/spec/ssh_spec.rb +24 -0
- data/test/spec/unicorn_spec.rb +24 -0
- metadata +167 -0
data/Rakefile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2015, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
require 'poise_boiler/rakefile'
|
@@ -0,0 +1,63 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2015, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
# Some code used under MIT license
|
17
|
+
# Copyright Alex Soto
|
18
|
+
#
|
19
|
+
|
20
|
+
default['monit']['notify_email'] = nil
|
21
|
+
default['monit']['alert_blacklist'] = %w( action instance pid ppid )
|
22
|
+
|
23
|
+
default['monit']['logfile'] = 'syslog facility log_daemon'
|
24
|
+
|
25
|
+
default['monit']['poll_period'] = 60
|
26
|
+
|
27
|
+
default['monit']['mail_format']['subject'] = '$SERVICE $EVENT'
|
28
|
+
default['monit']['mail_format']['from'] = "monit@#{node['fqdn']}"
|
29
|
+
default['monit']['mail_format']['message'] = <<-EOS
|
30
|
+
Monit $ACTION $SERVICE at $DATE on $HOST: $DESCRIPTION.
|
31
|
+
Yours sincerely,
|
32
|
+
monit
|
33
|
+
EOS
|
34
|
+
|
35
|
+
default['monit']['mailserver']['host'] = 'localhost'
|
36
|
+
default['monit']['mailserver']['hostname'] = nil
|
37
|
+
default['monit']['mailserver']['port'] = nil
|
38
|
+
default['monit']['mailserver']['username'] = nil
|
39
|
+
default['monit']['mailserver']['password'] = nil
|
40
|
+
default['monit']['mailserver']['password_suffix'] = nil
|
41
|
+
default['monit']['mailserver']['encryption'] = nil
|
42
|
+
default['monit']['mailserver']['timeout'] = 60
|
43
|
+
|
44
|
+
default['monit']['port'] = 3737
|
45
|
+
default['monit']['address'] = nil
|
46
|
+
default['monit']['ssl'] = false
|
47
|
+
default['monit']['cert'] = '/etc/monit/monit.pem'
|
48
|
+
default['monit']['allow'] = []
|
49
|
+
default['monit']['username'] = nil
|
50
|
+
default['monit']['password'] = nil
|
51
|
+
|
52
|
+
default['monit']['eventqueue']['set'] = true
|
53
|
+
default['monit']['eventqueue']['basedir'] = '/var/monit'
|
54
|
+
default['monit']['eventqueue']['slots'] = 1000
|
55
|
+
|
56
|
+
default['monit']['ssh_port'] = 22
|
57
|
+
|
58
|
+
default['monit']['postgres']['pid_file'] = '/var/run/postgresql/9.1-main.pid'
|
59
|
+
default['monit']['postgres']['unix_socket_path'] = '/var/run/postgresql/.s.PGSQL'
|
60
|
+
default['monit']['postgres']['port'] = 5432
|
61
|
+
|
62
|
+
default['monit']['unicorn']['pid_dir'] = '/path/to/pids'
|
63
|
+
default['monit']['unicorn']['worker_count'] = 1
|
@@ -0,0 +1,47 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2015, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
# Transfer over node attributes as needed.
|
18
|
+
node.force_override['poise-monit']['recipe']['daemon_interval'] = node['monit']['poll_period']
|
19
|
+
node.force_override['poise-monit']['recipe']['logfile'] = node['monit']['logfile']
|
20
|
+
node.force_override['poise-monit']['recipe']['var_path'] = node['monit']['eventqueue']['basedir']
|
21
|
+
node.force_override['poise-monit']['recipe']['event_slots'] = if node['monit']['eventqueue']['set']
|
22
|
+
node['monit']['eventqueue']['slots']
|
23
|
+
else
|
24
|
+
0
|
25
|
+
end
|
26
|
+
# We're handling the HTTPD settings in the compat config if a password or allow is set.
|
27
|
+
if node['monit']['password'] || !node['monit']['allow'].empty?
|
28
|
+
node.force_override['poise-monit']['recipe']['httpd_port'] = false
|
29
|
+
else
|
30
|
+
node.force_override['monit']['port'] = false
|
31
|
+
end
|
32
|
+
|
33
|
+
# If no specific provider was requested, force it to use system.
|
34
|
+
unless node['poise-monit']['monit'] && node['poise-monit']['monit']['provider']
|
35
|
+
node.force_override['poise-monit']['monit']['provider'] = 'system'
|
36
|
+
end
|
37
|
+
|
38
|
+
# Reset the cache.
|
39
|
+
node.attributes.reset_cache('monit')
|
40
|
+
node.attributes.reset_cache('poise-monit')
|
41
|
+
|
42
|
+
include_recipe 'poise-monit'
|
43
|
+
|
44
|
+
monit_config 'compat' do
|
45
|
+
source 'compat.conf.erb'
|
46
|
+
variables node['monit']
|
47
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2015, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
# Some code used under MIT license
|
17
|
+
# Copyright Alex Soto
|
18
|
+
#
|
19
|
+
|
20
|
+
include_recipe 'monit'
|
21
|
+
|
22
|
+
monit_config 'postfix' do
|
23
|
+
content <<-EOH
|
24
|
+
CHECK PROCESS postfix WITH PIDFILE /var/spool/postfix/pid/master.pid
|
25
|
+
start program = "/etc/init.d/postfix start"
|
26
|
+
stop program = "/etc/init.d/postfix stop"
|
27
|
+
GROUP mail
|
28
|
+
IF FAILED PORT 25 PROTOCOL smtp THEN restart
|
29
|
+
IF 5 RESTARTS WITHIN 5 CYCLES THEN timeout
|
30
|
+
EOH
|
31
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2015, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
# Some code used under MIT license
|
17
|
+
# Copyright Alex Soto
|
18
|
+
#
|
19
|
+
|
20
|
+
include_recipe 'monit'
|
21
|
+
|
22
|
+
monit_config 'postgresql' do
|
23
|
+
content <<-EOH
|
24
|
+
CHECK PROCESS postgresql WITH PIDFILE #{node['monit']['postgres']['pid_file']}
|
25
|
+
start program = "/etc/init.d/postgresql start"
|
26
|
+
stop program = "/etc/init.d/postgresql stop"
|
27
|
+
GROUP postgres
|
28
|
+
IF FAILED UNIXSOCKET #{node['monit']['postgres']['unix_socket_path']}.#{node['monit']['postgres']['port']} PROTOCOL pgsql THEN RESTART
|
29
|
+
IF FAILED HOST 127.0.0.1 PORT #{node['monit']['postgres']['port']} PROTOCOL pgsql THEN RESTART
|
30
|
+
IF 5 RESTARTS WITHIN 5 CYCLES THEN TIMEOUT
|
31
|
+
EOH
|
32
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2015, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
# Some code used under MIT license
|
17
|
+
# Copyright Alex Soto
|
18
|
+
#
|
19
|
+
|
20
|
+
include_recipe 'monit'
|
21
|
+
|
22
|
+
monit_config 'rabbitmq' do
|
23
|
+
content <<-EOH
|
24
|
+
CHECK PROCESS rabbitmq-server WITH PIDFILE /var/run/rabbitmq/pid
|
25
|
+
GROUP rabbitmq
|
26
|
+
START PROGRAM "/usr/sbin/service rabbitmq-server start"
|
27
|
+
STOP PROGRAM "/usr/sbin/service rabbitmq-server stop"
|
28
|
+
IF DOES NOT EXIST FOR 3 CYCLES THEN RESTART
|
29
|
+
IF FAILED PORT 5672 4 TIMES WITHIN 6 CYCLES THEN RESTART
|
30
|
+
EOH
|
31
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2015, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
# Some code used under MIT license
|
17
|
+
# Copyright Alex Soto
|
18
|
+
#
|
19
|
+
|
20
|
+
include_recipe 'monit'
|
21
|
+
|
22
|
+
monit_config 'resque' do
|
23
|
+
source 'resque.conf.erb'
|
24
|
+
variables node['monit']['resque']
|
25
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2015, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
# Some code used under MIT license
|
17
|
+
# Copyright Alex Soto
|
18
|
+
#
|
19
|
+
|
20
|
+
include_recipe 'monit'
|
21
|
+
|
22
|
+
monit_config 'resque_scheduler' do
|
23
|
+
content <<-EOH
|
24
|
+
check process resque_scheduler with pidfile #{node['monit']['resque']['app_root']}/tmp/pids/resque_scheduler.pid
|
25
|
+
group resque_scheduler
|
26
|
+
start program = "/usr/bin/env PATH=/usr/local/bin:/usr/local/ruby/bin:/usr/bin:/bin:$PATH RACK_ENV=#{node.chef_environment} /bin/sh -l -c 'cd #{node['monit']['resque']['app_root']} && nohup bundle exec rake environment resque:scheduler RAILS_ENV=#{node.chef_environment} QUEUE=* VERBOSE=1 INITIALIZER_PATH=#{node['monit']['resque']['app_root']}/config/initializers/resque.rb PIDFILE=#{node['monit']['resque']['app_root']}/tmp/pids/resque_scheduler.pid & >> log/resque_scheduler.log 2>&1'" with timeout 90 seconds
|
27
|
+
stop program = "/bin/sh -c 'cd #{node['monit']['resque']['app_root']} && kill -9 `cat tmp/pids/resque_scheduler.pid` && rm -f tmp/pids/resque_scheduler.pid; exit 0;'"
|
28
|
+
if totalmem is greater than 300 MB for 10 cycles then restart
|
29
|
+
EOH
|
30
|
+
end
|
data/chef/recipes/ssh.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2015, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
# Some code used under MIT license
|
17
|
+
# Copyright Alex Soto
|
18
|
+
#
|
19
|
+
|
20
|
+
include_recipe 'monit'
|
21
|
+
|
22
|
+
monit_config 'ssh' do
|
23
|
+
content <<-EOH
|
24
|
+
CHECK PROCESS sshd WITH PIDFILE /var/run/sshd.pid
|
25
|
+
START PROGRAM "/usr/sbin/service ssh start"
|
26
|
+
STOP PROGRAM "/usr/sbin/service ssh stop"
|
27
|
+
# under load a check may fail intermittently, so give it a few tries before restarting
|
28
|
+
IF FAILED PORT #{node['monit']['ssh_port']} PROTOCOL ssh 4 TIMES WITHIN 6 CYCLES THEN RESTART
|
29
|
+
EOH
|
30
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2015, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
# Some code used under MIT license
|
17
|
+
# Copyright Alex Soto
|
18
|
+
#
|
19
|
+
|
20
|
+
include_recipe 'monit'
|
21
|
+
|
22
|
+
monit_config 'unicorn' do
|
23
|
+
source 'unicorn.conf.erb'
|
24
|
+
variables node['monit']
|
25
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<%- unless @notify_email.to_s.empty? -%>
|
2
|
+
set mailserver <%= @mailserver['host'] %><%= " port #{@mailserver['port']}" if @mailserver['port'] %>
|
3
|
+
<%- if @mailserver['hostname'] -%>
|
4
|
+
using HOSTNAME "<%= @mailserver['hostname'] %>"
|
5
|
+
<%- end -%>
|
6
|
+
<%- if @mailserver['username'] -%>
|
7
|
+
username "<%= @mailserver['username'] %>"
|
8
|
+
<%- end -%>
|
9
|
+
<%- if @mailserver['password'] -%>
|
10
|
+
password "<%= @mailserver['password'] %>"<%= " #{@mailserver['password_suffix']}" if @mailserver['password_suffix'] %>
|
11
|
+
<%- end -%>
|
12
|
+
<%- if @mailserver['encryption'] -%>
|
13
|
+
using <%= @mailserver['encryption'] %>
|
14
|
+
<%- end -%>
|
15
|
+
<%- if @mailserver['timeout'] -%>
|
16
|
+
with timeout <%= @mailserver['timeout'] %> seconds
|
17
|
+
<%- end -%>
|
18
|
+
|
19
|
+
set mail-format {
|
20
|
+
from: <%= @mail_format['from'] %>
|
21
|
+
subject: <%= @mail_format['subject'] %>
|
22
|
+
message: <%= @mail_format['message'] %>
|
23
|
+
}
|
24
|
+
|
25
|
+
set alert <%= @notify_email %><%= " NOT ON { #{@alert_blacklist.join(", ")} }" unless @alert_blacklist.empty? %>
|
26
|
+
<%- end -%>
|
27
|
+
|
28
|
+
<%- if @port -%>
|
29
|
+
set httpd port <%= @port %>
|
30
|
+
<%- if @address -%>
|
31
|
+
use address <%= @address %>
|
32
|
+
<%- end -%>
|
33
|
+
<%- @allow.each do |a| -%>
|
34
|
+
allow <%= a %>
|
35
|
+
<%- end -%>
|
36
|
+
<%- if @username -%>
|
37
|
+
allow <%= @username %>:<%= @password %>
|
38
|
+
<%- end -%>
|
39
|
+
<%- if @ssl -%>
|
40
|
+
ssl enable
|
41
|
+
pemfile <%= @cert %>
|
42
|
+
<%- end -%>
|
43
|
+
<%- end -%>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<% counter = 0 %>
|
2
|
+
|
3
|
+
<% (@queues || []).each do |queue| %>
|
4
|
+
<% queue['worker_count'].times do %>
|
5
|
+
check process resque_worker_<%= counter %> with pidfile <%= @app_root %>/tmp/pids/resque_worker.<%= counter %>.pid
|
6
|
+
|
7
|
+
group resque_workers
|
8
|
+
|
9
|
+
# Note: the priority of queues is determined by their order in the following statement:
|
10
|
+
|
11
|
+
start program = "/usr/bin/env PATH=/usr/local/bin:/usr/local/ruby/bin:/usr/bin:/bin:$PATH /bin/sh -l -c 'cd <%= @app_root %> && nohup bundle exec rake environment resque'work' RAILS_ENV=<%= node.chef_environment %> QUEUE=<%=
|
12
|
+
queue['queue_list'].join(',')
|
13
|
+
%> VERBOSE=1 PIDFILE=<%= @app_root %>/tmp/pids/resque_worker.<%= counter %>.pid >> log/resque_worker.<%= counter %>.log 2>&1 &'" with timeout 90 seconds
|
14
|
+
|
15
|
+
stop program = "/bin/sh -c 'cd <%= @app_root %> && kill -TERM `cat tmp/pids/resque_worker.<%= counter %>.pid` && rm -f tmp/pids/resque_worker.<%= counter %>.pid; exit 0;'"
|
16
|
+
|
17
|
+
if totalmem is greater than 1500 MB for 10 cycles then restart
|
18
|
+
|
19
|
+
<% counter += 1 %>
|
20
|
+
<% end %>
|
21
|
+
<% end %>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
check process unicorn with pidfile <%= @unicorn["pid_dir"] %>/unicorn.pid
|
2
|
+
start program "/etc/init.d/unicorn start"
|
3
|
+
stop program "/etc/init.d/unicorn stop"
|
4
|
+
if 5 restarts within 5 cycles then timeout
|
5
|
+
|
6
|
+
<%- @unicorn['worker_count'].times do |i| -%>
|
7
|
+
check process unicorn_worker_<%= i %> with pidfile <%= ::File.join(@unicorn['pid_dir'], "unicorn.worker.#{i}.pid") %>
|
8
|
+
<%- unless @notify_email.to_s.empty? -%>
|
9
|
+
alert <%= @notify_email %> only on { pid }
|
10
|
+
<%- end -%>
|
11
|
+
if changed pid 2 times within 60 cycles then alert
|
12
|
+
if memory usage > 16% for 1 cycles then
|
13
|
+
exec "/etc/init.d/unicorn kill_worker 0"
|
14
|
+
if cpu is greater than 50% for 2 cycles then
|
15
|
+
exec "/etc/init.d/unicorn kill_worker 0"
|
16
|
+
|
17
|
+
<%- end -%>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2015, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
|
18
|
+
module PoiseMonitCompat
|
19
|
+
autoload :Resources, 'poise_monit_compat/resources'
|
20
|
+
autoload :VERSION, 'poise_monit_compat/version'
|
21
|
+
end
|