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,11 @@
|
|
|
1
|
+
<%
|
|
2
|
+
cruise_host = rubber_instances.for_role('cruise').first
|
|
3
|
+
@path = "/etc/nginx/rubber/tools/cruise.conf"
|
|
4
|
+
%>
|
|
5
|
+
|
|
6
|
+
<% if cruise_host %>
|
|
7
|
+
location /cruise
|
|
8
|
+
{
|
|
9
|
+
proxy_pass http://<%= cruise_host.full_name %>:<%= rubber_env.cruise_port %>;
|
|
10
|
+
}
|
|
11
|
+
<% end %>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
# These will probably need to be used by the rubber module used for the internal http role
|
|
3
|
+
|
|
4
|
+
# REQUIRED: This determines where cruisecontrol gets installed
|
|
5
|
+
cruise_dir: /mnt/cruisecontrolrb
|
|
6
|
+
cruise_data_dir: /root/.cruise
|
|
7
|
+
cruise_project_dir: "#{cruise_data_dir}/projects/#{app_name}/work"
|
|
8
|
+
|
|
9
|
+
cruise_port: 3333
|
|
10
|
+
|
|
11
|
+
# REQUIRED: The git repo to fetch your project from
|
|
12
|
+
# cruise_repository: git@github.com:mylogin/myproject.git
|
|
13
|
+
|
|
14
|
+
roles:
|
|
15
|
+
cruise:
|
|
16
|
+
gems: [grit, mime-types, mongrel]
|
|
17
|
+
packages: [mysql-server]
|
|
18
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
description: The cruisecontrol.rb (CI server) module
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
|
|
2
|
+
namespace :rubber do
|
|
3
|
+
|
|
4
|
+
namespace :haproxy do
|
|
5
|
+
|
|
6
|
+
rubber.allow_optional_tasks(self)
|
|
7
|
+
|
|
8
|
+
# serial_task can only be called after roles defined - not normally a problem, but
|
|
9
|
+
# rubber auto-roles don't get defined till after all tasks are defined
|
|
10
|
+
on :load do
|
|
11
|
+
rubber.serial_task self, :serial_restart, :roles => :haproxy do
|
|
12
|
+
run "/etc/init.d/haproxy restart"
|
|
13
|
+
end
|
|
14
|
+
rubber.serial_task self, :serial_reload, :roles => :haproxy do
|
|
15
|
+
run "if ! ps ax | grep -v grep | grep -c haproxy &> /dev/null; then /etc/init.d/haproxy start; else /etc/init.d/haproxy reload; fi"
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
before "deploy:stop", "rubber:haproxy:stop"
|
|
20
|
+
after "deploy:start", "rubber:haproxy:start"
|
|
21
|
+
after "deploy:restart", "rubber:haproxy:reload"
|
|
22
|
+
|
|
23
|
+
desc "Stops the haproxy server"
|
|
24
|
+
task :stop, :roles => :haproxy, :on_error => :continue do
|
|
25
|
+
run "/etc/init.d/haproxy stop"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
desc "Starts the haproxy server"
|
|
29
|
+
task :start, :roles => :haproxy do
|
|
30
|
+
run "/etc/init.d/haproxy start"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
desc "Restarts the haproxy server"
|
|
34
|
+
task :restart, :roles => :haproxy do
|
|
35
|
+
serial_restart
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
desc "Reloads the haproxy web server"
|
|
39
|
+
task :reload, :roles => :haproxy do
|
|
40
|
+
serial_reload
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = "/etc/haproxy/haproxy.cfg"
|
|
3
|
+
%>
|
|
4
|
+
global
|
|
5
|
+
log 127.0.0.1 local0 warning
|
|
6
|
+
maxconn 1024
|
|
7
|
+
|
|
8
|
+
defaults
|
|
9
|
+
log global
|
|
10
|
+
mode http
|
|
11
|
+
retries 3
|
|
12
|
+
balance roundrobin
|
|
13
|
+
option abortonclose
|
|
14
|
+
option redispatch
|
|
15
|
+
contimeout 4000
|
|
16
|
+
clitimeout 150000
|
|
17
|
+
srvtimeout 30000
|
|
18
|
+
|
|
19
|
+
# Admin interface for proxy stats
|
|
20
|
+
listen admin 0.0.0.0:<%= rubber_env.haproxy_admin_port %>
|
|
21
|
+
stats uri /haproxy
|
|
22
|
+
|
|
23
|
+
# So monit can check on haproxy
|
|
24
|
+
# simple response : 'OK'
|
|
25
|
+
listen health_check 0.0.0.0:<%= rubber_env.haproxy_monitor_port %>
|
|
26
|
+
mode health
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = '/etc/monit/monit.d/monit-haproxy.conf'
|
|
3
|
+
%>
|
|
4
|
+
<% PIDFILE = "/var/run/haproxy.pid" %>
|
|
5
|
+
check process haproxy with pidfile <%= PIDFILE %>
|
|
6
|
+
group haproxy-<%= RUBBER_ENV %>
|
|
7
|
+
start program = "/etc/init.d/haproxy start"
|
|
8
|
+
stop program = "/etc/init.d/haproxy stop"
|
|
9
|
+
if failed host <%= rubber_env.host %> port <%= rubber_env.haproxy_monitor_port %> with timeout 10 seconds for 10 cycles then restart
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = "/etc/default/syslogd"
|
|
3
|
+
@post = "/etc/init.d/sysklogd restart"
|
|
4
|
+
%>
|
|
5
|
+
#
|
|
6
|
+
# Top configuration file for syslogd
|
|
7
|
+
#
|
|
8
|
+
|
|
9
|
+
#
|
|
10
|
+
# Full documentation of possible arguments are found in the manpage
|
|
11
|
+
# syslogd(8).
|
|
12
|
+
#
|
|
13
|
+
|
|
14
|
+
#
|
|
15
|
+
# For remote UDP logging use SYSLOGD="-r"
|
|
16
|
+
#
|
|
17
|
+
SYSLOGD="-r"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
description: The haproxy module
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
defaults:
|
|
2
|
+
ttl: 1800
|
|
3
|
+
readonly: false
|
|
4
|
+
urlencode: false
|
|
5
|
+
c_threshold: 10000
|
|
6
|
+
compression: true
|
|
7
|
+
debug: false
|
|
8
|
+
namespace: app
|
|
9
|
+
sessions: false
|
|
10
|
+
session_servers: false
|
|
11
|
+
fragments: false
|
|
12
|
+
memory: 64
|
|
13
|
+
servers: localhost:11211
|
|
14
|
+
benchmarking: true
|
|
15
|
+
raise_errors: true
|
|
16
|
+
fast_hash: false
|
|
17
|
+
fastest_hash: false
|
|
18
|
+
|
|
19
|
+
development:
|
|
20
|
+
sessions: false
|
|
21
|
+
fragments: true
|
|
22
|
+
servers: localhost:11211
|
|
23
|
+
|
|
24
|
+
# turn off caching
|
|
25
|
+
test:
|
|
26
|
+
disabled: true
|
|
27
|
+
fragments: true
|
|
28
|
+
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = "#{RUBBER_ROOT}/config/memcached.yml"
|
|
3
|
+
@additive = ["# rubber-memcached-start", "# rubber-memcached-end"]
|
|
4
|
+
%>
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
<%= RUBBER_ENV %>:
|
|
8
|
+
memory: 256
|
|
9
|
+
fragments: true
|
|
10
|
+
benchmarking: false
|
|
11
|
+
servers:
|
|
12
|
+
<% rubber_instances.for_role('memcached').each do |ic| %>
|
|
13
|
+
- <%= ic.full_name %>:11211
|
|
14
|
+
<% end %>
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = "/etc/memcached.conf"
|
|
3
|
+
@post = "/etc/init.d/memcached restart"
|
|
4
|
+
%>
|
|
5
|
+
|
|
6
|
+
# memcached default config file edited for mobicious
|
|
7
|
+
# 2003 - Jay Bonci <jaybonci@debian.org>
|
|
8
|
+
# This configuration file is read by the start-memcached script provided as
|
|
9
|
+
# part of the Debian GNU/Linux distribution.
|
|
10
|
+
|
|
11
|
+
# Run memcached as a daemon. This command is implied, and is not needed for the
|
|
12
|
+
# daemon to run. See the README.Debian that comes with this package for more
|
|
13
|
+
# information.
|
|
14
|
+
-d
|
|
15
|
+
|
|
16
|
+
# Log memcached's output to /var/log/memcached
|
|
17
|
+
logfile /var/log/memcached.log
|
|
18
|
+
|
|
19
|
+
# Be verbose
|
|
20
|
+
-v
|
|
21
|
+
|
|
22
|
+
# Be even more verbose (print client commands as well)
|
|
23
|
+
# -vv
|
|
24
|
+
|
|
25
|
+
# Start with a cap of 64 megs of memory. It's reasonable, and the daemon default
|
|
26
|
+
# Note that the daemon will grow to this size, but does not start out holding this much
|
|
27
|
+
# memory
|
|
28
|
+
-m 64
|
|
29
|
+
|
|
30
|
+
# Default connection port is 11211
|
|
31
|
+
-p 11211
|
|
32
|
+
|
|
33
|
+
# Run the daemon as root. The start-memcached will default to running as root if no
|
|
34
|
+
# -u command is present in this config file
|
|
35
|
+
-u nobody
|
|
36
|
+
|
|
37
|
+
# Specify which IP address to listen on. The default is to listen on all IP addresses
|
|
38
|
+
# This parameter is one of the only security measures that memcached has, so make sure
|
|
39
|
+
# it's listening on a firewalled interface.
|
|
40
|
+
#-l 127.0.0.1
|
|
41
|
+
|
|
42
|
+
# Limit the number of simultaneous incoming connections. The daemon default is 1024
|
|
43
|
+
# -c 1024
|
|
44
|
+
|
|
45
|
+
# Lock down all paged memory. Consult with the README and homepage before you do this
|
|
46
|
+
# -k
|
|
47
|
+
|
|
48
|
+
# Return error when memory is exhausted (rather than removing items)
|
|
49
|
+
# -M
|
|
50
|
+
|
|
51
|
+
# Maximize core file limit
|
|
52
|
+
# -r
|
data/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached_munin_plugin
ADDED
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = "/usr/share/munin/plugins/memcached"
|
|
3
|
+
@perms = 0755
|
|
4
|
+
@post = <<-POST
|
|
5
|
+
ln -sf #{@path} /etc/munin/plugins/memcached_rates
|
|
6
|
+
ln -sf #{@path} /etc/munin/plugins/memcached_bytes
|
|
7
|
+
ln -sf #{@path} /etc/munin/plugins/memcached_counters
|
|
8
|
+
/etc/init.d/munin-node restart
|
|
9
|
+
POST
|
|
10
|
+
%>#!/usr/bin/perl
|
|
11
|
+
#
|
|
12
|
+
# Plugin to monitor memcache statistics
|
|
13
|
+
#
|
|
14
|
+
# This module has 3 seperate graph datasets:
|
|
15
|
+
# rates
|
|
16
|
+
# bytes
|
|
17
|
+
# counters
|
|
18
|
+
#
|
|
19
|
+
# For each of them, symlink the memcached_ script to memcached_FOO where foo is
|
|
20
|
+
# the datset name.
|
|
21
|
+
#
|
|
22
|
+
# Parameters supported:
|
|
23
|
+
#
|
|
24
|
+
# config
|
|
25
|
+
# autoconf
|
|
26
|
+
#
|
|
27
|
+
# Configurable variables
|
|
28
|
+
#
|
|
29
|
+
# host Host of the memcache daemon
|
|
30
|
+
# port Port of the memcache daemon
|
|
31
|
+
#
|
|
32
|
+
# Author: Robin H. Johnson <robbat2@gentoo.org>
|
|
33
|
+
# Slightly based on the original version by Joshua Thijssen
|
|
34
|
+
# <jthijssen@noxlogic.nl>
|
|
35
|
+
#
|
|
36
|
+
# Magic markers:
|
|
37
|
+
#%# family=auto
|
|
38
|
+
#%# capabilities=autoconf
|
|
39
|
+
use strict;
|
|
40
|
+
my $ret = undef;
|
|
41
|
+
if (! eval "require Cache::Memcached;") {
|
|
42
|
+
$ret = "Cache::Memcached not found";
|
|
43
|
+
}
|
|
44
|
+
my $HOST = exists $ENV{'host'} ? $ENV{'host'} : "127.0.0.1";
|
|
45
|
+
my $PORT = exists $ENV{'port'} ? $ENV{'port'} : 11211;
|
|
46
|
+
if ( exists $ARGV[0] and $ARGV[0] eq "autoconf" ) {
|
|
47
|
+
if ($ret) {
|
|
48
|
+
print "no ($ret)\n";
|
|
49
|
+
exit 1;
|
|
50
|
+
}
|
|
51
|
+
# Todo: we can always connect to a memcache server without any errors so I cannot really
|
|
52
|
+
# find a way to detect the presence of a memcache instance. Maybe a forced write/read/delete
|
|
53
|
+
# but there should be a better way somewhere...
|
|
54
|
+
print "yes\n";
|
|
55
|
+
exit 0;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if($ret) {
|
|
59
|
+
print "no ($ret)\n";
|
|
60
|
+
exit 1;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
# We do everything by this array
|
|
64
|
+
my %all_vars = (
|
|
65
|
+
rates => {
|
|
66
|
+
master => {
|
|
67
|
+
graph_title => 'Memcached - Commands',
|
|
68
|
+
graph_args => '--base 1000',
|
|
69
|
+
graph_vlabel => '/${graph_period}',
|
|
70
|
+
graph_category => 'memcache',
|
|
71
|
+
},
|
|
72
|
+
memcache_cache_hits => {
|
|
73
|
+
label => 'Cache hits',
|
|
74
|
+
type => 'DERIVE',
|
|
75
|
+
min => '0',
|
|
76
|
+
max => '5000',
|
|
77
|
+
draw => 'LINE2',
|
|
78
|
+
info => 'Number of cache hits',
|
|
79
|
+
stat_group => 'misc',
|
|
80
|
+
stat_name => 'get_hits'
|
|
81
|
+
},
|
|
82
|
+
memcache_cache_misses => {
|
|
83
|
+
label => 'Cache misses',
|
|
84
|
+
type => 'DERIVE',
|
|
85
|
+
min => '0',
|
|
86
|
+
max => '5000',
|
|
87
|
+
draw => 'LINE2',
|
|
88
|
+
info => 'Number of cache misses',
|
|
89
|
+
stat_group => 'misc',
|
|
90
|
+
stat_name => 'get_misses'
|
|
91
|
+
},
|
|
92
|
+
memcache_cmd_get => {
|
|
93
|
+
label => 'GET requests',
|
|
94
|
+
type => 'DERIVE',
|
|
95
|
+
min => '0',
|
|
96
|
+
max => '5000',
|
|
97
|
+
draw => 'LINE2',
|
|
98
|
+
info => 'Number of GET commands seen',
|
|
99
|
+
stat_group => 'misc',
|
|
100
|
+
stat_name => 'cmd_get'
|
|
101
|
+
},
|
|
102
|
+
memcache_cmd_set => {
|
|
103
|
+
label => 'SET requests',
|
|
104
|
+
type => 'DERIVE',
|
|
105
|
+
min => '0',
|
|
106
|
+
max => '5000',
|
|
107
|
+
draw => 'LINE2',
|
|
108
|
+
info => 'Number of SET commands seen',
|
|
109
|
+
stat_group => 'misc',
|
|
110
|
+
stat_name => 'cmd_set'
|
|
111
|
+
},
|
|
112
|
+
memcache_total_items => {
|
|
113
|
+
label => 'New items*5',
|
|
114
|
+
type => 'DERIVE',
|
|
115
|
+
min => '0',
|
|
116
|
+
max => '5000',
|
|
117
|
+
draw => 'LINE2',
|
|
118
|
+
info => 'New items*5',
|
|
119
|
+
cdef => 'memcache_total_items,5,*',
|
|
120
|
+
stat_group => 'misc',
|
|
121
|
+
stat_name => 'total_items'
|
|
122
|
+
},
|
|
123
|
+
memcache_total_connections => {
|
|
124
|
+
label => 'New connections*100',
|
|
125
|
+
type => 'DERIVE',
|
|
126
|
+
min => '0',
|
|
127
|
+
max => '5000',
|
|
128
|
+
cdef => 'memcache_total_connections,100,*',
|
|
129
|
+
draw => 'LINE2',
|
|
130
|
+
info => 'New connections*100',
|
|
131
|
+
stat_group => 'misc',
|
|
132
|
+
stat_name => 'total_connections'
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
bytes => {
|
|
136
|
+
master => {
|
|
137
|
+
graph_title => 'Memcached - Network traffic',
|
|
138
|
+
graph_args => '--base 1000',
|
|
139
|
+
graph_vlabel => 'bytes in(-)/out(+) per ${graph_period}',
|
|
140
|
+
graph_category => 'memcache',
|
|
141
|
+
},
|
|
142
|
+
memcache_bytes_read => {
|
|
143
|
+
label => 'Bytes read',
|
|
144
|
+
type => 'COUNTER',
|
|
145
|
+
draw => 'LINE2',
|
|
146
|
+
max => '1000000',
|
|
147
|
+
info => 'Bytes read from network',
|
|
148
|
+
graph => 'no',
|
|
149
|
+
stat_group => 'misc',
|
|
150
|
+
stat_name => 'bytes_read'
|
|
151
|
+
},
|
|
152
|
+
memcache_bytes_written => {
|
|
153
|
+
label => 'Bytes written',
|
|
154
|
+
negative => 'memcache_bytes_read',
|
|
155
|
+
type => 'COUNTER',
|
|
156
|
+
max => '1000000',
|
|
157
|
+
draw => 'LINE2',
|
|
158
|
+
info => 'Bytes written to network',
|
|
159
|
+
stat_group => 'misc',
|
|
160
|
+
stat_name => 'bytes_written'
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
counters => {
|
|
164
|
+
master => {
|
|
165
|
+
graph_title => 'Memcached - Current values',
|
|
166
|
+
graph_args => '--base 1000',
|
|
167
|
+
#graph_args => '--base 1000 --loga',
|
|
168
|
+
graph_vlabel => 'Totals',
|
|
169
|
+
graph_category => 'memcache',
|
|
170
|
+
graph_scale => 'no',
|
|
171
|
+
},
|
|
172
|
+
memcache_curr_items => {
|
|
173
|
+
label => 'Current items',
|
|
174
|
+
type => 'GAUGE',
|
|
175
|
+
min => '0',
|
|
176
|
+
draw => 'LINE2',
|
|
177
|
+
info => 'Number of items in cache',
|
|
178
|
+
stat_group => 'misc',
|
|
179
|
+
stat_name => 'curr_items'
|
|
180
|
+
},
|
|
181
|
+
memcache_curr_connections => {
|
|
182
|
+
label => 'Current connections*100',
|
|
183
|
+
type => 'GAUGE',
|
|
184
|
+
min => '0',
|
|
185
|
+
draw => 'LINE2',
|
|
186
|
+
cdef => 'memcache_curr_connections,100,*',
|
|
187
|
+
info => 'Number of connections*100',
|
|
188
|
+
stat_group => 'misc',
|
|
189
|
+
stat_name => 'curr_connections'
|
|
190
|
+
},
|
|
191
|
+
memcache_bytes_allocated => {
|
|
192
|
+
label => 'Bytes allocated (KiB)',
|
|
193
|
+
type => 'GAUGE',
|
|
194
|
+
min => '0',
|
|
195
|
+
draw => 'LINE2',
|
|
196
|
+
cdef => 'memcache_bytes_allocated,1024,/',
|
|
197
|
+
info => 'Bytes allocated (KiB)',
|
|
198
|
+
stat_group => 'misc',
|
|
199
|
+
stat_name => 'bytes'
|
|
200
|
+
},
|
|
201
|
+
}
|
|
202
|
+
);
|
|
203
|
+
|
|
204
|
+
$0 =~ /memcached_(.+)*$/;
|
|
205
|
+
my $func = $1;
|
|
206
|
+
exit 2 unless defined $func;
|
|
207
|
+
my %vars = %{$all_vars{$func}};
|
|
208
|
+
|
|
209
|
+
# STAT rusage_user 3941.052868
|
|
210
|
+
# STAT rusage_system 18436.366246
|
|
211
|
+
# STAT connection_structures 1112
|
|
212
|
+
# STAT bytes 382985002
|
|
213
|
+
# STAT limit_maxbytes 536870912
|
|
214
|
+
|
|
215
|
+
if ( exists $ARGV[0] and $ARGV[0] eq "config" ) {
|
|
216
|
+
my %v = %{$vars{'master'}};
|
|
217
|
+
foreach my $k ( keys %v ) {
|
|
218
|
+
print "$k ".$v{$k}."\n"
|
|
219
|
+
}
|
|
220
|
+
print 'graph_order ';
|
|
221
|
+
foreach my $k ( sort(keys %vars) ) {
|
|
222
|
+
if($k eq 'master') { next; }
|
|
223
|
+
print $k." ";
|
|
224
|
+
}
|
|
225
|
+
print "\n";
|
|
226
|
+
foreach my $k ( sort(keys %vars) ) {
|
|
227
|
+
if($k eq 'master') { next; }
|
|
228
|
+
my %v = %{$vars{$k}};
|
|
229
|
+
foreach my $k2 (keys %v) {
|
|
230
|
+
if($k2 eq 'stat_group' or $k2 eq 'stat_name') { next; }
|
|
231
|
+
print "$k.$k2 ".$v{"$k2"}."\n";
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
exit 0;
|
|
235
|
+
}
|
|
236
|
+
my $mc = new Cache::Memcached { 'servers' => [ "$HOST:$PORT" ] };
|
|
237
|
+
my $stats = $mc->stats ('misc');
|
|
238
|
+
|
|
239
|
+
foreach my $k ( sort(keys %vars) ) {
|
|
240
|
+
if($k eq 'master') { next; }
|
|
241
|
+
my %v = %{$vars{$k}};
|
|
242
|
+
if($v{type} eq 'COMPUTE') { next; }
|
|
243
|
+
my $sg = $v{stat_group};
|
|
244
|
+
my $sn = $v{stat_name};
|
|
245
|
+
my $value = $stats->{hosts}->{"$HOST:$PORT"}->{$sg}->{$sn};
|
|
246
|
+
defined($value) or $value = 'U';
|
|
247
|
+
print "$k.value ".$value."\n";
|
|
248
|
+
}
|
|
249
|
+
# vim:syntax=perl ts=4 sw=4:
|