rubber 2.9.0 → 2.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/CHANGELOG +29 -0
- data/lib/rubber/recipes/rubber/deploy.rb +10 -5
- data/lib/rubber/version.rb +1 -1
- data/templates/base/config/rubber/deploy-setup.rb +2 -0
- data/templates/base/config/rubber/rubber.yml +8 -5
- data/templates/delayed_job/config/rubber/deploy-delayed_job.rb +27 -16
- data/templates/delayed_job/config/rubber/rubber-delayed_job.yml +1 -0
- data/templates/graylog/config/rubber/deploy-graylog.rb +17 -9
- data/templates/graylog/config/rubber/role/graylog_server/graylog2.conf +55 -36
- data/templates/graylog/config/rubber/role/graylog_web/graylog2-web-interface.conf +15 -0
- data/templates/graylog/config/rubber/rubber-graylog.yml +6 -2
- data/templates/monit/config/rubber/role/delayed_job/monit-delayed_job.conf +24 -0
- data/templates/monit/config/rubber/role/unicorn/monit-unicorn.conf +1 -1
- data/templates/passenger_nginx/config/rubber/deploy-passenger_nginx.rb +6 -39
- data/templates/passenger_nginx/config/rubber/role/passenger_nginx/nginx.conf +14 -12
- data/templates/passenger_nginx/config/rubber/rubber-passenger_nginx.yml +2 -7
- data/templates/unicorn/config/rubber/deploy-unicorn.rb +8 -9
- data/templates/unicorn/config/rubber/role/unicorn/unicorn +30 -20
- data/templates/unicorn/config/rubber/role/unicorn/unicorn.rb +6 -6
- data/templates/unicorn/config/rubber/rubber-unicorn.yml +4 -1
- metadata +3 -7
- data/templates/delayed_job/config/rubber/role/delayed_job/monit-delayed_job.conf +0 -18
- data/templates/munin/config/rubber/role/passenger_nginx/munin-passenger-memory.conf +0 -34
- data/templates/munin/config/rubber/role/passenger_nginx/munin-passenger-sudoers.conf +0 -8
- data/templates/munin/config/rubber/role/passenger_nginx/munin-passenger.conf +0 -47
- data/templates/passenger_nginx/config/rubber/role/passenger_nginx/nginx +0 -101
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8744439407fab692486f20a294c52a5c9205497e
|
4
|
+
data.tar.gz: 0786a0389c092de1defec7d51955e33e70380d9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fdde13fda5fd4795b06f60941e5e4bef3177d21c171a0d1158c70743c47da90f3c368584bf87cf37f2ed511962671cc95a488cc6f9ee6ee0cd0d9113c70d096a
|
7
|
+
data.tar.gz: 7f6c872ddaf88857d52e543ae6b90972dc6027201e24111d7e46f84d98374e0d26234481ece2a903b3023037446412f3c23533244f26928a8252f51530b9fe6b
|
data/.travis.yml
CHANGED
data/CHANGELOG
CHANGED
@@ -1,3 +1,32 @@
|
|
1
|
+
2.10.0 (06/17/2014)
|
2
|
+
|
3
|
+
Improvements:
|
4
|
+
============
|
5
|
+
|
6
|
+
[delayed_job] Added :kill and :status tasks. <52b593e>
|
7
|
+
[delayed_job] Run in bundle exec context. <52b593e>
|
8
|
+
[delayed_job] Move monit-delayed_job.conf inside the monit vulcanizer, as is the standard for all other templates. <52b593e>
|
9
|
+
[delayed_job] Added PID file control. <52b593e>
|
10
|
+
[delayed_job] Monit now has a 10-minute timeout because the PID file being monitored is not generated until after delayed_job daemonizes. <52b593e>
|
11
|
+
[graylog] Upgraded to graylog 0.2.2. <51d9b26, 30fbbbc, fb0cff8, 8a72986, 0785b66>
|
12
|
+
[graylog] Added a tools proxy for the graylog server API browser. <899555a>
|
13
|
+
[graylog] Configured the mail transport. <686ce6b>
|
14
|
+
[passenger_nginx] Install Passenger/Nginx from packages instead of building by hand. <103feee, 0c6eb6a, 499c08c, 9a88ffe>
|
15
|
+
[passenger_nginx] Remove unneeded deploy.task blocks. <1b9b252>
|
16
|
+
[passenger_nginx] Removed munin passenger plugins. <a91f837>
|
17
|
+
[unicorn] Standardized Rake names with init script names (use terms "upgrade" and "kill"). <4c616ba>
|
18
|
+
[unicorn] Increased Unicorn upgrade timeout to 10 mins. <4c616ba>
|
19
|
+
[unicorn] Clarified log messages. <4c616ba>
|
20
|
+
[unicorn] Allow setting PID file and number of workers from Rubber config. <4c616ba>
|
21
|
+
|
22
|
+
Bug Fixes:
|
23
|
+
=========
|
24
|
+
|
25
|
+
[core] Fixed template calls to rubber.run_config (a regression introduced in 2.9.0). <66310a5>
|
26
|
+
[graylog] Prevent creating the same graylog inputs twice. <ad8a177>
|
27
|
+
[unicorn] Fixed unicorn init script. <4c616ba>
|
28
|
+
|
29
|
+
|
1
30
|
2.9.0 (06/02/2014)
|
2
31
|
|
3
32
|
New Features:
|
@@ -108,12 +108,17 @@ namespace :rubber do
|
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
111
|
-
def run_config
|
111
|
+
def run_config(options={})
|
112
|
+
path = options.delete(:deploy_path) || config_path
|
113
|
+
no_post = options[:no_post] || ENV['NO_POST']
|
114
|
+
force = options[:force] || ENV['FORCE']
|
115
|
+
file = options[:file] || ENV['FILE']
|
116
|
+
|
112
117
|
opts = ""
|
113
|
-
opts += " --no_post" if
|
114
|
-
opts += " --force" if
|
115
|
-
opts += " --file=\"#{
|
116
|
-
rsudo "cd #{
|
118
|
+
opts += " --no_post" if no_post
|
119
|
+
opts += " --force" if force
|
120
|
+
opts += " --file=\"#{file}\"" if file
|
121
|
+
rsudo "cd #{path} && RUBBER_ENV=#{Rubber.env} RAILS_ENV=#{Rubber.env} ./script/rubber config #{opts}"
|
117
122
|
end
|
118
123
|
|
119
124
|
def config_path
|
data/lib/rubber/version.rb
CHANGED
@@ -54,6 +54,8 @@ namespace :rubber do
|
|
54
54
|
|
55
55
|
echo "export RUBYOPT=rubygems\nexport PATH=#{rubber_env.ruby_path}/bin:$PATH" > /etc/profile.d/ruby.sh
|
56
56
|
echo "--- \ngem: --no-ri --no-rdoc" > /etc/gemrc
|
57
|
+
update-alternatives --install /usr/bin/ruby ruby #{rubber_env.ruby_path}/bin/ruby 100
|
58
|
+
update-alternatives --set ruby #{rubber_env.ruby_path}/bin/ruby
|
57
59
|
fi
|
58
60
|
ENDSCRIPT
|
59
61
|
end
|
@@ -230,15 +230,18 @@ roles:
|
|
230
230
|
assigned_security_groups: [web_tools]
|
231
231
|
|
232
232
|
# OPTIONAL: Automatically create security groups for each host and role
|
233
|
-
# EC2 doesn't allow one to change what groups an instance belongs to after
|
234
|
-
# creation, so
|
235
|
-
|
233
|
+
# EC2 Classic doesn't allow one to change what groups an instance belongs to after
|
234
|
+
# creation, so it's good to have some empty ones predefined. EC2 with VPC, however,
|
235
|
+
# does allow changing security groups after instance creation and allows far fewer
|
236
|
+
# security groups per instance, so you shouldn't enable this setting if using VPC.
|
237
|
+
auto_security_groups: false
|
236
238
|
|
237
239
|
# OPTIONAL: Automatically isolate security groups for each appname/environment
|
238
240
|
# by mangling their names to be appname_env_groupname
|
239
241
|
# This makes it safer to have staging and production coexist on the same EC2
|
240
|
-
# account, or even multiple apps
|
241
|
-
|
242
|
+
# account, or even multiple apps. NB: due to the security group limits per instance
|
243
|
+
# in EC2 with VPCs, this option should only be enabled if you're using EC2 Classic.
|
244
|
+
isolate_security_groups: false
|
242
245
|
|
243
246
|
# OPTIONAL: Prompts one to sync security group rules when the ones in amazon
|
244
247
|
# differ from those in rubber
|
@@ -1,39 +1,50 @@
|
|
1
1
|
namespace :rubber do
|
2
|
-
|
2
|
+
|
3
3
|
namespace :delayed_job do
|
4
|
-
|
4
|
+
|
5
5
|
rubber.allow_optional_tasks(self)
|
6
|
-
|
6
|
+
|
7
7
|
after "deploy:stop", "rubber:delayed_job:stop"
|
8
8
|
after "deploy:start", "rubber:delayed_job:start"
|
9
9
|
after "deploy:restart", "rubber:delayed_job:restart"
|
10
|
-
|
10
|
+
|
11
11
|
def args
|
12
|
-
rubber_env.delayed_job_args || "-n #{rubber_env.num_delayed_job_workers}"
|
12
|
+
rubber_env.delayed_job_args || "-n #{rubber_env.num_delayed_job_workers} --pid-dir=#{rubber_env.delayed_job_pid_dir}"
|
13
13
|
end
|
14
14
|
|
15
|
-
def
|
16
|
-
|
17
|
-
|
15
|
+
def script_path
|
16
|
+
bin_path = "bin/delayed_job"
|
17
|
+
script_path = "script/delayed_job"
|
18
18
|
|
19
|
-
File.exists?(
|
19
|
+
File.exists?(bin_path) ? bin_path : script_path
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
desc "Stop the delayed_job process"
|
23
23
|
task :stop, :roles => :delayed_job do
|
24
|
-
rsudo "cd #{current_path} && RAILS_ENV=#{Rubber.env} #{self.
|
24
|
+
rsudo "cd #{current_path} && RAILS_ENV=#{Rubber.env} bundle exec #{self.script_path} stop #{self.args}", :as => rubber_env.app_user
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
desc "Start the delayed_job process"
|
28
28
|
task :start, :roles => :delayed_job do
|
29
|
-
rsudo "cd #{current_path} && RAILS_ENV=#{Rubber.env} #{self.
|
29
|
+
rsudo "cd #{current_path} && RAILS_ENV=#{Rubber.env} bundle exec #{self.script_path} start #{self.args}", :as => rubber_env.app_user
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
desc "Restart the delayed_job process"
|
33
33
|
task :restart, :roles => :delayed_job do
|
34
|
-
rsudo "cd #{current_path} && RAILS_ENV=#{Rubber.env} #{self.
|
34
|
+
rsudo "cd #{current_path} && RAILS_ENV=#{Rubber.env} bundle exec #{self.script_path} restart #{self.args}", :as => rubber_env.app_user
|
35
|
+
end
|
36
|
+
|
37
|
+
desc "Forcefully kills the delayed_job process"
|
38
|
+
task :kill, :roles => :delayed_job do
|
39
|
+
rsudo "pkill -9 -f [d]elayed_job || true"
|
40
|
+
rsudo "rm -r -f #{rubber_env.delayed_job_pid_dir}/delayed_job.*"
|
35
41
|
end
|
36
|
-
|
42
|
+
|
43
|
+
desc "Display status of the delayed_job process"
|
44
|
+
task :status, :roles => :delayed_job do
|
45
|
+
rsudo 'ps -eopid,user,cmd | grep [d]elayed_job || true'
|
46
|
+
end
|
47
|
+
|
37
48
|
desc "Live tail of delayed_job log files for all machines"
|
38
49
|
task :tail_logs, :roles => :delayed_job do
|
39
50
|
last_host = ""
|
@@ -40,6 +40,22 @@ namespace :rubber do
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
+
after "rubber:graylog:server:bootstrap", "rubber:graylog:server:create_inputs"
|
44
|
+
|
45
|
+
task :create_inputs, :roles => :graylog_web do
|
46
|
+
rubber.sudo_script 'create_inputs', <<-ENDSCRIPT
|
47
|
+
# Only create inputs if the system has 0 inputs. It's a bit of a rough hack, but graylog currently (v0.20.2)
|
48
|
+
# doesn't prevent the creation of duplicate conflicting inputs.
|
49
|
+
if ! curl -s --user #{rubber_env.graylog_web_username}:#{rubber_env.graylog_web_password} -XGET http://localhost:12900/system/inputs | grep "GELFUDPInput" &> /dev/null; then
|
50
|
+
curl --user #{rubber_env.graylog_web_username}:#{rubber_env.graylog_web_password} -XPOST http://localhost:12900/system/inputs -H "Content-Type: application/json" -d '{"type": "org.graylog2.inputs.gelf.udp.GELFUDPInput", "creator_user_id": "admin", "title": "gelf-udp", "global": true, "configuration": { "port": #{rubber_env.graylog_server_port}, "bind_address": "0.0.0.0" } }'
|
51
|
+
fi
|
52
|
+
|
53
|
+
if ! curl -s --user #{rubber_env.graylog_web_username}:#{rubber_env.graylog_web_password} -XGET http://localhost:12900/system/inputs | grep "SyslogUDPInput" &> /dev/null; then
|
54
|
+
curl --user #{rubber_env.graylog_web_username}:#{rubber_env.graylog_web_password} -XPOST http://localhost:12900/system/inputs -H "Content-Type: application/json" -d '{"type": "org.graylog2.inputs.syslog.udp.SyslogUDPInput", "creator_user_id": "admin", "title": "syslog-udp", "global": true, "configuration": { "port": #{rubber_env.graylog_server_syslog_port}, "bind_address": "0.0.0.0" } }'
|
55
|
+
fi
|
56
|
+
ENDSCRIPT
|
57
|
+
end
|
58
|
+
|
43
59
|
desc "Stops the graylog server"
|
44
60
|
task :stop, :roles => :graylog_server, :on_error => :continue do
|
45
61
|
rsudo "service graylog-server stop || true"
|
@@ -84,18 +100,10 @@ namespace :rubber do
|
|
84
100
|
rubber.run_config(:file => "role/graylog_web/", :force => true, :deploy_path => release_path)
|
85
101
|
|
86
102
|
restart
|
103
|
+
sleep 5 # Give graylog-web a bit of time to start up.
|
87
104
|
end
|
88
105
|
end
|
89
106
|
|
90
|
-
after "rubber:graylog:web:bootstrap", "rubber:graylog:web:create_inputs"
|
91
|
-
|
92
|
-
task :create_inputs, :roles => :graylog_web do
|
93
|
-
rubber.sudo_script 'create_inputs', <<-ENDSCRIPT
|
94
|
-
curl --user #{rubber_env.graylog_web_username}:#{rubber_env.graylog_web_password} -XPOST http://localhost:12900/system/inputs -H "Content-Type: application/json" -d '{"type": "org.graylog2.inputs.gelf.udp.GELFUDPInput", "creator_user_id": "admin", "title": "gelf-udp", "global": true, "configuration": { "port": #{rubber_env.graylog_server_port}, "bind_address": "0.0.0.0" } }'
|
95
|
-
curl --user #{rubber_env.graylog_web_username}:#{rubber_env.graylog_web_password} -XPOST http://localhost:12900/system/inputs -H "Content-Type: application/json" -d '{"type": "org.graylog2.inputs.syslog.udp.SyslogUDPInput", "creator_user_id": "admin", "title": "syslog-udp", "global": true, "configuration": { "port": #{rubber_env.graylog_server_syslog_port}, "bind_address": "0.0.0.0" } }'
|
96
|
-
ENDSCRIPT
|
97
|
-
end
|
98
|
-
|
99
107
|
desc "Stops the graylog web"
|
100
108
|
task :stop, :roles => :graylog_web, :on_error => :continue do
|
101
109
|
rsudo "service graylog-web stop || true"
|
@@ -1,5 +1,6 @@
|
|
1
1
|
<%
|
2
2
|
@path = "/etc/graylog2.conf"
|
3
|
+
@delayed_post = "service graylog-server restart"
|
3
4
|
|
4
5
|
require 'digest/sha2'
|
5
6
|
root_password_sha2 = (Digest::SHA2.new << rubber_env.graylog_web_password).to_s
|
@@ -23,6 +24,8 @@ root_username = <%= rubber_env.graylog_web_username %>
|
|
23
24
|
|
24
25
|
# You MUST specify a hash password for the root user (which you only need to initially set up the
|
25
26
|
# system and in case you lose connectivity to your authentication backend)
|
27
|
+
# This password cannot be changed using the API or via the web interface. If you need to change it,
|
28
|
+
# modify it in this file.
|
26
29
|
# Create one by using for example: echo -n yourpassword | shasum -a 256
|
27
30
|
# and put the resulting hash value into the following line
|
28
31
|
root_password_sha2 = <%= root_password_sha2 %>
|
@@ -38,6 +41,15 @@ rest_listen_uri = http://<%= rubber_instances[rubber_env.host].internal_ip %>:12
|
|
38
41
|
# address. (see rest_listen_uri)
|
39
42
|
rest_transport_uri = http://<%= rubber_instances[rubber_env.host].internal_ip %>:12900/
|
40
43
|
|
44
|
+
# Enable CORS headers for REST api. This is necessary for JS-clients accessing the server directly.
|
45
|
+
# If these are disabled, modern browsers will not be able to retrieve resources from the server.
|
46
|
+
# This is disabled by default. Uncomment the next line to enable it.
|
47
|
+
#rest_enable_cors = true
|
48
|
+
|
49
|
+
# Enable GZIP support for REST api. This compresses API responses and therefore helps to reduce
|
50
|
+
# overall round trip times. This is disabled by default. Uncomment the next line to enable it.
|
51
|
+
#rest_enable_gzip = true
|
52
|
+
|
41
53
|
# Embedded elasticsearch configuration file
|
42
54
|
# pay attention to the working directory of the server, maybe use an absolute path here
|
43
55
|
elasticsearch_config_file = /etc/graylog2-elasticsearch.yml
|
@@ -60,6 +72,14 @@ elasticsearch_replicas = 0
|
|
60
72
|
|
61
73
|
elasticsearch_index_prefix = graylog2
|
62
74
|
|
75
|
+
# Do you want to allow searches with leading wildcards? This can be extremely resource hungry and should only
|
76
|
+
# be enabled with care. See also: http://support.torch.sh/help/kb/graylog2-web-interface/the-search-bar-explained
|
77
|
+
allow_leading_wildcard_searches = false
|
78
|
+
|
79
|
+
# Do you want to allow searches to be highlighted? Depending on the size of your messages this can be memory hungry and
|
80
|
+
# should only be enabled after making sure your elasticsearch cluster has enough memory.
|
81
|
+
allow_highlighting = false
|
82
|
+
|
63
83
|
# settings to be passed to elasticsearch's client (overriding those in the provided elasticsearch_config_file)
|
64
84
|
# all these
|
65
85
|
# this must be the same as for your elasticsearch cluster
|
@@ -80,6 +100,13 @@ elasticsearch_node_name = <%= rubber_env.host %>
|
|
80
100
|
elasticsearch_discovery_zen_ping_multicast_enabled = false
|
81
101
|
elasticsearch_discovery_zen_ping_unicast_hosts = <%= es_servers %>
|
82
102
|
|
103
|
+
# the following settings allow to change the bind addresses for the elasticsearch client in graylog2
|
104
|
+
# these settings are empty by default, letting elasticsearch choose automatically,
|
105
|
+
# override them here or in the 'elasticsearch_config_file' if you need to bind to a special address
|
106
|
+
# refer to http://www.elasticsearch.org/guide/en/elasticsearch/reference/0.90/modules-network.html for special values here
|
107
|
+
# elasticsearch_network_host =
|
108
|
+
# elasticsearch_network_bind_host =
|
109
|
+
# elasticsearch_network_publish_host =
|
83
110
|
|
84
111
|
# Analyzer (tokenizer) to use for message and full_message field. The "standard" filter usually is a good idea.
|
85
112
|
# All supported analyzers are: standard, simple, whitespace, stop, keyword, pattern, language, snowball, custom
|
@@ -117,6 +144,18 @@ processor_wait_strategy = blocking
|
|
117
144
|
# Must be a power of 2. (512, 1024, 2048, ...)
|
118
145
|
ring_size = 1024
|
119
146
|
|
147
|
+
# EXPERIMENTAL: Dead Letters
|
148
|
+
# Every failed indexing attempt is logged by default and made visible in the web-interface. You can enable
|
149
|
+
# the experimental dead letters feature to write every message that was not successfully indexed into the
|
150
|
+
# MongoDB "dead_letters" collection to make sure that you never lose a message. The actual writing of dead
|
151
|
+
# letter should work fine already but it is not heavily tested yet and will get more features in future
|
152
|
+
# releases.
|
153
|
+
dead_letters_enabled = false
|
154
|
+
|
155
|
+
# How many seconds to wait between marking node as DEAD for possible load balancers and starting the actual
|
156
|
+
# shutdown process. Set to 0 if you have no status checking load balancers in front.
|
157
|
+
lb_recognition_period_seconds = 3
|
158
|
+
|
120
159
|
# MongoDB Configuration
|
121
160
|
mongodb_useauth = false
|
122
161
|
#mongodb_user = grayloguser
|
@@ -134,48 +173,28 @@ mongodb_max_connections = 100
|
|
134
173
|
# http://api.mongodb.org/java/current/com/mongodb/MongoOptions.html#threadsAllowedToBlockForConnectionMultiplier
|
135
174
|
mongodb_threads_allowed_to_block_multiplier = 5
|
136
175
|
|
137
|
-
|
138
176
|
# Drools Rule File (Use to rewrite incoming log messages)
|
139
177
|
# See: http://support.torch.sh/help/kb/graylog2-server/custom-message-rewritingprocessing
|
140
178
|
# rules_file = /etc/graylog2.drl
|
141
179
|
|
142
180
|
# Email transport
|
143
|
-
transport_email_enabled =
|
181
|
+
transport_email_enabled = true
|
144
182
|
transport_email_protocol = smtp
|
145
|
-
transport_email_hostname =
|
146
|
-
transport_email_port =
|
147
|
-
transport_email_use_auth =
|
148
|
-
transport_email_use_tls =
|
183
|
+
transport_email_hostname = localhost
|
184
|
+
transport_email_port = 25
|
185
|
+
transport_email_use_auth = false
|
186
|
+
transport_email_use_tls = false
|
187
|
+
transport_email_use_ssl = false
|
149
188
|
transport_email_auth_username = you@example.com
|
150
189
|
transport_email_auth_password = secret
|
151
|
-
transport_email_subject_prefix = [graylog2]
|
152
|
-
transport_email_from_email =
|
190
|
+
transport_email_subject_prefix = <%= Rubber.env == 'production' ? '[graylog2]' : "[graylog2-#{Rubber.env}]" %>
|
191
|
+
transport_email_from_email = <%= Rubber.env == 'production' ? 'graylog' : "graylog-#{Rubber.env}" %>@<%= rubber_env.domain %>
|
153
192
|
transport_email_from_name = Graylog2
|
154
|
-
|
155
|
-
|
156
|
-
#
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
transport_jabber_auth_username = your_user
|
163
|
-
transport_jabber_auth_password = secret
|
164
|
-
transport_jabber_message_prefix = [graylog2]
|
165
|
-
|
166
|
-
# Additional modules
|
167
|
-
# Graphite
|
168
|
-
#enable_graphite_output = false
|
169
|
-
#graphite_carbon_host = 127.0.0.1
|
170
|
-
#graphite_carbon_tcp_port = 2003
|
171
|
-
#graphite_prefix = logs
|
172
|
-
|
173
|
-
# Librato Metrics (http://support.torch.sh/help/kb/graylog2-server/using-librato-metrics-with-graylog2)
|
174
|
-
#enable_libratometrics_output = false
|
175
|
-
#enable_libratometrics_system_metrics = false
|
176
|
-
#libratometrics_api_user = you@example.com
|
177
|
-
#libratometrics_api_token = abcdefg12345
|
178
|
-
#libratometrics_prefix = gl2-
|
179
|
-
#libratometrics_interval = 60
|
180
|
-
#libratometrics_stream_filter =
|
181
|
-
#libratometrics_host_filter =
|
193
|
+
|
194
|
+
# Specify and uncomment this if you want to include links to the stream in your stream alert mails.
|
195
|
+
# This should define the fully qualified base url to your web interface exactly the same way as it is accessed by your users.
|
196
|
+
#
|
197
|
+
transport_email_web_interface_url = https://graylog-<%= rubber_env.full_host %>:<%= rubber_env.web_tools_ssl_port %>/
|
198
|
+
|
199
|
+
# HTTP proxy for outgoing HTTP calls
|
200
|
+
#http_proxy_uri =
|
@@ -6,6 +6,9 @@
|
|
6
6
|
# graylog2-server REST URIs (one or more, comma separated) For example: "http://127.0.0.1:12900/,http://127.0.0.1:12910/"
|
7
7
|
graylog2-server.uris="<%= graylog_server_uris %>"
|
8
8
|
|
9
|
+
# Learn how to configure custom logging in the documentation:
|
10
|
+
# http://support.torch.sh/help/kb/graylog2-web-interface/configuring-web-interface-logging
|
11
|
+
|
9
12
|
# Secret key
|
10
13
|
# ~~~~~
|
11
14
|
# The secret key is used to secure cryptographics functions. Set this to a long and randomly generated string.
|
@@ -17,3 +20,15 @@ application.secret="<%= rubber_env.graylog_web_secret %>"
|
|
17
20
|
# Graylog2 stores all timestamps in UTC. To properly display times, set the default timezone of the interface.
|
18
21
|
# If you leave this out, Graylog2 will pick your system default as the timezone. Usually you will want to configure it explicitly.
|
19
22
|
timezone="<%= rubber_env.timezone %>"
|
23
|
+
|
24
|
+
# Message field limit
|
25
|
+
# Your web interface can cause high load in your browser when you have a lot of different message fields. The default
|
26
|
+
# limit of message fields is 100. Set it to 0 if you always want to get all fields. They are for example used in the
|
27
|
+
# search result sidebar or for autocompletion of field names.
|
28
|
+
field_list_limit=100
|
29
|
+
|
30
|
+
# Use this to run Graylog2 with a path prefix
|
31
|
+
#application.context=/graylog2
|
32
|
+
|
33
|
+
# You usually do not want to change this.
|
34
|
+
application.global=lib.Global
|
@@ -1,11 +1,11 @@
|
|
1
|
-
graylog_server_version: "0.20.
|
1
|
+
graylog_server_version: "0.20.2"
|
2
2
|
graylog_server_prefix: "/usr/local"
|
3
3
|
graylog_server_dir: "#{graylog_server_prefix}/graylog2-server-#{graylog_server_version}"
|
4
4
|
graylog_server_pid_file: "/var/run/graylog-server.pid"
|
5
5
|
graylog_server_port: 12201
|
6
6
|
graylog_server_syslog_port: 12514
|
7
7
|
|
8
|
-
graylog_web_version: "0.20.
|
8
|
+
graylog_web_version: "0.20.2"
|
9
9
|
graylog_web_prefix: "/usr/local"
|
10
10
|
graylog_web_dir: "#{graylog_web_prefix}/graylog2-web-interface-#{graylog_web_version}"
|
11
11
|
graylog_web_pid_file: "/var/run/graylog-web.pid"
|
@@ -22,6 +22,10 @@ web_tools_proxies:
|
|
22
22
|
role: graylog_web
|
23
23
|
port: "#{graylog_web_port}"
|
24
24
|
path: /
|
25
|
+
graylog_server_api_browser:
|
26
|
+
role: graylog_server
|
27
|
+
port: 12900
|
28
|
+
path: /api-browser/
|
25
29
|
|
26
30
|
role_dependencies:
|
27
31
|
graylog_server: [graylog_mongodb, graylog_elasticsearch]
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<%
|
2
|
+
@path = '/etc/monit/monit.d/monit-delayed_job.conf'
|
3
|
+
current_path = "/mnt/#{rubber_env.app_name}-#{Rubber.env}/current"
|
4
|
+
|
5
|
+
bin_path = "bin/delayed_job"
|
6
|
+
script_path = "script/delayed_job"
|
7
|
+
script_path = File.exists?(bin_path) ? bin_path : script_path
|
8
|
+
%>
|
9
|
+
|
10
|
+
<% if rubber_env.num_delayed_job_workers == 1 %>
|
11
|
+
check process delayed_job
|
12
|
+
with pidfile <%= rubber_env.delayed_job_pid_dir %>/delayed_job.pid
|
13
|
+
start program = "/usr/bin/sudo -H -u #{rubber_env.app_user} /bin/bash -l -c 'cd <%= current_path %> && RAILS_ENV=<%= Rubber.env %> bundle exec <%= script_path %> start --pid-dir=<%= rubber_env.delayed_job_pid_dir %>'" with timeout 600 seconds
|
14
|
+
stop program = "/usr/bin/sudo -H -u #{rubber_env.app_user} /bin/bash -l -c 'cd <%= current_path %> && RAILS_ENV=<%= Rubber.env %> bundle exec <%= script_path %> stop --pid-dir=<%= rubber_env.delayed_job_pid_dir %>'" with timeout 600 seconds
|
15
|
+
<% else %>
|
16
|
+
<% rubber_env.num_delayed_job_workers.times do |id| %>
|
17
|
+
check process delayed_job_<%= id %>
|
18
|
+
with pidfile <%= rubber_env.delayed_job_pid_dir %>/delayed_job.<%= id %>.pid
|
19
|
+
start program = "/usr/bin/sudo -H -u #{rubber_env.app_user} /bin/bash -l -c 'cd <%= current_path %> && RAILS_ENV=<%= Rubber.env %> bundle exec <%= script_path %> start -i <%= id %> --pid-dir=<%= rubber_env.delayed_job_pid_dir %>'" with timeout 600 seconds
|
20
|
+
stop program = "/usr/bin/sudo -H -u #{rubber_env.app_user} /bin/bash -l -c 'cd <%= current_path %> && RAILS_ENV=<%= Rubber.env %> bundle exec <%= script_path %> stop -i <%= id %> --pid-dir=<%= rubber_env.delayed_job_pid_dir %>'" with timeout 600 seconds
|
21
|
+
group delayed_job
|
22
|
+
<% end %>
|
23
|
+
<% end %>
|
24
|
+
if 5 restarts within 5 cycles then timeout
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<%
|
2
2
|
@path = '/etc/monit/monit.d/monit-unicorn.conf'
|
3
3
|
%>
|
4
|
-
check process unicorn with pidfile
|
4
|
+
check process unicorn with pidfile <%= rubber_env.unicorn_pid_file %>
|
5
5
|
group unicorn-<%= Rubber.env %>
|
6
6
|
start program = "/usr/bin/env service unicorn start"
|
7
7
|
stop program = "/usr/bin/env service unicorn stop"
|
@@ -4,34 +4,14 @@ namespace :rubber do
|
|
4
4
|
|
5
5
|
rubber.allow_optional_tasks(self)
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
if [ -x /usr/sbin/nginx ]
|
13
|
-
then echo 'Found nginx on system'
|
14
|
-
if [ $(find #{rubber_env.ruby_path} -regex .*passenger-#{rubber_env.passenger_version}.*PassengerWatchdog | wc -l) -gt 0 ]
|
15
|
-
then echo 'Found passenger-nginx-module on system'
|
16
|
-
pax=$(/usr/sbin/nginx -V 2>&1 | awk '/nginx\\/#{rubber_env.nginx_version}/{a++}/passenger-#{rubber_env.passenger_version}/{b++} END {print a&&b}')
|
17
|
-
if [ $pax -eq 1 ]
|
18
|
-
then echo 'Nginx/Passenger version matches'
|
19
|
-
exit 0
|
20
|
-
fi
|
21
|
-
fi
|
22
|
-
fi
|
23
|
-
# Lets install
|
24
|
-
echo 'Installing / Upgrading nginx #{rubber_env.nginx_version}'
|
25
|
-
TMPDIR=`mktemp -d` || exit 1
|
26
|
-
cd $TMPDIR
|
27
|
-
echo 'Downloading'
|
28
|
-
wget -qN http://nginx.org/download/nginx-#{rubber_env.nginx_version}.tar.gz
|
29
|
-
echo 'Unpacking'
|
30
|
-
tar xf nginx-#{rubber_env.nginx_version}.tar.gz
|
31
|
-
passenger-install-nginx-module --auto --prefix=/opt/nginx --nginx-source-dir=$TMPDIR/nginx-#{rubber_env.nginx_version} --extra-configure-flags="--conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --sbin-path=/usr/sbin/nginx --with-http_gzip_static_module"
|
7
|
+
before "rubber:install_packages", "rubber:passenger_nginx:setup_apt_sources"
|
8
|
+
task :setup_apt_sources do
|
9
|
+
rubber.sudo_script 'configure_passenger_nginx_repository', <<-ENDSCRIPT
|
10
|
+
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
|
11
|
+
add-apt-repository -y https://oss-binaries.phusionpassenger.com/apt/passenger
|
32
12
|
ENDSCRIPT
|
33
13
|
end
|
34
|
-
|
14
|
+
|
35
15
|
after "rubber:setup_app_permissions", "rubber:passenger_nginx:setup_passenger_permissions"
|
36
16
|
|
37
17
|
task :setup_passenger_permissions, :roles => :passenger_nginx do
|
@@ -71,18 +51,5 @@ namespace :rubber do
|
|
71
51
|
serial_reload
|
72
52
|
end
|
73
53
|
|
74
|
-
|
75
|
-
deploy.task :restart, :roles => :passenger_nginx do
|
76
|
-
end
|
77
|
-
|
78
|
-
deploy.task :reload, :roles => :passenger_nginx do
|
79
|
-
end
|
80
|
-
|
81
|
-
deploy.task :stop, :roles => :passenger_nginx do
|
82
|
-
end
|
83
|
-
|
84
|
-
deploy.task :start, :roles => :passenger_nginx do
|
85
|
-
end
|
86
|
-
|
87
54
|
end
|
88
55
|
end
|
@@ -9,6 +9,9 @@ worker_rlimit_nofile 10240;
|
|
9
9
|
|
10
10
|
pid /var/run/nginx.pid;
|
11
11
|
|
12
|
+
# Preserve the system path (needed for things like imagemagick + ghostscript)
|
13
|
+
env PATH;
|
14
|
+
|
12
15
|
events
|
13
16
|
{
|
14
17
|
worker_connections 8192;
|
@@ -44,20 +47,19 @@ http
|
|
44
47
|
error_log <%= rubber_env.nginx_log_dir %>/error.log notice;
|
45
48
|
access_log <%= rubber_env.nginx_log_dir %>/access.log main;
|
46
49
|
|
47
|
-
|
48
|
-
|
50
|
+
passenger_root <%= rubber_env.passenger_root %>;
|
51
|
+
passenger_ruby <%= rubber_env.passenger_ruby %>;
|
49
52
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
rails_app_spawner_idle_time 0;
|
53
|
+
passenger_max_pool_size <%= rubber_env.max_app_connections %>;
|
54
|
+
passenger_min_instances <%= rubber_env.max_app_connections %>;
|
55
|
+
passenger_max_instances_per_app 0;
|
56
|
+
passenger_pool_idle_time 0;
|
57
|
+
passenger_max_preloader_idle_time 0;
|
56
58
|
rails_env <%= Rubber.env %>;
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
59
|
+
passenger_friendly_error_pages <%= Rubber.env == 'production' ? 'off' : 'on' %>;
|
60
|
+
|
61
|
+
passenger_user <%= rubber_env.app_user %>;
|
62
|
+
|
61
63
|
include /etc/nginx/rubber/passenger_nginx.conf;
|
62
64
|
<% if rubber_instances[rubber_env.host].role_names.include?('web_tools') %>
|
63
65
|
include /etc/nginx/rubber/tools.conf;
|
@@ -1,13 +1,9 @@
|
|
1
|
-
|
2
|
-
nginx_version: 1.2.8
|
3
|
-
passenger_root: "#{`bash -l -c 'find #{ruby_path} -name passenger-#{passenger_version}'`.strip}"
|
1
|
+
passenger_root: "/usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini"
|
4
2
|
passenger_ruby: "#{ruby_path}/bin/ruby"
|
5
|
-
passenger_lib: "#{passenger_root}/ext/nginx"
|
6
3
|
nginx_log_dir: /mnt/nginx/logs
|
7
4
|
passenger_listen_port: 7000
|
8
5
|
passenger_listen_ssl_port: 7001
|
9
6
|
max_app_connections: 20
|
10
|
-
nginx_log_dir: /mnt/nginx/logs
|
11
7
|
|
12
8
|
use_ssl_key: false
|
13
9
|
#if you use an ssl key, put your cert and key
|
@@ -18,5 +14,4 @@ use_ssl_key: false
|
|
18
14
|
|
19
15
|
roles:
|
20
16
|
passenger_nginx:
|
21
|
-
packages: [libcurl4-openssl-dev, libpcre3-dev]
|
22
|
-
gems: [[passenger, "#{passenger_version}"]]
|
17
|
+
packages: [libcurl4-openssl-dev, libpcre3-dev, nginx-extras, passenger]
|
@@ -7,18 +7,13 @@ namespace :rubber do
|
|
7
7
|
|
8
8
|
before "deploy:stop", "rubber:unicorn:stop"
|
9
9
|
after "deploy:start", "rubber:unicorn:start"
|
10
|
-
after "deploy:restart", "rubber:unicorn:
|
10
|
+
after "deploy:restart", "rubber:unicorn:upgrade"
|
11
11
|
|
12
12
|
desc "Stops the unicorn server"
|
13
13
|
task :stop, :roles => :unicorn do
|
14
14
|
rsudo "service unicorn stop"
|
15
15
|
end
|
16
16
|
|
17
|
-
desc "Forcefully kills the unicorn server"
|
18
|
-
task :force_stop, :roles => :unicorn do
|
19
|
-
rsudo "service unicorn force-stop"
|
20
|
-
end
|
21
|
-
|
22
17
|
desc "Starts the unicorn server"
|
23
18
|
task :start, :roles => :unicorn do
|
24
19
|
rsudo "service unicorn start"
|
@@ -30,16 +25,20 @@ namespace :rubber do
|
|
30
25
|
end
|
31
26
|
|
32
27
|
desc "Reloads the unicorn web server"
|
33
|
-
task :
|
28
|
+
task :upgrade, :roles => :unicorn do
|
34
29
|
rsudo "service unicorn upgrade"
|
35
30
|
end
|
36
31
|
|
32
|
+
desc "Forcefully kills the unicorn server"
|
33
|
+
task :kill, :roles => :unicorn do
|
34
|
+
rsudo "service unicorn kill"
|
35
|
+
end
|
37
36
|
|
38
37
|
desc "Display status of the unicorn web server"
|
39
38
|
task :status, :roles => :unicorn do
|
40
|
-
|
39
|
+
rsudo "service unicorn status || true"
|
41
40
|
rsudo "ps -eopid,user,cmd | grep [u]nicorn || true"
|
42
|
-
rsudo "netstat -tupan | grep unicorn || true"
|
41
|
+
# rsudo "netstat -tupan | grep unicorn || true"
|
43
42
|
end
|
44
43
|
|
45
44
|
end
|
@@ -10,9 +10,9 @@ set -e
|
|
10
10
|
# since nginx and unicorn accept the same signals
|
11
11
|
|
12
12
|
# Feel free to change any of the following variables for your app:
|
13
|
-
TIMEOUT=${TIMEOUT-
|
13
|
+
TIMEOUT=${TIMEOUT-600}
|
14
14
|
APP_ROOT=<%= current_path %>
|
15
|
-
PID
|
15
|
+
PID=<%= rubber_env.unicorn_pid_file %>
|
16
16
|
CMD="<%= "bundle exec unicorn_rails -c #{current_path}/config/unicorn.rb -E #{Rubber.env} -D" %>"
|
17
17
|
action="$1"
|
18
18
|
set -u
|
@@ -38,7 +38,7 @@ stop)
|
|
38
38
|
sig QUIT && exit 0
|
39
39
|
echo >&2 "Not running"
|
40
40
|
;;
|
41
|
-
|
41
|
+
kill)
|
42
42
|
sig TERM && exit 0
|
43
43
|
echo >&2 "Not running"
|
44
44
|
;;
|
@@ -50,42 +50,52 @@ restart|reload)
|
|
50
50
|
upgrade)
|
51
51
|
if sig USR2
|
52
52
|
then
|
53
|
-
printf 'Waiting for new workers'
|
53
|
+
printf 'Waiting for new Unicorn workers'
|
54
54
|
n=$TIMEOUT
|
55
55
|
while (! (test -s $PID && ps --no-headers --ppid `cat $PID` > /dev/null)) && test $n -ge 0
|
56
56
|
do
|
57
|
-
printf '.' && sleep
|
57
|
+
printf '.' && sleep 10 && n=$(( $n - 10 ))
|
58
58
|
done
|
59
|
-
|
59
|
+
|
60
|
+
if test $n -lt 0 && (! (test -s $PID && ps --no-headers --ppid `cat $PID` > /dev/null))
|
60
61
|
then
|
61
|
-
echo
|
62
|
-
echo >&2 'New workers failed to start; see error log'
|
62
|
+
echo >&2 "$PID process does not exist after $TIMEOUT seconds"
|
63
63
|
exit 1
|
64
64
|
fi
|
65
|
-
printf '\
|
66
|
-
|
67
|
-
n=$TIMEOUT
|
68
|
-
while test -s $old_pid && test $n -ge 0
|
69
|
-
do
|
70
|
-
printf '.' && sleep 1 && n=$(( $n - 1 ))
|
71
|
-
done
|
72
|
-
echo
|
65
|
+
printf '\nNew Unicorn workers started'
|
73
66
|
|
74
|
-
if test
|
67
|
+
if test -s $old_pid
|
75
68
|
then
|
76
|
-
|
77
|
-
|
69
|
+
printf '\nWaiting for old Unicorn master to stop'
|
70
|
+
n=$TIMEOUT
|
71
|
+
while test -s $old_pid && test $n -ge 0
|
72
|
+
do
|
73
|
+
printf '.' && sleep 10 && n=$(( $n - 10 ))
|
74
|
+
done
|
75
|
+
echo
|
76
|
+
|
77
|
+
if test $n -lt 0 && test -s $old_pid
|
78
|
+
then
|
79
|
+
echo >&2 "$old_pid still exists after $TIMEOUT seconds"
|
80
|
+
exit 1
|
81
|
+
fi
|
78
82
|
fi
|
83
|
+
|
84
|
+
printf '\nOld Unicorn master stopped'
|
79
85
|
exit 0
|
80
86
|
fi
|
81
87
|
echo >&2 "Couldn't upgrade, starting '$CMD' instead"
|
82
88
|
$CMD
|
83
89
|
;;
|
90
|
+
status)
|
91
|
+
sig 0 && echo >&2 "Running" && exit 1
|
92
|
+
echo >&2 "Stopped" && exit 0
|
93
|
+
;;
|
84
94
|
reopen-logs)
|
85
95
|
sig USR1
|
86
96
|
;;
|
87
97
|
*)
|
88
|
-
echo >&2 "Usage: $0 <start|stop|restart|upgrade|
|
98
|
+
echo >&2 "Usage: $0 <start|stop|restart|upgrade|kill|status|reopen-logs>"
|
89
99
|
exit 1
|
90
100
|
;;
|
91
101
|
esac
|
@@ -2,7 +2,7 @@
|
|
2
2
|
@path = "#{Rubber.root}/config/unicorn.rb"
|
3
3
|
current_path = "/mnt/#{rubber_env.app_name}-#{Rubber.env}/current"
|
4
4
|
%>
|
5
|
-
worker_processes
|
5
|
+
worker_processes <%= rubber_env.unicorn_num_workers %>
|
6
6
|
working_directory "<%= Rubber.root %>"
|
7
7
|
|
8
8
|
# This loads the application in the master process before forking
|
@@ -17,7 +17,7 @@ timeout 30
|
|
17
17
|
# We will point the upstream Nginx module to this socket later on
|
18
18
|
listen "/var/run/unicorn.sock", :backlog => 64
|
19
19
|
|
20
|
-
pid "
|
20
|
+
pid "<%= rubber_env.unicorn_pid_file %>"
|
21
21
|
|
22
22
|
# Set the path of the log files inside the log folder of the testapp
|
23
23
|
stderr_path "<%= Rubber.root %>/log/unicorn.stderr.log"
|
@@ -41,12 +41,12 @@ before_fork do |server, worker|
|
|
41
41
|
# we send it a QUIT.
|
42
42
|
#
|
43
43
|
# Using this method we get 0 downtime deploys.
|
44
|
-
old_pid =
|
44
|
+
old_pid = server.config[:pid].sub('.pid', '.pid.oldbin')
|
45
45
|
if File.exists?(old_pid) && server.pid != old_pid
|
46
46
|
begin
|
47
47
|
Process.kill("QUIT", File.read(old_pid).to_i)
|
48
48
|
rescue Errno::ENOENT, Errno::ESRCH
|
49
|
-
|
49
|
+
STDERR.puts "WARNING: old Unicorn process was already killed before new process forked."
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
@@ -74,7 +74,7 @@ after_fork do |server, worker|
|
|
74
74
|
end
|
75
75
|
rescue => e
|
76
76
|
if RAILS_ENV == 'development'
|
77
|
-
STDERR.puts "
|
77
|
+
STDERR.puts "WARNING: could not set user on Unicorn workers."
|
78
78
|
else
|
79
79
|
raise e
|
80
80
|
end
|
@@ -84,4 +84,4 @@ after_fork do |server, worker|
|
|
84
84
|
# processes
|
85
85
|
defined?(ActiveRecord::Base) and
|
86
86
|
ActiveRecord::Base.establish_connection
|
87
|
-
end
|
87
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Conway
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-06-
|
12
|
+
date: 2014-06-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: capistrano
|
@@ -357,7 +357,6 @@ files:
|
|
357
357
|
- templates/cruise/config/rubber/rubber-cruise.yml
|
358
358
|
- templates/cruise/templates.yml
|
359
359
|
- templates/delayed_job/config/rubber/deploy-delayed_job.rb
|
360
|
-
- templates/delayed_job/config/rubber/role/delayed_job/monit-delayed_job.conf
|
361
360
|
- templates/delayed_job/config/rubber/rubber-delayed_job.yml
|
362
361
|
- templates/delayed_job/templates.yml
|
363
362
|
- templates/discourse/config/rubber/deploy-discourse.rb
|
@@ -454,6 +453,7 @@ files:
|
|
454
453
|
- templates/monit/config/rubber/role/apache/monit-apache.conf
|
455
454
|
- templates/monit/config/rubber/role/cassandra/monit-cassandra.conf
|
456
455
|
- templates/monit/config/rubber/role/couchbase/monit-couchbase.conf
|
456
|
+
- templates/monit/config/rubber/role/delayed_job/monit-delayed_job.conf
|
457
457
|
- templates/monit/config/rubber/role/elasticsearch/monit-elasticsearch.conf
|
458
458
|
- templates/monit/config/rubber/role/graphite_server/monit-graphite_server.conf
|
459
459
|
- templates/monit/config/rubber/role/graylog_server/monit-graylog_server.conf
|
@@ -490,9 +490,6 @@ files:
|
|
490
490
|
- templates/munin/config/rubber/role/passenger/munin-passenger-memory.conf
|
491
491
|
- templates/munin/config/rubber/role/passenger/munin-passenger-sudoers.conf
|
492
492
|
- templates/munin/config/rubber/role/passenger/munin-passenger.conf
|
493
|
-
- templates/munin/config/rubber/role/passenger_nginx/munin-passenger-memory.conf
|
494
|
-
- templates/munin/config/rubber/role/passenger_nginx/munin-passenger-sudoers.conf
|
495
|
-
- templates/munin/config/rubber/role/passenger_nginx/munin-passenger.conf
|
496
493
|
- templates/munin/config/rubber/role/postgresql/munin-postgresql.conf
|
497
494
|
- templates/munin/config/rubber/role/web_tools/munin-nginx.conf
|
498
495
|
- templates/munin/config/rubber/role/web_tools/munin-plugins.conf
|
@@ -543,7 +540,6 @@ files:
|
|
543
540
|
- templates/passenger_nginx/config/rubber/deploy-passenger_nginx.rb
|
544
541
|
- templates/passenger_nginx/config/rubber/role/passenger_nginx/application.conf
|
545
542
|
- templates/passenger_nginx/config/rubber/role/passenger_nginx/crontab
|
546
|
-
- templates/passenger_nginx/config/rubber/role/passenger_nginx/nginx
|
547
543
|
- templates/passenger_nginx/config/rubber/role/passenger_nginx/nginx.conf
|
548
544
|
- templates/passenger_nginx/config/rubber/role/passenger_nginx/passenger_nginx.conf
|
549
545
|
- templates/passenger_nginx/config/rubber/role/web_tools/nginx-tools.conf
|
@@ -1,18 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
@path = '/etc/monit/monit.d/monit-delayed_job.conf'
|
3
|
-
%>
|
4
|
-
|
5
|
-
<% if rubber_env.num_delayed_job_workers == 1 %>
|
6
|
-
check process delayed_job
|
7
|
-
with pidfile <%= Rubber.root %>/tmp/pids/delayed_job.pid
|
8
|
-
start program = "/usr/bin/sudo -H -u <%= rubber_env.app_user %> /bin/bash -l -c 'RAILS_ENV=<%= Rubber.env %> <%= Rubber.root %>/script/delayed_job start'"
|
9
|
-
stop program = "/usr/bin/sudo -H -u <%= rubber_env.app_user %> /bin/bash -l -c 'RAILS_ENV=<%= Rubber.env %> <%= Rubber.root %>/script/delayed_job stop'"
|
10
|
-
<% else %>
|
11
|
-
<% rubber_env.num_delayed_job_workers.times do |id| %>
|
12
|
-
check process delayed_job_<%= id %>
|
13
|
-
with pidfile <%= Rubber.root %>/tmp/pids/delayed_job.<%= id %>.pid
|
14
|
-
start program = "/usr/bin/sudo -H -u <%= rubber_env.app_user %> /bin/bash -l -c 'RAILS_ENV=<%= Rubber.env %> <%= Rubber.root %>/script/delayed_job start -i <%= id %>'"
|
15
|
-
stop program = "/usr/bin/sudo -H -u <%= rubber_env.app_user %> /bin/bash -l -c 'RAILS_ENV=<%= Rubber.env %> <%= Rubber.root %>/script/delayed_job stop -i <%= id %>'"
|
16
|
-
group delayed_job
|
17
|
-
<% end %>
|
18
|
-
<% end %>
|
@@ -1,34 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
@path = "/etc/munin/plugins/passenger_memory_status"
|
3
|
-
@perms = 0755
|
4
|
-
%>#!/usr/bin/env ruby
|
5
|
-
# put in /etc/munin/plugins and restart munin-node
|
6
|
-
# by Dan Manges, http://www.dcmanges.com/blog/rails-application-visualization-with-munin
|
7
|
-
# NOTE: you might need to add munin to allow passwordless sudo for passenger-memory-stats
|
8
|
-
|
9
|
-
def output_config
|
10
|
-
puts <<-END
|
11
|
-
graph_category App
|
12
|
-
graph_title Passenger memory stats
|
13
|
-
graph_vlabel megabytes
|
14
|
-
|
15
|
-
memory.label memory
|
16
|
-
END
|
17
|
-
exit 0
|
18
|
-
end
|
19
|
-
|
20
|
-
def output_values
|
21
|
-
status = `sudo <%= rubber_env.ruby_path %>/bin/passenger-memory-stats | tail -1`
|
22
|
-
unless $?.success?
|
23
|
-
$stderr.puts "failed executing passenger-memory-stats"
|
24
|
-
exit 1
|
25
|
-
end
|
26
|
-
status =~ /(\d+\.\d+)/
|
27
|
-
puts "memory.value #{$1}"
|
28
|
-
end
|
29
|
-
|
30
|
-
if ARGV[0] == "config"
|
31
|
-
output_config
|
32
|
-
else
|
33
|
-
output_values
|
34
|
-
end
|
@@ -1,8 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
@path = '/etc/sudoers'
|
3
|
-
@additive = ["# munin passenger start", "# munin passenger end"]
|
4
|
-
%>
|
5
|
-
Defaults env_keep = GEM_PATH
|
6
|
-
|
7
|
-
nobody ALL=(ALL) NOPASSWD: <%= rubber_env.ruby_path %>/bin/passenger-status
|
8
|
-
nobody ALL=(ALL) NOPASSWD: <%= rubber_env.ruby_path %>/bin/passenger-memory-stats
|
@@ -1,47 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
@path = "/etc/munin/plugins/passenger_status"
|
3
|
-
@perms = 0755
|
4
|
-
%>#!/usr/bin/env ruby
|
5
|
-
|
6
|
-
# from http://gist.github.com/21328
|
7
|
-
# by Dan Manges, http://www.dcmanges.com/blog/rails-application-visualization-with-munin
|
8
|
-
|
9
|
-
def output_config
|
10
|
-
puts <<-END
|
11
|
-
graph_category App
|
12
|
-
graph_title passenger status
|
13
|
-
graph_vlabel count
|
14
|
-
|
15
|
-
sessions.label sessions
|
16
|
-
max.label max processes
|
17
|
-
running.label running processes
|
18
|
-
active.label active processes
|
19
|
-
END
|
20
|
-
exit 0
|
21
|
-
end
|
22
|
-
|
23
|
-
def output_values
|
24
|
-
status = `sudo <%= rubber_env.ruby_path %>/bin/passenger-status`
|
25
|
-
unless $?.success?
|
26
|
-
$stderr.puts "failed executing passenger-status"
|
27
|
-
exit 1
|
28
|
-
end
|
29
|
-
status =~ /max\s+=\s+(\d+)/
|
30
|
-
puts "max.value #{$1}"
|
31
|
-
|
32
|
-
status =~ /count\s+=\s+(\d+)/
|
33
|
-
puts "running.value #{$1}"
|
34
|
-
|
35
|
-
status =~ /active\s+=\s+(\d+)/
|
36
|
-
puts "active.value #{$1}"
|
37
|
-
|
38
|
-
total_sessions = 0
|
39
|
-
status.scan(/Sessions: (\d+)/).flatten.each { |count| total_sessions += count.to_i }
|
40
|
-
puts "sessions.value #{total_sessions}"
|
41
|
-
end
|
42
|
-
|
43
|
-
if ARGV[0] == "config"
|
44
|
-
output_config
|
45
|
-
else
|
46
|
-
output_values
|
47
|
-
end
|
@@ -1,101 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
@path = "/etc/init.d/nginx"
|
3
|
-
@perms = 0755
|
4
|
-
@post = "/usr/sbin/update-rc.d -f nginx defaults"
|
5
|
-
@backup = false
|
6
|
-
%>#!/bin/sh
|
7
|
-
|
8
|
-
### BEGIN INIT INFO
|
9
|
-
# Provides: nginx
|
10
|
-
# Required-Start: $local_fs $remote_fs $network $syslog
|
11
|
-
# Required-Stop: $local_fs $remote_fs $network $syslog
|
12
|
-
# Default-Start: 2 3 4 5
|
13
|
-
# Default-Stop: 0 1 6
|
14
|
-
# Short-Description: starts the nginx web server
|
15
|
-
# Description: starts nginx using start-stop-daemon
|
16
|
-
### END INIT INFO
|
17
|
-
|
18
|
-
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
|
19
|
-
DAEMON=/usr/sbin/nginx
|
20
|
-
NAME=nginx
|
21
|
-
DESC=nginx
|
22
|
-
|
23
|
-
# Include nginx defaults if available
|
24
|
-
if [ -f /etc/default/nginx ]; then
|
25
|
-
. /etc/default/nginx
|
26
|
-
fi
|
27
|
-
|
28
|
-
test -x $DAEMON || exit 0
|
29
|
-
|
30
|
-
set -e
|
31
|
-
|
32
|
-
. /lib/lsb/init-functions
|
33
|
-
|
34
|
-
test_nginx_config() {
|
35
|
-
if $DAEMON -t $DAEMON_OPTS >/dev/null 2>&1; then
|
36
|
-
return 0
|
37
|
-
else
|
38
|
-
$DAEMON -t $DAEMON_OPTS
|
39
|
-
return $?
|
40
|
-
fi
|
41
|
-
}
|
42
|
-
|
43
|
-
case "$1" in
|
44
|
-
start)
|
45
|
-
echo -n "Starting $DESC: "
|
46
|
-
test_nginx_config
|
47
|
-
# Check if the ULIMIT is set in /etc/default/nginx
|
48
|
-
if [ -n "$ULIMIT" ]; then
|
49
|
-
# Set the ulimits
|
50
|
-
ulimit $ULIMIT
|
51
|
-
fi
|
52
|
-
start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
|
53
|
-
--exec $DAEMON -- $DAEMON_OPTS || true
|
54
|
-
echo "$NAME."
|
55
|
-
;;
|
56
|
-
|
57
|
-
stop)
|
58
|
-
echo -n "Stopping $DESC: "
|
59
|
-
start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
|
60
|
-
--exec $DAEMON || true
|
61
|
-
echo "$NAME."
|
62
|
-
;;
|
63
|
-
|
64
|
-
restart|force-reload)
|
65
|
-
echo -n "Restarting $DESC: "
|
66
|
-
start-stop-daemon --stop --quiet --pidfile \
|
67
|
-
/var/run/$NAME.pid --exec $DAEMON || true
|
68
|
-
sleep 1
|
69
|
-
test_nginx_config
|
70
|
-
start-stop-daemon --start --quiet --pidfile \
|
71
|
-
/var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true
|
72
|
-
echo "$NAME."
|
73
|
-
;;
|
74
|
-
|
75
|
-
reload)
|
76
|
-
echo -n "Reloading $DESC configuration: "
|
77
|
-
test_nginx_config
|
78
|
-
start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid \
|
79
|
-
--exec $DAEMON || true
|
80
|
-
echo "$NAME."
|
81
|
-
;;
|
82
|
-
|
83
|
-
configtest|testconfig)
|
84
|
-
echo -n "Testing $DESC configuration: "
|
85
|
-
if test_nginx_config; then
|
86
|
-
echo "$NAME."
|
87
|
-
else
|
88
|
-
exit $?
|
89
|
-
fi
|
90
|
-
;;
|
91
|
-
|
92
|
-
status)
|
93
|
-
status_of_proc -p /var/run/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?
|
94
|
-
;;
|
95
|
-
*)
|
96
|
-
echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest}" >&2
|
97
|
-
exit 1
|
98
|
-
;;
|
99
|
-
esac
|
100
|
-
|
101
|
-
exit 0
|