rubber 1.0.2
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.
- data/CHANGELOG +39 -0
- data/COPYING +339 -0
- data/README +6 -0
- data/TODO +11 -0
- data/VERSION +1 -0
- data/bin/vulcanize +41 -0
- data/generators/vulcanize/USAGE +6 -0
- data/generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb +51 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/deflate.conf +10 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/expires.conf +9 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/headers.conf +6 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf +8 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/ports.conf +5 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/setenvif.conf +52 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +62 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache.auth +7 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-index.html +30 -0
- data/generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml +7 -0
- data/generators/vulcanize/templates/apache/templates.yml +1 -0
- data/generators/vulcanize/templates/base/Capfile +14 -0
- data/generators/vulcanize/templates/base/config/deploy.rb +55 -0
- data/generators/vulcanize/templates/base/config/rubber/common/crontab +16 -0
- data/generators/vulcanize/templates/base/config/rubber/common/profile.rc +9 -0
- data/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +104 -0
- data/generators/vulcanize/templates/base/config/rubber/rubber.yml +241 -0
- data/generators/vulcanize/templates/base/lib/tasks/rubber.rake +15 -0
- data/generators/vulcanize/templates/base/script/cron-rake +18 -0
- data/generators/vulcanize/templates/base/script/cron-runner +18 -0
- data/generators/vulcanize/templates/base/script/cron-sh +67 -0
- data/generators/vulcanize/templates/base/templates.yml +1 -0
- data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf +23 -0
- data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf +113 -0
- data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/rubber-complete.yml +41 -0
- data/generators/vulcanize/templates/complete_mongrel_mysql/templates.yml +6 -0
- data/generators/vulcanize/templates/complete_passenger_mysql/config/rubber/role/haproxy/haproxy-passenger.conf +19 -0
- data/generators/vulcanize/templates/complete_passenger_mysql/config/rubber/rubber-complete.yml +40 -0
- data/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +10 -0
- data/generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb +72 -0
- data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/cruise +40 -0
- data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/my.cnf +165 -0
- data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/production.rb +8 -0
- data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/site_config.rb +76 -0
- data/generators/vulcanize/templates/cruise/config/rubber/role/web_tools/cruise-nginx.conf +11 -0
- data/generators/vulcanize/templates/cruise/config/rubber/rubber-cruise.yml +18 -0
- data/generators/vulcanize/templates/cruise/templates.yml +1 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/deploy-haproxy.rb +45 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-base.conf +26 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-default.conf +8 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/monit-haproxy.conf +9 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslog-haproxy.conf +6 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslogd-default.conf +17 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/web_tools/haproxy-nginx.conf +10 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/rubber-haproxy.yml +7 -0
- data/generators/vulcanize/templates/haproxy/templates.yml +1 -0
- data/generators/vulcanize/templates/memcached/config/memcached.yml +28 -0
- data/generators/vulcanize/templates/memcached/config/rubber/common/memcached.yml +14 -0
- data/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached.conf +52 -0
- data/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached_munin_plugin +249 -0
- data/generators/vulcanize/templates/memcached/config/rubber/rubber-memcached.yml +7 -0
- data/generators/vulcanize/templates/memcached/templates.yml +1 -0
- data/generators/vulcanize/templates/minimal_mysql/templates.yml +7 -0
- data/generators/vulcanize/templates/minimal_nodb/templates.yml +6 -0
- data/generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb +75 -0
- data/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/mongrel_cluster.yml +12 -0
- data/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/monit-mongrel.conf +20 -0
- data/generators/vulcanize/templates/mongrel/config/rubber/rubber-mongrel.yml +9 -0
- data/generators/vulcanize/templates/mongrel/templates.yml +1 -0
- data/generators/vulcanize/templates/monit/config/rubber/common/monit-default.conf +15 -0
- data/generators/vulcanize/templates/monit/config/rubber/common/monit.conf +251 -0
- data/generators/vulcanize/templates/monit/config/rubber/deploy-monit.rb +32 -0
- data/generators/vulcanize/templates/monit/config/rubber/role/web_tools/monit-admin-nginx.conf +10 -0
- data/generators/vulcanize/templates/monit/config/rubber/rubber-monit.yml +6 -0
- data/generators/vulcanize/templates/monit/templates.yml +1 -0
- data/generators/vulcanize/templates/munin/config/rubber/common/monit-munin.conf +8 -0
- data/generators/vulcanize/templates/munin/config/rubber/common/munin-node.conf +48 -0
- data/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +46 -0
- data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-nginx.conf +8 -0
- data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-plugins.conf +31 -0
- data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin.conf +80 -0
- data/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +8 -0
- data/generators/vulcanize/templates/munin/script/munin/example_mysql_query.rb +57 -0
- data/generators/vulcanize/templates/munin/script/munin/example_simple.rb +24 -0
- data/generators/vulcanize/templates/munin/templates.yml +1 -0
- data/generators/vulcanize/templates/mysql/config/rubber/common/database.yml +11 -0
- data/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +156 -0
- data/generators/vulcanize/templates/mysql/config/rubber/role/db/crontab +14 -0
- data/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf +10 -0
- data/generators/vulcanize/templates/mysql/config/rubber/role/db/my.cnf +167 -0
- data/generators/vulcanize/templates/mysql/config/rubber/role/mysql_slave/mysql_slave_munin_plugin +51 -0
- data/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +46 -0
- data/generators/vulcanize/templates/mysql/templates.yml +1 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/common/mysql_cluster_migrations.rb +13 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +173 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_data/my.cnf +15 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_mgm/ndb_mgmd.cnf +39 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/monit-mysql_cluster_sql.cnf +10 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/my.cnf +23 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/rubber-mysql_cluster.yml +32 -0
- data/generators/vulcanize/templates/mysql_cluster/templates.yml +1 -0
- data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/database.yml +16 -0
- data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/monit-mysql_proxy.cnf +10 -0
- data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy +153 -0
- data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.conf +10 -0
- data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.lua +5 -0
- data/generators/vulcanize/templates/mysql_proxy/config/rubber/deploy-mysql_proxy.rb +52 -0
- data/generators/vulcanize/templates/mysql_proxy/config/rubber/rubber-mysql_proxy.yml +11 -0
- data/generators/vulcanize/templates/mysql_proxy/templates.yml +1 -0
- data/generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb +45 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/crontab +9 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/monit-nginx.conf +8 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/nginx.conf +42 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/nginx-tools.conf +55 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-index.html +30 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-nginx.auth +7 -0
- data/generators/vulcanize/templates/nginx/config/rubber/rubber-nginx.yml +10 -0
- data/generators/vulcanize/templates/nginx/templates.yml +1 -0
- data/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +37 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +6 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +47 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf +46 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +10 -0
- data/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +12 -0
- data/generators/vulcanize/templates/passenger/templates.yml +1 -0
- data/generators/vulcanize/templates/sphinx/config/rubber/common/sphinx.yml +46 -0
- data/generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb +112 -0
- data/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/crontab +11 -0
- data/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/monit-sphinx.conf +10 -0
- data/generators/vulcanize/templates/sphinx/config/rubber/rubber-sphinx.yml +6 -0
- data/generators/vulcanize/templates/sphinx/templates.yml +1 -0
- data/generators/vulcanize/vulcanize_generator.rb +67 -0
- data/lib/capistrano/hostcmd.rb +12 -0
- data/lib/rubber.rb +38 -0
- data/lib/rubber/capistrano.rb +1 -0
- data/lib/rubber/cloud.rb +13 -0
- data/lib/rubber/cloud/aws.rb +305 -0
- data/lib/rubber/cloud/base.rb +16 -0
- data/lib/rubber/configuration.rb +47 -0
- data/lib/rubber/dns.rb +13 -0
- data/lib/rubber/dns/base.rb +69 -0
- data/lib/rubber/dns/dyndns.rb +63 -0
- data/lib/rubber/dns/nettica.rb +73 -0
- data/lib/rubber/dns/zerigo.rb +131 -0
- data/lib/rubber/environment.rb +161 -0
- data/lib/rubber/generator.rb +197 -0
- data/lib/rubber/instance.rb +165 -0
- data/lib/rubber/recipes/rubber.rb +89 -0
- data/lib/rubber/recipes/rubber/bundles.rb +28 -0
- data/lib/rubber/recipes/rubber/deploy.rb +90 -0
- data/lib/rubber/recipes/rubber/instances.rb +348 -0
- data/lib/rubber/recipes/rubber/load_balancers.rb +44 -0
- data/lib/rubber/recipes/rubber/security_groups.rb +189 -0
- data/lib/rubber/recipes/rubber/setup.rb +357 -0
- data/lib/rubber/recipes/rubber/static_ips.rb +107 -0
- data/lib/rubber/recipes/rubber/utils.rb +203 -0
- data/lib/rubber/recipes/rubber/volumes.rb +264 -0
- data/lib/rubber/tasks/rubber.rb +221 -0
- data/lib/rubber/util.rb +37 -0
- data/test/environment_test.rb +118 -0
- data/test/generator_test.rb +323 -0
- data/test/instance_test.rb +93 -0
- data/test/test_helper.rb +4 -0
- data/test/util_test.rb +16 -0
- metadata +274 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
description: The memcached module
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
|
|
2
|
+
namespace :rubber do
|
|
3
|
+
|
|
4
|
+
namespace :mongrel do
|
|
5
|
+
|
|
6
|
+
rubber.allow_optional_tasks(self)
|
|
7
|
+
|
|
8
|
+
after "rubber:install_gems", "rubber:mongrel:custom_install"
|
|
9
|
+
|
|
10
|
+
task :custom_install, :roles => :mongrel do
|
|
11
|
+
# Setup system to restart mongrel_cluster on reboot
|
|
12
|
+
rubber.sudo_script 'setup_mongrel_init', <<-ENDSCRIPT
|
|
13
|
+
mkdir -p /etc/mongrel_cluster
|
|
14
|
+
rm -f /etc/mongrel_cluster/#{application}-#{RUBBER_ENV}.yml && ln -s /mnt/#{application}-#{RUBBER_ENV}/current/config/mongrel_cluster.yml /etc/mongrel_cluster/#{application}-#{RUBBER_ENV}.yml
|
|
15
|
+
find /usr/lib/ruby/gems -path "*/resources/mongrel_cluster" -exec cp {} /etc/init.d/ \\;
|
|
16
|
+
chmod +x /etc/init.d/mongrel_cluster
|
|
17
|
+
update-rc.d -f mongrel_cluster remove
|
|
18
|
+
update-rc.d mongrel_cluster defaults 99 00
|
|
19
|
+
ENDSCRIPT
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def mongrel_stop
|
|
24
|
+
run "cd #{current_path} && mongrel_rails cluster::stop"
|
|
25
|
+
sleep 5 # Give the graceful stop a chance to complete
|
|
26
|
+
run "cd #{current_path} && mongrel_rails cluster::stop --force --clean"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def mongrel_start
|
|
30
|
+
run "cd #{current_path} && mongrel_rails cluster::start --clean"
|
|
31
|
+
pid_cnt = rubber_env.mongrel_count
|
|
32
|
+
logger.info "Waiting for mongrel pid files to show up"
|
|
33
|
+
run "while ((`ls #{current_path}/tmp/pids/mongrel.*.pid 2> /dev/null | wc -l` < #{pid_cnt})); do sleep 1; done"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# serial_task can only be called after roles defined - not normally a problem, but
|
|
37
|
+
# rubber auto-roles don't get defined till after all tasks are defined
|
|
38
|
+
on :load do
|
|
39
|
+
rubber.serial_task self, :serial_restart, :roles => :mongrel do
|
|
40
|
+
teardown_connections_to(sessions.keys)
|
|
41
|
+
mongrel_stop
|
|
42
|
+
mongrel_start
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
desc "Restarts the mongrel app server"
|
|
47
|
+
task :restart, :roles => :mongrel do
|
|
48
|
+
serial_restart
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
desc "Stops the mongrel app server"
|
|
52
|
+
task :stop, :roles => :mongrel do
|
|
53
|
+
mongrel_stop
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
desc "Starts the mongrel app server"
|
|
57
|
+
task :start, :roles => :mongrel do
|
|
58
|
+
mongrel_start
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
deploy.task :restart, :roles => :app do
|
|
62
|
+
rubber.mongrel.restart
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
deploy.task :stop, :roles => :app do
|
|
66
|
+
rubber.mongrel.stop
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
deploy.task :start, :roles => :app do
|
|
70
|
+
rubber.mongrel.start
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = "#{RUBBER_ROOT}/config/mongrel_cluster.yml"
|
|
3
|
+
%>
|
|
4
|
+
---
|
|
5
|
+
user: <%= rubber_env.app_user %>
|
|
6
|
+
group: <%= rubber_env.app_user %>
|
|
7
|
+
cwd: <%= RUBBER_ROOT %>
|
|
8
|
+
port: "<%= rubber_env.mongrel_base_port %>"
|
|
9
|
+
environment: <%= RUBBER_ENV %>
|
|
10
|
+
address: <%= rubber_env.host %>
|
|
11
|
+
pid_file: tmp/pids/mongrel.pid
|
|
12
|
+
servers: <%= rubber_env.mongrel_count %>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = '/etc/monit/monit.d/monit-mongrel.conf'
|
|
3
|
+
%>
|
|
4
|
+
|
|
5
|
+
<% (0..(rubber_env.mongrel_count.to_i - 1)).each do |i| %>
|
|
6
|
+
|
|
7
|
+
<% PORT = rubber_env.mongrel_base_port + i %>
|
|
8
|
+
<% PIDFILE = "#{RUBBER_ROOT}/tmp/pids/mongrel.#{PORT}.pid" %>
|
|
9
|
+
check process mongrel-<%= PORT %> with pidfile <%= PIDFILE %>
|
|
10
|
+
group mongrel-<%= RUBBER_ENV %>
|
|
11
|
+
start program = "/bin/sh -c 'cd <%= RUBBER_ROOT %> && PATH=/usr/local/bin:$PATH && mongrel_rails cluster::start --clean --only <%= PORT %>'"
|
|
12
|
+
<%
|
|
13
|
+
# Stop gracefully - monit waits for stop to complete (since below process exits immediately, it must
|
|
14
|
+
# wait for pid to disappear) before trying to start
|
|
15
|
+
%>
|
|
16
|
+
stop program = "/bin/sh -c 'cd <%= RUBBER_ROOT %> && PATH=/usr/local/bin:$PATH && mongrel_rails cluster::stop --clean --only <%= PORT %> && sleep 30 && mongrel_rails cluster::stop --clean --force --only <%= PORT %>'"
|
|
17
|
+
if totalmem > 200.0 MB for 3 cycles then restart
|
|
18
|
+
<%# monit needs to test on same same interface that mongrel is listening on (see mongrel_cluster.yml) %>
|
|
19
|
+
if failed host <%= rubber_env.host %> port <%= PORT %> protocol http with timeout 10 seconds for 10 cycles then restart
|
|
20
|
+
<% end %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
description: The mongrel module
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = '/etc/default/monit'
|
|
3
|
+
%>
|
|
4
|
+
|
|
5
|
+
# Defaults for monit initscript
|
|
6
|
+
# sourced by /etc/init.d/monit
|
|
7
|
+
# installed at /etc/default/monit by maintainer scripts
|
|
8
|
+
# Fredrik Steen <stone@debian.org>
|
|
9
|
+
|
|
10
|
+
# You must set this variable to for monit to start
|
|
11
|
+
startup=1
|
|
12
|
+
|
|
13
|
+
# To change the intervals which monit should run uncomment
|
|
14
|
+
# and change this variable.
|
|
15
|
+
# CHECK_INTERVALS=180
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = '/etc/monit/monitrc'
|
|
3
|
+
%>
|
|
4
|
+
|
|
5
|
+
###############################################################################
|
|
6
|
+
## Monit control file
|
|
7
|
+
###############################################################################
|
|
8
|
+
##
|
|
9
|
+
## Comments begin with a '#' and extend through the end of the line. Keywords
|
|
10
|
+
## are case insensitive. All path's MUST BE FULLY QUALIFIED, starting with '/'.
|
|
11
|
+
##
|
|
12
|
+
## Bellow is the example of some frequently used statements. For information
|
|
13
|
+
## about the control file, a complete list of statements and options please
|
|
14
|
+
## have a look in the monit manual.
|
|
15
|
+
##
|
|
16
|
+
##
|
|
17
|
+
###############################################################################
|
|
18
|
+
## Global section
|
|
19
|
+
###############################################################################
|
|
20
|
+
##
|
|
21
|
+
## Start monit in background (run as daemon) and check the services at 2-minute
|
|
22
|
+
## intervals.
|
|
23
|
+
#
|
|
24
|
+
# set daemon 120
|
|
25
|
+
set daemon 60
|
|
26
|
+
|
|
27
|
+
#
|
|
28
|
+
#
|
|
29
|
+
## Set syslog logging with the 'daemon' facility. If the FACILITY option is
|
|
30
|
+
## omited, monit will use 'user' facility by default. You can specify the
|
|
31
|
+
## path to the file for monit native logging.
|
|
32
|
+
#
|
|
33
|
+
# set logfile syslog facility log_daemon
|
|
34
|
+
set logfile /var/log/monit.log
|
|
35
|
+
#
|
|
36
|
+
#
|
|
37
|
+
## Set list of mailservers for alert delivery. Multiple servers may be
|
|
38
|
+
## specified using comma separator. By default monit uses port 25 - it is
|
|
39
|
+
## possible to override it with the PORT option.
|
|
40
|
+
#
|
|
41
|
+
# set mailserver mail.bar.baz, # primary mailserver
|
|
42
|
+
# backup.bar.baz port 10025, # backup mailserver on port 10025
|
|
43
|
+
# localhost # fallback relay
|
|
44
|
+
#
|
|
45
|
+
#
|
|
46
|
+
## By default monit will drop the event alert, in the case that there is no
|
|
47
|
+
## mailserver available. In the case that you want to keep the events for
|
|
48
|
+
## later delivery retry, you can use the EVENTQUEUE statement. The base
|
|
49
|
+
## directory where undelivered events will be stored is specified by the
|
|
50
|
+
## BASEDIR option. You can limit the maximal queue size using the SLOTS
|
|
51
|
+
## option (if omited then the queue is limited just by the backend filesystem).
|
|
52
|
+
#
|
|
53
|
+
# set eventqueue
|
|
54
|
+
# basedir /var/monit # set the base directory where events will be stored
|
|
55
|
+
# slots 100 # optionaly limit the queue size
|
|
56
|
+
#
|
|
57
|
+
#
|
|
58
|
+
## Monit by default uses the following alert mail format:
|
|
59
|
+
##
|
|
60
|
+
## --8<--
|
|
61
|
+
## From: monit@$HOST # sender
|
|
62
|
+
## Subject: monit alert -- $EVENT $SERVICE # subject
|
|
63
|
+
##
|
|
64
|
+
## $EVENT Service $SERVICE #
|
|
65
|
+
## #
|
|
66
|
+
## Date: $DATE #
|
|
67
|
+
## Action: $ACTION #
|
|
68
|
+
## Host: $HOST # body
|
|
69
|
+
## Description: $DESCRIPTION #
|
|
70
|
+
## #
|
|
71
|
+
## Your faithful employee, #
|
|
72
|
+
## monit #
|
|
73
|
+
## --8<--
|
|
74
|
+
##
|
|
75
|
+
## You can override the alert message format or its parts such as subject
|
|
76
|
+
## or sender using the MAIL-FORMAT statement. Macros such as $DATE, etc.
|
|
77
|
+
## are expanded on runtime. For example to override the sender:
|
|
78
|
+
#
|
|
79
|
+
# set mail-format { from: monit@foo.bar }
|
|
80
|
+
#
|
|
81
|
+
#
|
|
82
|
+
## You can set the alert recipients here, which will receive the alert for
|
|
83
|
+
## each service. The event alerts may be restricted using the list.
|
|
84
|
+
#
|
|
85
|
+
# set alert sysadm@foo.bar # receive all alerts
|
|
86
|
+
# set alert manager@foo.bar only on { timeout } # receive just service-
|
|
87
|
+
# # timeout alert
|
|
88
|
+
|
|
89
|
+
# excluding instance, changed
|
|
90
|
+
set alert <%= rubber_env.admin_email %> only on {
|
|
91
|
+
connection
|
|
92
|
+
checksum
|
|
93
|
+
data
|
|
94
|
+
exec
|
|
95
|
+
gid
|
|
96
|
+
icmp
|
|
97
|
+
invalid
|
|
98
|
+
match
|
|
99
|
+
nonexist
|
|
100
|
+
permission
|
|
101
|
+
resource
|
|
102
|
+
size
|
|
103
|
+
timeout
|
|
104
|
+
timestamp
|
|
105
|
+
uid
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
#
|
|
109
|
+
#
|
|
110
|
+
## Monit has an embedded webserver, which can be used to view the
|
|
111
|
+
## configuration, actual services parameters or manage the services using the
|
|
112
|
+
## web interface.
|
|
113
|
+
#
|
|
114
|
+
# set httpd port 2812 and
|
|
115
|
+
# use address localhost # only accept connection from localhost
|
|
116
|
+
# allow localhost # allow localhost to connect to the server and
|
|
117
|
+
# allow admin:monit # require user 'admin' with password 'monit'
|
|
118
|
+
#
|
|
119
|
+
|
|
120
|
+
<%
|
|
121
|
+
tools_server = rubber_instances.for_role('web_tools').first.internal_ip rescue "127.0.0.1"
|
|
122
|
+
%>
|
|
123
|
+
set httpd port <%= rubber_env.monit_admin_port %>
|
|
124
|
+
allow <%= tools_server %>
|
|
125
|
+
|
|
126
|
+
#
|
|
127
|
+
###############################################################################
|
|
128
|
+
## Services
|
|
129
|
+
###############################################################################
|
|
130
|
+
##
|
|
131
|
+
## Check the general system resources such as load average, cpu and memory
|
|
132
|
+
## usage. Each rule specifies the tested resource, the limit and the action
|
|
133
|
+
## which will be performed in the case that the test failed.
|
|
134
|
+
#
|
|
135
|
+
# check system myhost.mydomain.tld
|
|
136
|
+
# if loadavg (1min) > 4 then alert
|
|
137
|
+
# if loadavg (5min) > 2 then alert
|
|
138
|
+
# if memory usage > 75% then alert
|
|
139
|
+
# if cpu usage (user) > 70% then alert
|
|
140
|
+
# if cpu usage (system) > 30% then alert
|
|
141
|
+
# if cpu usage (wait) > 20% then alert
|
|
142
|
+
#
|
|
143
|
+
#
|
|
144
|
+
## Check a file for existence, checksum, permissions, uid and gid. In addition
|
|
145
|
+
## to the recipients in the global section, customized alert will be send to
|
|
146
|
+
## the additional recipient. The service may be grouped using the GROUP option.
|
|
147
|
+
#
|
|
148
|
+
# check file apache_bin with path /usr/local/apache/bin/httpd
|
|
149
|
+
# if failed checksum and
|
|
150
|
+
# expect the sum 8f7f419955cefa0b33a2ba316cba3659 then unmonitor
|
|
151
|
+
# if failed permission 755 then unmonitor
|
|
152
|
+
# if failed uid root then unmonitor
|
|
153
|
+
# if failed gid root then unmonitor
|
|
154
|
+
# alert security@foo.bar on {
|
|
155
|
+
# checksum, permission, uid, gid, unmonitor
|
|
156
|
+
# } with the mail-format { subject: Alarm! }
|
|
157
|
+
# group server
|
|
158
|
+
#
|
|
159
|
+
#
|
|
160
|
+
## Check that a process is running, responding on the HTTP and HTTPS request,
|
|
161
|
+
## check its resource usage such as cpu and memory, number of childrens.
|
|
162
|
+
## In the case that the process is not running, monit will restart it by
|
|
163
|
+
## default. In the case that the service was restarted very often and the
|
|
164
|
+
## problem remains, it is possible to disable the monitoring using the
|
|
165
|
+
## TIMEOUT statement. The service depends on another service (apache_bin) which
|
|
166
|
+
## is defined in the monit control file as well.
|
|
167
|
+
#
|
|
168
|
+
# check process apache with pidfile /usr/local/apache/logs/httpd.pid
|
|
169
|
+
# start program = "/etc/init.d/httpd start"
|
|
170
|
+
# stop program = "/etc/init.d/httpd stop"
|
|
171
|
+
# if cpu > 60% for 2 cycles then alert
|
|
172
|
+
# if cpu > 80% for 5 cycles then restart
|
|
173
|
+
# if totalmem > 200.0 MB for 5 cycles then restart
|
|
174
|
+
# if children > 250 then restart
|
|
175
|
+
# if loadavg(5min) greater than 10 for 8 cycles then stop
|
|
176
|
+
# if failed host www.tildeslash.com port 80 protocol http
|
|
177
|
+
# and request "/monit/doc/next.php"
|
|
178
|
+
# then restart
|
|
179
|
+
# if failed port 443 type tcpssl protocol http
|
|
180
|
+
# with timeout 15 seconds
|
|
181
|
+
# then restart
|
|
182
|
+
# if 3 restarts within 5 cycles then timeout
|
|
183
|
+
# depends on apache_bin
|
|
184
|
+
# group server
|
|
185
|
+
#
|
|
186
|
+
#
|
|
187
|
+
## Check the device permissions, uid, gid, space and inode usage. Other
|
|
188
|
+
## services such as databases may depend on this resource and automatical
|
|
189
|
+
## graceful stop may be cascaded to them before the filesystem will become
|
|
190
|
+
## full and the data will be lost.
|
|
191
|
+
#
|
|
192
|
+
# check device datafs with path /dev/sdb1
|
|
193
|
+
# start program = "/bin/mount /data"
|
|
194
|
+
# stop program = "/bin/umount /data"
|
|
195
|
+
# if failed permission 660 then unmonitor
|
|
196
|
+
# if failed uid root then unmonitor
|
|
197
|
+
# if failed gid disk then unmonitor
|
|
198
|
+
# if space usage > 80% for 5 times within 15 cycles then alert
|
|
199
|
+
# if space usage > 99% then stop
|
|
200
|
+
# if inode usage > 30000 then alert
|
|
201
|
+
# if inode usage > 99% then stop
|
|
202
|
+
# group server
|
|
203
|
+
#
|
|
204
|
+
#
|
|
205
|
+
## Check a file's timestamp: when it becomes older then 15 minutes, the
|
|
206
|
+
## file is not updated and something is wrong. In the case that the size
|
|
207
|
+
## of the file exceeded given limit, perform the script.
|
|
208
|
+
#
|
|
209
|
+
# check file database with path /data/mydatabase.db
|
|
210
|
+
# if failed permission 700 then alert
|
|
211
|
+
# if failed uid data then alert
|
|
212
|
+
# if failed gid data then alert
|
|
213
|
+
# if timestamp > 15 minutes then alert
|
|
214
|
+
# if size > 100 MB then exec "/my/cleanup/script"
|
|
215
|
+
#
|
|
216
|
+
#
|
|
217
|
+
## Check the directory permission, uid and gid. An event is triggered
|
|
218
|
+
## if the directory does not belong to the user with the uid 0 and
|
|
219
|
+
## the gid 0. In the addition the permissions have to match the octal
|
|
220
|
+
## description of 755 (see chmod(1)).
|
|
221
|
+
#
|
|
222
|
+
# check directory bin with path /bin
|
|
223
|
+
# if failed permission 755 then unmonitor
|
|
224
|
+
# if failed uid 0 then unmonitor
|
|
225
|
+
# if failed gid 0 then unmonitor
|
|
226
|
+
#
|
|
227
|
+
#
|
|
228
|
+
## Check the remote host network services availability and the response
|
|
229
|
+
## content. One of three pings, a successfull connection to a port and
|
|
230
|
+
## application level network check is performed.
|
|
231
|
+
#
|
|
232
|
+
# check host myserver with address 192.168.1.1
|
|
233
|
+
# if failed icmp type echo count 3 with timeout 3 seconds then alert
|
|
234
|
+
# if failed port 3306 protocol mysql with timeout 15 seconds then alert
|
|
235
|
+
# if failed url
|
|
236
|
+
# http://user:password@www.foo.bar:8080/?querystring
|
|
237
|
+
# and content == 'action="j_security_check"'
|
|
238
|
+
# then alert
|
|
239
|
+
#
|
|
240
|
+
#
|
|
241
|
+
###############################################################################
|
|
242
|
+
## Includes
|
|
243
|
+
###############################################################################
|
|
244
|
+
##
|
|
245
|
+
## It is possible to include the configuration or its parts from other files or
|
|
246
|
+
## directories.
|
|
247
|
+
#
|
|
248
|
+
include /etc/monit/monit.d/*.conf
|
|
249
|
+
#
|
|
250
|
+
#
|
|
251
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
|
|
2
|
+
namespace :rubber do
|
|
3
|
+
|
|
4
|
namespace :monit do
|
|
5
|
+
|
|
6
|
+
rubber.allow_optional_tasks(self)
|
|
7
|
+
|
|
8
|
+
# monit needs to get stopped first and started last so that it doesn't
|
|
9
|
+
# mess with us restarting everything as part of a deploy.
|
|
10
|
+
before "rubber:pre_stop", "rubber:monit:stop"
|
|
11
|
+
before "rubber:pre_restart", "rubber:monit:stop"
|
|
12
|
+
after "rubber:post_start", "rubber:monit:start"
|
|
13
|
+
after "rubber:post_restart", "rubber:monit:start"
|
|
14
|
+
|
|
15
|
+
desc "Start monit daemon monitoring"
|
|
16
|
+
task :start do
|
|
17
|
+
run "/etc/init.d/monit start"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
desc "Stop monit daemon monitoring"
|
|
21
|
+
task :stop, :on_error => :continue do
|
|
22
|
+
run "/etc/init.d/monit stop"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
desc "Restart monit daemon monitoring"
|
|
26
|
+
task :restart do
|
|
27
|
+
stop
|
|
28
|
+
start
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|