magic_recipes_two 0.0.94 → 0.0.95

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.
Files changed (28) hide show
  1. checksums.yaml +4 -4
  2. data/lib/capistrano/magic_recipes/sidekiq_helpers.rb +66 -0
  3. data/lib/capistrano/magic_recipes/version.rb +1 -1
  4. data/lib/capistrano/tasks/monit.rake +94 -31
  5. data/lib/capistrano/tasks/sidekiq_six.rake +4 -51
  6. data/lib/capistrano/tasks/thin_sysd.rake +1 -0
  7. data/lib/generators/capistrano/magic_recipes/templates/monit/alert_slack.erb +2 -0
  8. data/lib/generators/capistrano/magic_recipes/templates/monit/file_checks.erb +12 -0
  9. data/lib/generators/capistrano/magic_recipes/templates/monit/monitrc.erb +11 -21
  10. data/lib/generators/capistrano/magic_recipes/templates/monit/nginx.erb +3 -3
  11. data/lib/generators/capistrano/magic_recipes/templates/monit/pm2.erb +11 -8
  12. data/lib/generators/capistrano/magic_recipes/templates/monit/postgresql.erb +3 -3
  13. data/lib/generators/capistrano/magic_recipes/templates/monit/pwa.erb +1 -1
  14. data/lib/generators/capistrano/magic_recipes/templates/monit/redis.erb +3 -3
  15. data/lib/generators/capistrano/magic_recipes/templates/monit/sidekiq.erb +5 -5
  16. data/lib/generators/capistrano/magic_recipes/templates/monit/sidekiq_six.erb +19 -0
  17. data/lib/generators/capistrano/magic_recipes/templates/monit/thin.erb +5 -5
  18. data/lib/generators/capistrano/magic_recipes/templates/monit/thin_sysd.erb +17 -0
  19. data/lib/generators/capistrano/magic_recipes/templates/monit/website.erb +4 -4
  20. data/lib/generators/capistrano/magic_recipes/templates/monit/website_checks.erb +25 -0
  21. data/lib/generators/capistrano/magic_recipes/templates/nginx_monit.conf.erb +0 -2
  22. data/lib/generators/capistrano/magic_recipes/templates/sidekiq.docu-service.erb +6 -0
  23. data/lib/generators/capistrano/magic_recipes/templates/sidekiq.service.erb +6 -0
  24. data/lib/generators/capistrano/magic_recipes/templates/thin.service.erb +6 -0
  25. metadata +8 -5
  26. data/lib/capistrano/tasks/monit_sidekiq.rake +0 -44
  27. data/lib/generators/capistrano/magic_recipes/templates/monit/nginx_conf.erb +0 -14
  28. data/lib/generators/capistrano/magic_recipes/templates/monit/websiteX.erb +0 -23
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b50067781cfa8d65ac3c4ae487d5fa03dbe28ef2d26e7941219df9cee775a0cf
4
- data.tar.gz: a9c3c528b5786f54ce9c239f74eb4f1a067fb5706b788bfc593b44d96ca65054
3
+ metadata.gz: c6cc995232184811a31e0138cb4fe99cd50099db4af9f88e8788f9cb60c009a0
4
+ data.tar.gz: c4b44eedfced7af031ddc139b02c542fce6d883ca2c20d6de90b94f66fe28db3
5
5
  SHA512:
6
- metadata.gz: b1009790183b10583e375dfaed183b921d422ae90118bc6b6b06b2b423696b1dbacc080c00476652cb44fbc4065085578c34a2f2cc935477dbe281307e8203bc
7
- data.tar.gz: d8c692af47aa1e66249a1ebd6d0d453ac61d509cb37a2e708aee2f2682bb71757d500d2daa0ddb6effe0755c666e69215e60e7c1447b89b73b515ce185482f98
6
+ metadata.gz: daeb145647e4c9ff534d4d034eea9eab3bd58bc1fa148adc74b3ff0a9a7a495bff25d487838b584413dc62bb0a917082cb6f80f09bc5761808fa5a56120507fb
7
+ data.tar.gz: 84f68613626eacb0109566a8e05e3283ee52ec9495dc1d37d76280a86bf0b2c7e14906b81d72c6b18b8b37fd4b0af59428a3997015ca832c9cb94c63c033ab3e
@@ -0,0 +1,66 @@
1
+ module Capistrano
2
+ module MagicRecipes
3
+ module SidekiqHelpers
4
+
5
+
6
+ def for_each_process(reverse = false, &block)
7
+ pids = processes_deamones
8
+ pids.reverse! if reverse
9
+ pids.each_with_index do |service_file, idx|
10
+ within fetch(:sidekiq_six_deamon_path) do
11
+ yield(service_file, idx)
12
+ end
13
+ end
14
+ end
15
+
16
+ def processes_deamones
17
+ deamons = []
18
+ if fetch(:sidekiq_six_special_queues)
19
+ fetch(:sidekiq_six_queued_processes, []).each do |qp|
20
+ counter = (qp[:processes] && qp[:processes].to_i > 0 ? qp[:processes].to_i : 1)
21
+ if counter > 1
22
+ counter.times do |idx|
23
+ deamons.push "#{ fetch(:sidekiq_six_deamon_file) }-#{ qp[:queue] }-#{ idx }"
24
+ end
25
+ else
26
+ deamons.push "#{ fetch(:sidekiq_six_deamon_file) }-#{ qp[:queue] }"
27
+ end
28
+ end
29
+ else
30
+ counter = fetch(:sidekiq_six_processes).to_i
31
+ if counter > 1
32
+ counter.times do |idx|
33
+ deamons.push "#{ fetch(:sidekiq_six_deamon_file) }-#{ idx }"
34
+ end
35
+ else
36
+ deamons.push "#{ fetch(:sidekiq_six_deamon_file) }"
37
+ end
38
+ end
39
+ deamons
40
+ end
41
+
42
+ def sidekiq_special_config(idx)
43
+ if fetch(:sidekiq_six_special_queues)
44
+ settingz = []
45
+ fetch(:sidekiq_six_queued_processes).each do |that|
46
+ (that[:processes] && that[:processes].to_i > 0 ? that[:processes].to_i : 1 ).to_i.times do
47
+ sttng_hash = {}
48
+ sttng_hash[:queue] = that[:queue] ? that[:queue] : "default"
49
+ sttng_hash[:concurrency] = that[:worker] && that[:worker].to_i > 0 ? that[:worker].to_i : 7
50
+ settingz.push( sttng_hash )
51
+ end
52
+ end
53
+ settingz[ idx.to_i ]
54
+ else
55
+ {}
56
+ end
57
+ end
58
+
59
+
60
+ end
61
+ end
62
+ end
63
+
64
+
65
+
66
+
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module MagicRecipes
3
- VERSION = "0.0.94"
3
+ VERSION = "0.0.95"
4
4
  end
5
5
  end
@@ -1,4 +1,6 @@
1
1
  require 'capistrano/magic_recipes/base_helpers'
2
+ require 'capistrano/magic_recipes/sidekiq_helpers'
3
+ include Capistrano::MagicRecipes::SidekiqHelpers
2
4
  include Capistrano::MagicRecipes::BaseHelpers
3
5
 
4
6
  namespace :load do
@@ -10,11 +12,10 @@ namespace :load do
10
12
  set :monit_logfile, -> { "#{shared_path}/log/monit.log" }
11
13
  set :monit_idfile, -> { '/var/lib/monit/id' }
12
14
  set :monit_statefile, -> { '/var/lib/monit/state' }
13
- set :monit_downgrade_on_deploy, -> { false }
14
15
  ## Status
15
16
  set :monit_active, -> { true }
16
17
  set :monit_main_rc, -> { true }
17
- # set :monit_processes, -> { %w[nginx pm2 postgresql pwa redis sidekiq thin website website2 website3] }
18
+ # set :monit_processes, -> { %w[nginx pm2 postgresql pwa redis sidekiq thin website website_checks file_checks] }
18
19
  set :monit_processes, -> { %w[nginx postgresql thin website] }
19
20
  set :monit_name, -> { "#{ fetch(:application) }_#{ fetch(:stage) }" }
20
21
  ## Mailer
@@ -28,24 +29,22 @@ namespace :load do
28
29
  set :monit_mail_reply_to, -> { "support@foo.bar" }
29
30
  set :monit_ignore, -> { [] } # %w[action pid]
30
31
  ## Additional stuff for postrgres
31
- set :postgresql_roles, -> { :db }
32
- set :postgresql_pid, -> { "/var/run/postgresql/9.1-main.pid" }
32
+ set :monit_pg_pid, -> { "/var/run/postgresql/12-main.pid" }
33
33
  ## Additional stuff for thin (need secrets_key_base to be set)
34
34
  set :monit_thin_totalmem_mb, -> { 300 }
35
+ set :monit_thin_pid_path, -> { fetch(:thin_pid_path, "/home/#{fetch(:user)}/run") }
36
+ set :thin_sysd_roles, -> { fetch(:thin_roles) }
35
37
  ## Additional stuff for sidekiq (need secrets_key_base to be set)
36
38
  set :monit_sidekiq_totalmem_mb, -> { 300 }
37
39
  set :monit_sidekiq_timeout_sec, -> { 90 }
40
+ set :monit_sidekiq_pid_path, -> { fetch(:sidekiq_six_pid_path, "/home/#{fetch(:user)}/run") }
38
41
  ## Additional App helpers
39
42
  set :monit_app_worker_command, -> { "cd #{ current_path } ; #{fetch(:rvm_path)}/bin/rvm #{fetch(:rvm_ruby_version)} do bundle exec MONIT_CMD" }
40
43
  set :monit_app_worker_role, -> { :user } # user / bash / shell
41
44
  set :monit_app_worker_prefix, -> { :rvm } # rvm / rvm1capistrano3 / env
42
45
  ## WebClient
43
46
  set :monit_http_client, -> { true }
44
- set :monit_http_domain, -> { false }
45
47
  set :monit_http_port, -> { 2812 }
46
- set :monit_http_use_ssl, -> { false }
47
- set :monit_http_allow_self_certification, -> { false }
48
- set :monit_http_pemfile, -> { "/etc/monit/monit.pem" }
49
48
  set :monit_http_username, -> { "admin" }
50
49
  set :monit_http_password, -> { "monitor" }
51
50
  # use a subdomain for monit?
@@ -56,23 +55,16 @@ namespace :load do
56
55
  set :monit_webclient_ssl_key, -> { false }
57
56
  set :monit_nginx_template, -> { :default }
58
57
  ## Website
58
+ set :monit_website_check_name, -> { "#{fetch(:application)}-#{fetch(:stage)}" }
59
59
  set :monit_website_check_timeout, -> { 10 }
60
60
  set :monit_website_check_cycles, -> { 3 }
61
61
  set :monit_website_check_content, -> { false }
62
62
  set :monit_website_check_path, -> { "/" }
63
63
  set :monit_website_check_text, -> { "<!DOCTYPE html>" }
64
- ## Website2
65
- set :monit_website2_check_domains, -> { [] }
66
- set :monit_website2_check_ssl, -> { false }
67
- set :monit_website2_check_content, -> { false }
68
- set :monit_website2_check_path, -> { "/" }
69
- set :monit_website2_check_text, -> { "<!DOCTYPE html>" }
70
- ## Website3
71
- set :monit_website3_check_domains, -> { [] }
72
- set :monit_website3_check_ssl, -> { false }
73
- set :monit_website3_check_content, -> { false }
74
- set :monit_website3_check_path, -> { "/" }
75
- set :monit_website3_check_text, -> { "<!DOCTYPE html>" }
64
+ ## check other Sites:
65
+ set :monit_websites_to_check, -> { [] }
66
+ # Website: { name: String, domain: String, ssl: Boolean, check_content: Boolean, path: String, content: String }
67
+
76
68
  ## M/Monit
77
69
  set :monit_mmonit_url, -> { false }
78
70
 
@@ -83,12 +75,23 @@ namespace :load do
83
75
  set :monit_pm2_pid_path, -> { "/home/#{fetch(:user)}/.pm2/pids" }
84
76
  set :monit_pm2_start_script, -> { "ecosystem.config.js" }
85
77
  set :monit_pm2_stage, -> { "production" }
86
- set :monit_pm2_website, -> { "example.com" }
87
- set :monit_pm2_website_ssl, -> { false }
88
78
  set :pm2_roles, -> { :web }
89
79
  set :monit_pm2_worker_role, -> { :user }
90
80
  set :monit_pm2_worker_prefix, -> { "" }
81
+ set :monit_pm2_check_website, -> { false }
82
+ set :monit_pm2_website_name, -> { "PM2 #{fetch(:application)} #{fetch(:stage)}" }
83
+ set :monit_pm2_website_url, -> { "example.com" }
84
+ set :monit_pm2_website_ssl, -> { false }
85
+
91
86
 
87
+ ## Check files
88
+ set :monit_files_to_check, -> { [] }
89
+ ## FILE: { name: String, path: String, max_size: Integer, clear: Boolean }
90
+
91
+ ## Slack Alerts
92
+ set :monit_use_slack, -> { false }
93
+ set :monit_slack_webhook, -> { "" } # your Slack webhook URL
94
+ set :monit_slack_bin_path, -> { "/etc/monit/alert_slack.sh" }
92
95
 
93
96
  end
94
97
  end
@@ -115,8 +118,8 @@ namespace :monit do
115
118
  # invoke "monit:redis"
116
119
  # invoke "monit:thin"
117
120
  # invoke "monit:configure_website"
118
- %w[nginx pm2 postgresql pwa redis sidekiq thin website website2 website3].each do |command|
119
- invoke "monit:configure_#{command}" if Array(fetch(:monit_processes)).include?(command)
121
+ %w[nginx pm2 postgresql pwa redis sidekiq sidekiq_six thin thin_sysd website website_checks file_checks].each do |command|
122
+ invoke "monit:#{command}:configure" if Array(fetch(:monit_processes)).include?(command)
120
123
  end
121
124
  if fetch(:monit_webclient, false) && fetch(:monit_webclient_domain, false)
122
125
  invoke "nginx:monit:add"
@@ -135,7 +138,7 @@ namespace :monit do
135
138
  end
136
139
  end
137
140
 
138
- %w[nginx pm2 postgresql redis sidekiq thin].each do |process|
141
+ %w[nginx pm2 postgresql redis sidekiq sidekiq_six thin thin_sysd].each do |process|
139
142
  namespace process.to_sym do
140
143
 
141
144
  %w[monitor unmonitor start stop restart].each do |command|
@@ -174,10 +177,12 @@ namespace :monit do
174
177
  end
175
178
  end
176
179
  end
177
- elsif %w[pm2 pwa sidekiq thin].include?(process)
180
+ elsif %w[pm2 pwa sidekiq thin sidekiq_six thin_sysd].include?(process)
178
181
  ## App specific tasks (unique for app and environment)
179
182
  desc "Upload Monit #{process} config file (app specific)"
180
183
  task "configure" do
184
+ puts "configure: #{process}"
185
+ puts ":monit_processes: #{ Array(fetch(:monit_processes)) }"
181
186
  if Array(fetch(:monit_processes)).include?(process)
182
187
  on release_roles fetch("#{process}_roles".to_sym) do |role|
183
188
  monit_config process, "/etc/monit/conf.d/#{fetch(:application)}_#{fetch(:stage)}_#{process}.conf", role
@@ -189,14 +194,13 @@ namespace :monit do
189
194
  end
190
195
  end
191
196
 
192
- %w[pwa website website2 website3].each do |process|
197
+ %w[pwa website website_checks file_checks].each do |process|
193
198
  namespace process.to_sym do
194
199
 
195
200
  desc "Upload Monit #{process} config file (app specific)"
196
- task "configure_#{process}" do
201
+ task "configure" do
197
202
  if Array(fetch(:monit_processes)).include?(process)
198
- on release_roles fetch("#{process =~ /website/ ? 'nginx' : process}_roles".to_sym, :web) do |role|
199
- process_file = process =~ /^website\d{1}$/ ? 'websiteX' : process
203
+ on release_roles fetch("#{process =~ /^website|file/ ? 'nginx' : process}_roles".to_sym, :web) do |role|
200
204
  monit_config process, "/etc/monit/conf.d/#{fetch(:application)}_#{fetch(:stage)}_#{process}.conf", role
201
205
  end
202
206
  end
@@ -206,6 +210,19 @@ namespace :monit do
206
210
  end
207
211
 
208
212
 
213
+ namespace :slack do
214
+ desc 'Downgrade MONIT to 5.16 (fix action problem)'
215
+ task :configure do
216
+ on roles :db do
217
+ on release_roles fetch(:monit_roles) do |role|
218
+ monit_config 'alert_slack', "#{ fetch(:monit_slack_bin_path) }", role
219
+ execute :sudo, "chmod +x #{ fetch(:monit_slack_bin_path) }"
220
+ end
221
+ end
222
+ end
223
+ end
224
+
225
+
209
226
 
210
227
 
211
228
  %w[start stop restart syntax reload].each do |command|
@@ -221,6 +238,10 @@ namespace :monit do
221
238
  fetch(:sidekiq_service_name, "#{fetch(:application)}_#{fetch(:stage)}_sidekiq_") + index.to_s
222
239
  end
223
240
 
241
+ def sidekiq_six_service_name(service_file)
242
+ "#{fetch(:application)}_#{fetch(:stage)}_sidekiq_#{ service_file.split('-').last }"
243
+ end
244
+
224
245
  end
225
246
 
226
247
  def monit_config( name, destination = nil, role = nil )
@@ -268,6 +289,44 @@ end
268
289
 
269
290
 
270
291
 
292
+
293
+ def init_site_check_item( domain )
294
+ ## defaults
295
+ that = { ssl: false, check_content: false, path: '/', content: '<!DOCTYPE html>', timeout: 30, cycles: 3 }
296
+ that.merge! domain
297
+ that[:name] = that[:domain] if [nil, '', ' '].include?( that[:name] )
298
+ that
299
+ end
300
+
301
+ def init_file_check_item( file )
302
+ ## defaults
303
+ that = { name: '', path: '', max_size: 12, clear: false }
304
+ that.merge! file
305
+ that[:name] = that[:path].to_s.split('/').last if [nil, '', ' '].include?( that[:name] )
306
+ that
307
+ end
308
+
309
+ def monit_website_list
310
+ Array( fetch(:monit_websites_to_check) ).map{ |x| init_site_check_item(x) }
311
+ end
312
+
313
+ def monit_files_list
314
+ Array( fetch(:monit_files_to_check) ).map{ |x| init_file_check_item(x) }
315
+ end
316
+
317
+
318
+
319
+ def monit_alert
320
+ if fetch(:monit_use_slack, false)
321
+ "exec #{fetch(:monit_slack_bin_path)} and repeat every 3 cycles"
322
+ else
323
+ "alert"
324
+ end
325
+ end
326
+
327
+
328
+
329
+
271
330
  namespace :nginx do
272
331
  namespace :monit do
273
332
 
@@ -316,7 +375,11 @@ namespace :lets_encrypt do
316
375
  desc "Generate MONIT-WebClient LetsEncrypt certificate"
317
376
  task :monit_certonly do
318
377
  on release_roles fetch(:lets_encrypt_roles) do
319
- execute :sudo, "#{ fetch(:lets_encrypt_path) }/certbot-auto --non-interactive --agree-tos --email #{fetch(:lets_encrypt_email)} certonly --webroot -w #{current_path}/public -d #{ fetch(:monit_webclient_domain).gsub(/^\*?\./, '') }"
378
+ if fetch(:lets_encrypt_client) == "certbot-auto"
379
+ execute :sudo, "#{ fetch(:lets_encrypt_path) }/certbot-auto --non-interactive --agree-tos --email #{fetch(:lets_encrypt_email)} certonly --webroot -w #{current_path}/public -d #{ fetch(:monit_webclient_domain).gsub(/^\*?\./, '') }"
380
+ else
381
+ execute :sudo, "certbot --non-interactive --agree-tos --email #{fetch(:lets_encrypt_email)} certonly --webroot -w #{current_path}/public -d #{ fetch(:monit_webclient_domain).gsub(/^\*?\./, '') }"
382
+ end
320
383
  end
321
384
  end
322
385
 
@@ -1,3 +1,6 @@
1
+ require 'capistrano/magic_recipes/sidekiq_helpers'
2
+ include Capistrano::MagicRecipes::SidekiqHelpers
3
+
1
4
  ##
2
5
  ## NEW! for sidekiqs new deamonized style
3
6
  ##
@@ -22,6 +25,7 @@ namespace :load do
22
25
  ## => [ { queue: "queue_name", processes: "count", worker: "count" }]
23
26
 
24
27
  set :sidekiq_six_deamon_path, -> { "/lib/systemd/system" }
28
+ set :sidekiq_six_pid_path, -> { "/home/#{fetch(:user)}/run" }
25
29
  set :sidekiq_six_deamon_template, -> { :default }
26
30
 
27
31
  set :sidekiq_six_ruby_vm, -> { :system } # ( :rvm | :rbenv | :system )
@@ -35,58 +39,7 @@ end
35
39
 
36
40
  namespace :sidekiq_six do
37
41
 
38
- def for_each_process(reverse = false, &block)
39
- pids = processes_deamones
40
- pids.reverse! if reverse
41
- pids.each_with_index do |service_file, idx|
42
- within fetch(:sidekiq_six_deamon_path) do
43
- yield(service_file, idx)
44
- end
45
- end
46
- end
47
42
 
48
- def processes_deamones
49
- deamons = []
50
- if fetch(:sidekiq_six_special_queues)
51
- fetch(:sidekiq_six_queued_processes, []).each do |qp|
52
- counter = (qp[:processes] && qp[:processes].to_i > 0 ? qp[:processes].to_i : 1)
53
- if counter > 1
54
- counter.times do |idx|
55
- deamons.push "#{ fetch(:sidekiq_six_deamon_file) }-#{ qp[:queue] }-#{ idx }"
56
- end
57
- else
58
- deamons.push "#{ fetch(:sidekiq_six_deamon_file) }-#{ qp[:queue] }"
59
- end
60
- end
61
- else
62
- counter = fetch(:sidekiq_six_processes).to_i
63
- if counter > 1
64
- counter.times do |idx|
65
- deamons.push "#{ fetch(:sidekiq_six_deamon_file) }-#{ idx }"
66
- end
67
- else
68
- deamons.push "#{ fetch(:sidekiq_six_deamon_file) }"
69
- end
70
- end
71
- deamons
72
- end
73
-
74
- def sidekiq_special_config(idx)
75
- if fetch(:sidekiq_six_special_queues)
76
- settingz = []
77
- fetch(:sidekiq_six_queued_processes).each do |that|
78
- (that[:processes] && that[:processes].to_i > 0 ? that[:processes].to_i : 1 ).to_i.times do
79
- sttng_hash = {}
80
- sttng_hash[:queue] = that[:queue] ? that[:queue] : "default"
81
- sttng_hash[:concurrency] = that[:worker] && that[:worker].to_i > 0 ? that[:worker].to_i : 7
82
- settingz.push( sttng_hash )
83
- end
84
- end
85
- settingz[ idx.to_i ]
86
- else
87
- {}
88
- end
89
- end
90
43
 
91
44
  def upload_deamon(service_file, idx = 0)
92
45
  args = []
@@ -21,6 +21,7 @@ namespace :load do
21
21
  set :thin_daemon_ruby_vm, -> { :system } # ( :rvm | :rbenv | :system )
22
22
  set :thin_daemon_file, -> { "thin_#{fetch(:application)}_#{fetch(:stage)}" }
23
23
  set :thin_daemon_path, -> { "/lib/systemd/system" }
24
+ set :thin_pid_path, -> { "/home/#{fetch(:user)}/run" }
24
25
  set :thin_daemon_template, -> { :default }
25
26
  set :thin_daemon_log_lines, -> { 100 }
26
27
  set :thin_daemon_user, -> { fetch(:user, 'deploy') } # role-user
@@ -0,0 +1,2 @@
1
+ #!/bin/sh
2
+ /usr/bin/curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"*$MONIT_SERVICE* - \`${MONIT_DESCRIPTION}\`\n> $MONIT_HOST\"}" <%= fetch(:monit_slack_webhook) %>
@@ -0,0 +1,12 @@
1
+ # Check files for <%= fetch(:application) %> [<%= fetch(:stage) %>]
2
+ <% monit_files_list.each do |that| %>
3
+ check file "<%= that[:name] %>" with path <%= that[:path] %>
4
+ if size > <%= that[:max_size].to_i %> GB then <%= monit_alert %>
5
+ <% if that[:clear] %>
6
+ if size > <%= that[:max_size].to_i %> GB
7
+ for 3 cycles
8
+ then exec '/bin/echo "cleared by MONIT - $( date +"%F - %R" ):" > <%= that[:path] %>'
9
+ repeat every 20 cycles
10
+ <% end %>
11
+
12
+ <% end %>
@@ -28,11 +28,9 @@ set mail-format {
28
28
  Your faithful employee,
29
29
  M O N I T
30
30
 
31
- <% if fetch(:monit_http_client) %><% if fetch(:monit_http_domain) %>
32
- Web: <%= fetch(:monit_http_use_ssl) ? "https" : "http" %>://<%= fetch(:monit_http_domain) %>:<%= fetch(:monit_http_port) %>/
33
- <% else %>
34
- Web: <%= fetch(:monit_http_use_ssl) ? "https" : "http" %>://<%= fetch(:app_server_ip) %>:<%= fetch(:monit_http_port) %>/
35
- <% end %><% end %>
31
+ <% if fetch(:monit_webclient) %>
32
+ Web: <%= fetch(:monit_webclient_use_ssl) ? "https" : "http" %>://<%= fetch(:monit_webclient_domain) %>
33
+ <% end %>
36
34
  }
37
35
 
38
36
  set mailserver <%= fetch(:monit_mail_server) %> port <%= fetch(:monit_mail_port) %>
@@ -44,29 +42,21 @@ set mailserver <%= fetch(:monit_mail_server) %> port <%= fetch(:monit_mail_port)
44
42
 
45
43
  set alert <%= fetch(:monit_mail_to) %><%= Array( fetch(:monit_ignore, nil) ).count > 0 ? " but not on { #{ Array( fetch(:monit_ignore, nil) ).join(", ") } }" : "" %>
46
44
 
47
- <% if fetch(:monit_http_client) %>
45
+ <% if fetch(:monit_webclient) %>
48
46
  set httpd port <%= fetch(:monit_http_port) %>
49
- <% if fetch(:monit_http_domain) %>
50
- use address <%= fetch(:monit_http_domain) %>
51
- <% end %>
52
- # allow 127.0.0.1
53
- <% if fetch(:monit_http_use_ssl) %>
54
- ssl enable
55
- pemfile <%= fetch(:monit_http_pemfile) %>
56
- <% if fetch(:monit_http_allow_self_certification) %>
57
- ALLOWSELFCERTIFICATION
58
- <% end %>
59
- <% end %>
47
+ <% if fetch(:monit_webclient_use_ssl, false) %>
48
+ allow 127.0.0.1
49
+ <% end %>
60
50
  allow <%= fetch(:monit_http_username) %>:<%= fetch(:monit_http_password) %>
61
51
  <% end %>
62
52
 
63
53
  check system <%= fetch(:monit_name, "#{ fetch(:application) }_server") %>
64
- if loadavg(5min) > 2 for 2 cycles then alert
65
- if memory > 75% for 2 cycles then alert
66
- if cpu(user) > 75% for 2 cycles then alert
54
+ if loadavg(5min) > 2 for 2 cycles then <%= monit_alert %>
55
+ if memory > 75% for 2 cycles then <%= monit_alert %>
56
+ if cpu(user) > 75% for 2 cycles then <%= monit_alert %>
67
57
 
68
58
  check device HardDrive with path /
69
- if SPACE usage > 75% then alert
59
+ if SPACE usage > 75% then <%= monit_alert %>
70
60
 
71
61
 
72
62
  <% if fetch(:monit_mmonit_url, false) %>
@@ -3,10 +3,10 @@ check process nginx with pidfile /var/run/nginx.pid
3
3
  start program = "/etc/init.d/nginx start"
4
4
  stop program = "/etc/init.d/nginx stop"
5
5
  # if does not exist then start # (default)
6
- # if does not exist for 3 cycles then alert
7
- if 3 restarts within 5 cycles then alert
6
+ # if does not exist for 3 cycles then <%= monit_alert %>
7
+ if 3 restarts within 5 cycles then <%= monit_alert %>
8
8
  if children > 250 then restart
9
9
  if failed host 127.0.0.1 port 80 then restart
10
- if cpu is greater than 40% for 2 cycles then alert
10
+ if cpu is greater than 40% for 2 cycles then <%= monit_alert %>
11
11
  if cpu > 60% for 5 cycles then restart
12
12
  if 10 restarts within 10 cycles then timeout
@@ -5,19 +5,20 @@
5
5
  start program = "<%= monit_pm2_prefixed("pm2 restart #{fetch(:monit_pm2_start_script)} --env #{fetch(:monit_pm2_stage)}") %>"
6
6
  stop program = "<%= monit_pm2_prefixed("pm2 stop #{fetch(:monit_pm2_start_script)} --env #{fetch(:monit_pm2_stage)}") %>"
7
7
  # if does not exist then start # (default)
8
- if does not exist for 3 cycles then alert
9
- # if 3 restarts within 10 cycles then alert
10
- # if cpu > 50% then alert
8
+ if does not exist for 3 cycles then <%= monit_alert %>
9
+ # if 3 restarts within 10 cycles then <%= monit_alert %>
10
+ # if cpu > 50% then <%= monit_alert %>
11
11
  # if cpu > 50% for 3 cycles then restart
12
12
  # if 5 restarts within 15 cycles then timeout
13
13
  # alert <%= fetch(:monit_mail_to) %> only on { pid }
14
- if changed pid 3 times within 10 cycles then alert
14
+ if changed pid 3 times within 10 cycles then <%= monit_alert %>
15
15
  <% end %>
16
16
 
17
17
 
18
-
18
+ <% if fetch(:monit_pm2_check_website, false) %>
19
19
  # Check website for pm2: <%= fetch(:application) %> [<%= fetch(:stage) %>]
20
- check host <%= fetch(:monit_pm2_website) %> with address <%= fetch(:monit_pm2_website) %>
20
+ check host "<%= fetch(:monit_pm2_website_name).gsub(/\s+/,'-').gsub(/_/,'-').gsub(/:/,'-').gsub(/--+/,'-') %>" with address <%= fetch(:monit_pm2_website_url) %>
21
+ <% if fetch(:monit_pm2_website_ssl) %>if failed port 443 protocol https and certificate valid > 2 days then <%= monit_alert %><% end %>
21
22
  if failed
22
23
  <% if fetch(:monit_pm2_website_ssl) %>
23
24
  port 443
@@ -27,6 +28,8 @@ check host <%= fetch(:monit_pm2_website) %> with address <%= fetch(:monit_pm2_we
27
28
  port 80
28
29
  protocol http
29
30
  <% end %>
30
- # status = 200
31
+ status = 200
31
32
  with timeout 13 seconds for 5 cycles
32
- then alert
33
+ then <%= monit_alert %>
34
+
35
+ <% end %>
@@ -1,9 +1,9 @@
1
1
  # Monit configuration for POSTGRESQL : <%= fetch(:application) %>
2
- check process postgresql with pidfile <%= fetch(:postgresql_pid) %>
2
+ check process postgresql with pidfile <%= fetch(:monit_pg_pid) %>
3
3
  start program = "/etc/init.d/postgresql start"
4
4
  stop program = "/etc/init.d/postgresql stop"
5
5
  # if does not exist then start # (default)
6
- # if does not exist for 3 cycles then alert
7
- if 3 restarts within 5 cycles then alert
6
+ # if does not exist for 3 cycles then <%= monit_alert %>
7
+ if 3 restarts within 5 cycles then <%= monit_alert %>
8
8
  if failed host localhost port 5432 protocol pgsql then restart
9
9
  if 5 restarts within 5 cycles then timeout
@@ -19,5 +19,5 @@ check host <%= domain %> with address <%= domain %>
19
19
  protocol http
20
20
  <% end %>
21
21
  with timeout 13 seconds for 5 cycles
22
- then alert
22
+ then <%= monit_alert %>
23
23
  <% end %>
@@ -3,9 +3,9 @@ check process redis with pidfile <%= fetch(:redis_pid) %>
3
3
  start program = "/etc/init.d/redis-server start"
4
4
  stop program = "/etc/init.d/redis-server stop"
5
5
  # if does not exist then start # (default)
6
- # if does not exist for 3 cycles then alert
7
- if 3 restarts within 5 cycles then alert
8
- if totalmem > 100 Mb then alert
6
+ # if does not exist for 3 cycles then <%= monit_alert %>
7
+ if 3 restarts within 5 cycles then <%= monit_alert %>
8
+ if totalmem > 100 Mb then <%= monit_alert %>
9
9
  if children > 255 for 5 cycles then stop
10
10
  if cpu usage > 95% for 3 cycles then restart
11
11
  if failed host 127.0.0.1 port 6379 then restart
@@ -31,12 +31,12 @@ check process <%= sidekiq_service_name(idx) %>
31
31
  stop program = "<%= monit_app_prefixed("sidekiqctl stop #{ pid_file }") %>" with timeout <%= fetch(:monit_sidekiq_timeout_sec, 90) %> seconds
32
32
  group sidekiq-<%= fetch(:sidekiq_monit_group, fetch(:application)) %>-<%= fetch(:stage) %>
33
33
  # if does not exist then start # (default)
34
- if totalmem > <%= ( fetch( :monit_sidekiq_totalmem_mb, 300 ).to_i * 0.75 ).to_i %> MB then alert
34
+ if totalmem > <%= ( fetch( :monit_sidekiq_totalmem_mb, 300 ).to_i * 0.75 ).to_i %> MB then <%= monit_alert %>
35
35
  if totalmem > <%= fetch( :monit_sidekiq_totalmem_mb, 300 ) %> MB for 2 cycles then restart
36
- # if does not exist for 3 cycles then alert
36
+ # if does not exist for 3 cycles then <%= monit_alert %>
37
37
  # alert <%= fetch(:monit_mail_to) %> only on { pid }
38
- if 3 restarts within 5 cycles then alert
38
+ if 3 restarts within 5 cycles then <%= monit_alert %>
39
39
  if 3 restarts within 5 cycles then timeout
40
- if 2 restarts within 3 cycles then alert
41
- if changed pid 2 times within 10 cycles then alert
40
+ if 2 restarts within 3 cycles then <%= monit_alert %>
41
+ if changed pid 2 times within 10 cycles then <%= monit_alert %>
42
42
  <% end %>
@@ -0,0 +1,19 @@
1
+ # Monit configuration for SIDEKIQ-six : <%= fetch(:application) %> (<%= fetch(:stage) %>)
2
+ <% for_each_process do |service_file, idx| %>
3
+
4
+ CHECK process <%= sidekiq_six_service_name(service_file) %> with pidfile <%= fetch(:monit_sidekiq_pid_path) %>/<%= service_file %>.pid
5
+ start program = "/bin/systemctl start <%= service_file %>" with timeout <%= fetch(:monit_sidekiq_timeout_sec, 90) %> seconds
6
+ stop program = "/bin/systemctl stop <%= service_file %>" with timeout <%= fetch(:monit_sidekiq_timeout_sec, 90) %> seconds
7
+ GROUP sidekiq-<%= fetch(:sidekiq_monit_group, fetch(:application)) %>-<%= fetch(:stage) %>
8
+ GROUP sidekiq
9
+ # if does not exist then start # (default)
10
+ if totalmem > <%= ( fetch( :monit_sidekiq_totalmem_mb, 300 ).to_i * 0.75 ).to_i %> MB then <%= monit_alert %>
11
+ if totalmem > <%= fetch( :monit_sidekiq_totalmem_mb, 300 ) %> MB for 2 cycles then restart
12
+ # if does not exist for 3 cycles then <%= monit_alert %>
13
+ # alert <%= fetch(:monit_mail_to) %> only on { pid }
14
+ if 3 restarts within 5 cycles then <%= monit_alert %>
15
+ if 3 restarts within 5 cycles then timeout
16
+ if 2 restarts within 3 cycles then <%= monit_alert %>
17
+ if changed pid 2 times within 10 cycles then <%= monit_alert %>
18
+
19
+ <% end %>
@@ -5,13 +5,13 @@
5
5
  start program = "<%= monit_app_prefixed("thin start -C config/thin_app_#{ fetch(:stage) }.yml -o #{ n }") %>"
6
6
  stop program = "<%= monit_app_prefixed("thin stop -C config/thin_app_#{ fetch(:stage) }.yml -o #{ n }") %>"
7
7
  # if does not exist then start # (default)
8
- # if does not exist for 3 cycles then alert
9
- if 3 restarts within 5 cycles then alert
10
- if mem > <%= ( fetch( :monit_thin_totalmem_mb, 300 ).to_i * 0.75 ).to_i %> MB then alert
8
+ # if does not exist for 3 cycles then <%= monit_alert %>
9
+ if 3 restarts within 5 cycles then <%= monit_alert %>
10
+ if mem > <%= ( fetch( :monit_thin_totalmem_mb, 300 ).to_i * 0.75 ).to_i %> MB then <%= monit_alert %>
11
11
  if mem > <%= fetch( :monit_thin_totalmem_mb, 300 ) %> MB for 2 cycles then restart
12
- if cpu > 50% then alert
12
+ if cpu > 50% then <%= monit_alert %>
13
13
  if cpu > 50% for 3 cycles then restart
14
14
  if 5 restarts within 5 cycles then timeout
15
15
  # alert <%= fetch(:monit_mail_to) %> only on { pid }
16
- if changed pid 2 times within 20 cycles then alert
16
+ if changed pid 2 times within 20 cycles then <%= monit_alert %>
17
17
  <% end %>
@@ -0,0 +1,17 @@
1
+ # Monit configuration for THIN : <%= fetch(:application) %> (<%= fetch(:stage) %>)
2
+ <% fetch(:app_instances, 1).times do |n| %>
3
+ check process <%= fetch(:application) %>_<%= fetch(:stage) %>_thin_<%= n %> with pidfile <%= deploy_to %>/shared/pids/thin_<%= fetch(:application) %>_<%= fetch(:stage) %>.<%= n %>.pid
4
+ group thin-<%= fetch(:application) %>-<%= fetch(:stage) %>
5
+ start program = "<%= monit_app_prefixed("thin start -C config/thin_app_#{ fetch(:stage) }.yml -o #{ n }") %>"
6
+ stop program = "<%= monit_app_prefixed("thin stop -C config/thin_app_#{ fetch(:stage) }.yml -o #{ n }") %>"
7
+ if does not exist for 3 cycles then start # (default)
8
+ if does not exist for 3 cycles then <%= monit_alert %>
9
+ if 3 restarts within 5 cycles then <%= monit_alert %>
10
+ if mem > <%= ( fetch( :monit_thin_totalmem_mb, 300 ).to_i * 0.75 ).to_i %> MB then <%= monit_alert %>
11
+ if mem > <%= fetch( :monit_thin_totalmem_mb, 300 ) %> MB for 2 cycles then restart
12
+ if cpu > 50% then <%= monit_alert %>
13
+ if cpu > 50% for 3 cycles then restart
14
+ if 5 restarts within 5 cycles then timeout
15
+ # alert <%= fetch(:monit_mail_to) %> only on { pid }
16
+ if changed pid 2 times within 20 cycles then <%= monit_alert %>
17
+ <% end %>
@@ -8,11 +8,11 @@
8
8
  <% end %>
9
9
  # Check domains on port 80 <%= "(and 443 if ssl is on)" if fetch(:nginx_use_ssl) %> for <%= fetch(:application) %> [<%= fetch(:stage) %>]
10
10
  <% domain_list.uniq.each do |domain| %>
11
- check host <%= domain %> with address <%= domain %>
11
+ check host "<%= fetch(:monit_website_check_name, domain) %>" with address <%= domain %>
12
+ <% if fetch(:nginx_use_ssl) %>if failed port 443 protocol https and certificate valid > 2 days then <%= monit_alert %><% end %>
12
13
  if failed
13
14
  <% if fetch(:nginx_use_ssl) %>
14
- port 443
15
- type TCPSSL
15
+ port 443
16
16
  protocol https
17
17
  <% else %>
18
18
  port 80
@@ -25,6 +25,6 @@ check host <%= domain %> with address <%= domain %>
25
25
  # status = 200
26
26
  with timeout <%= fetch(:monit_website_check_timeout, 10) %> seconds
27
27
  for <%= fetch(:monit_website_check_cycles, 3) %> cycles
28
- then alert
28
+ then <%= monit_alert %>
29
29
  <% end %>
30
30
 
@@ -0,0 +1,25 @@
1
+ # Check additional domains for <%= fetch(:application) %> [<%= fetch(:stage) %>]
2
+ <% monit_website_list.each do |that| %>
3
+ check host "<%= that[:name] %>" with address <%= that[:domain] %>
4
+ <% if that[:ssl] %>if failed port 443 protocol https and certificate valid > 2 days then <%= monit_alert %><% end %>
5
+ if failed
6
+ <% if that[:ssl] %>
7
+ port 443
8
+ type TCPSSL
9
+ protocol https
10
+ <% else %>
11
+ port 80
12
+ protocol http
13
+ <% end %>
14
+ <% if that[:check_content] %>
15
+ request "<%= that[:path] || '/' %>"
16
+ content = "<%= that[:content] %>"
17
+ <% else %>
18
+ status = 200
19
+ <% end %>
20
+ with timeout <%= that[:timeout] %> seconds
21
+ for <%= that[:cycles] %> cycles
22
+ then <%= monit_alert %>
23
+
24
+ <% end %>
25
+
@@ -7,8 +7,6 @@ server {
7
7
  }
8
8
  <% end %>
9
9
 
10
-
11
-
12
10
  server {
13
11
  <% if fetch(:monit_webclient_use_ssl) %>
14
12
  listen 443 ssl http2;
@@ -53,6 +53,12 @@ ExecStart=/usr/local/bin/bundle exec sidekiq <%= @side_kiq_args %>
53
53
  <% end %>
54
54
 
55
55
 
56
+ ## build PID-File .. only working method :( .. (needed for monit)
57
+ ExecStartPost=/bin/bash -c '/bin/echo $MAINPID > <%= fetch(:sidekiq_six_pid_path) %>/<%= @service_file %>.pid'
58
+ ExecStopPost=/bin/bash -c 'rm <%= fetch(:sidekiq_six_pid_path) %>/<%= @service_file %>.pid'
59
+
60
+
61
+
56
62
  # Use `systemctl kill -s TSTP <%= @service_file %>` to quiet the Sidekiq process
57
63
 
58
64
  # !!! Change this to your deploy user account !!!
@@ -15,6 +15,12 @@ ExecStart=<%= fetch(:rvm_path) %>/bin/rvm <%= fetch(:rvm_ruby_version) %> do bun
15
15
  ExecStart=/usr/local/bin/bundle exec sidekiq <%= @side_kiq_args %>
16
16
  <% end %>
17
17
 
18
+
19
+ ## build PID-File .. only working method :( .. (needed for monit)
20
+ ExecStartPost=/bin/bash -c '/bin/echo $MAINPID > <%= fetch(:sidekiq_six_pid_path) %>/<%= @service_file %>.pid'
21
+ ExecStopPost=/bin/bash -c 'rm <%= fetch(:sidekiq_six_pid_path) %>/<%= @service_file %>.pid'
22
+
23
+
18
24
  User=<%= fetch(:sidekiq_six_user) %>
19
25
  Group=<%= fetch(:sidekiq_six_user) %>
20
26
  UMask=0002
@@ -24,6 +24,12 @@ ExecStop=/usr/local/bin/bundle exec thin -C config/thin_app_<%= fetch(:stage) %>
24
24
  ExecReload=/usr/local/bin/bundle exec thin -C config/thin_app_<%= fetch(:stage) %>.yml restart
25
25
  <% end %>
26
26
 
27
+
28
+ ## build PID-File .. only working method :(
29
+ ExecStartPost=/bin/bash -c '/bin/echo $MAINPID > <%= fetch(:thin_pid_path) %>/thin_<%= fetch(:application) %>_<%= fetch(:stage) %>.pid'
30
+ ExecStopPost=/bin/bash -c 'rm <%= fetch(:thin_pid_path) %>/thin_<%= fetch(:application) %>_<%= fetch(:stage) %>.pid'
31
+
32
+
27
33
  TimeoutSec=<%= fetch(:thin_wait) %>
28
34
  Restart=always
29
35
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: magic_recipes_two
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.94
4
+ version: 0.0.95
5
5
  platform: ruby
6
6
  authors:
7
7
  - Torsten Wetzel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-25 00:00:00.000000000 Z
11
+ date: 2023-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -161,6 +161,7 @@ files:
161
161
  - lib/capistrano/magic_recipes/redis.rb
162
162
  - lib/capistrano/magic_recipes/secrets.rb
163
163
  - lib/capistrano/magic_recipes/sidekiq.rb
164
+ - lib/capistrano/magic_recipes/sidekiq_helpers.rb
164
165
  - lib/capistrano/magic_recipes/sidekiq_six.rb
165
166
  - lib/capistrano/magic_recipes/thin.rb
166
167
  - lib/capistrano/magic_recipes/thin_sysd.rb
@@ -173,7 +174,6 @@ files:
173
174
  - lib/capistrano/tasks/lets_encrypt.rake
174
175
  - lib/capistrano/tasks/logs.rake
175
176
  - lib/capistrano/tasks/monit.rake
176
- - lib/capistrano/tasks/monit_sidekiq.rake
177
177
  - lib/capistrano/tasks/nginx.rake
178
178
  - lib/capistrano/tasks/pwa.rake
179
179
  - lib/capistrano/tasks/redirect_page.rake
@@ -184,17 +184,20 @@ files:
184
184
  - lib/capistrano/tasks/thin.rake
185
185
  - lib/capistrano/tasks/thin_sysd.rake
186
186
  - lib/generators/capistrano/magic_recipes/templates/capistrano3_nginx_conf.erb
187
+ - lib/generators/capistrano/magic_recipes/templates/monit/alert_slack.erb
188
+ - lib/generators/capistrano/magic_recipes/templates/monit/file_checks.erb
187
189
  - lib/generators/capistrano/magic_recipes/templates/monit/monitrc.erb
188
190
  - lib/generators/capistrano/magic_recipes/templates/monit/nginx.erb
189
- - lib/generators/capistrano/magic_recipes/templates/monit/nginx_conf.erb
190
191
  - lib/generators/capistrano/magic_recipes/templates/monit/pm2.erb
191
192
  - lib/generators/capistrano/magic_recipes/templates/monit/postgresql.erb
192
193
  - lib/generators/capistrano/magic_recipes/templates/monit/pwa.erb
193
194
  - lib/generators/capistrano/magic_recipes/templates/monit/redis.erb
194
195
  - lib/generators/capistrano/magic_recipes/templates/monit/sidekiq.erb
196
+ - lib/generators/capistrano/magic_recipes/templates/monit/sidekiq_six.erb
195
197
  - lib/generators/capistrano/magic_recipes/templates/monit/thin.erb
198
+ - lib/generators/capistrano/magic_recipes/templates/monit/thin_sysd.erb
196
199
  - lib/generators/capistrano/magic_recipes/templates/monit/website.erb
197
- - lib/generators/capistrano/magic_recipes/templates/monit/websiteX.erb
200
+ - lib/generators/capistrano/magic_recipes/templates/monit/website_checks.erb
198
201
  - lib/generators/capistrano/magic_recipes/templates/nginx.conf.erb
199
202
  - lib/generators/capistrano/magic_recipes/templates/nginx/diffie_hellman.erb
200
203
  - lib/generators/capistrano/magic_recipes/templates/nginx/media_cache_path.erb
@@ -1,44 +0,0 @@
1
- # https://github.com/seuros/capistrano-sidekiq
2
-
3
- require 'capistrano/magic_recipes/base_helpers'
4
- include Capistrano::MagicRecipes::BaseHelpers
5
-
6
- namespace :load do
7
- task :defaults do
8
- set :sidekiq_monit_conf_dir, -> { '/etc/monit/conf.d' }
9
- set :monit_bin, -> { '/usr/bin/monit' }
10
- end
11
- end
12
-
13
-
14
- namespace :sidekiq do
15
- namespace :monit do
16
- desc 'Config Sidekiq monit-service'
17
- task :config do
18
- on roles(fetch(:sidekiq_roles)) do |role|
19
- @role = role
20
- template_with_role 'sidekiq', "#{fetch(:tmp_dir)}/monit.conf", @role
21
- sudo "mv #{fetch(:tmp_dir)}/monit.conf #{fetch(:sidekiq_monit_conf_dir)}/#{sidekiq_service_name}.conf"
22
- end
23
- end
24
-
25
-
26
- ## Server specific tasks (gets overwritten by other environments!)
27
- %w[monitor unmonitor start stop restart].each do |command|
28
- desc "#{command} Sidekiq monit-service"
29
- task command do
30
- on roles(fetch(:sidekiq_roles)) do
31
- fetch(:sidekiq_processes).times do |idx|
32
- sudo "#{fetch(:monit_bin)} #{command} #{sidekiq_service_name(idx)}"
33
- end
34
- end
35
- end
36
- end
37
-
38
-
39
- def sidekiq_service_name(index=nil)
40
- fetch(:sidekiq_service_name, "#{fetch(:application)}_#{fetch(:stage)}_sidekiq_") + index.to_s
41
- end
42
-
43
- end
44
- end
@@ -1,14 +0,0 @@
1
- server {
2
- listen 80;
3
- server_name <%= fetch(:monit_web_domain) %>;
4
-
5
- location ^~ /.well-known/ {
6
- allow all;
7
- root <%= fetch(:monit_well_known_path, "/tmp/monit/well_known") %>;
8
- }
9
- location / {
10
- proxy_set_header X-Real-IP $remote_addr;
11
- proxy_set_header Host $http_host;
12
- proxy_pass http://127.0.0.1:<%= fetch(:monit_http_port) %>;
13
- }
14
- }
@@ -1,23 +0,0 @@
1
- # Check domains on <%= fetch(:nginx_use_ssl) ? 'https' : 'http' %> for <%= fetch(:application) %> [<%= fetch(:stage) %>]
2
- <% domain_list.uniq.each do |domain| %>
3
- check host <%= domain %> with address <%= domain %>
4
- if failed
5
- <% if fetch(:nginx_use_ssl) %>
6
- port 443
7
- type TCPSSL
8
- protocol https
9
- <% else %>
10
- port 80
11
- protocol http
12
- <% end %>
13
- <% if fetch(:monit_website_check_content, false) %>
14
- request "<%= fetch(:monit_website_check_path, '/') %>"
15
- content = "<%= fetch(:monit_website_check_text, '<!DOCTYPE html>') %>"
16
- <% else %>
17
- # status = 200
18
- <% end %>
19
- with timeout <%= fetch(:monit_website_check_timeout, 10) %> seconds
20
- for <%= fetch(:monit_website_check_cycles, 3) %> cycles
21
- then alert
22
- <% end %>
23
-