diff --git a/files/gitlab-cookbooks/gitlab/attributes/default.rb b/files/gitlab-cookbooks/gitlab/attributes/default.rb index 74a996c..dbaed8c 100644 --- a/files/gitlab-cookbooks/gitlab/attributes/default.rb +++ b/files/gitlab-cookbooks/gitlab/attributes/default.rb @@ -175,8 +175,6 @@ default['gitlab']['postgresql']['ha'] = false default['gitlab']['postgresql']['dir'] = "/var/opt/gitlab/postgresql" default['gitlab']['postgresql']['data_dir'] = "/var/opt/gitlab/postgresql/data" default['gitlab']['postgresql']['log_directory'] = "/var/log/gitlab/postgresql" -default['gitlab']['postgresql']['svlogd_size'] = 1000000 -default['gitlab']['postgresql']['svlogd_num'] = 10 default['gitlab']['postgresql']['username'] = "gitlab-psql" default['gitlab']['postgresql']['uid'] = nil default['gitlab']['postgresql']['gid'] = nil @@ -217,8 +215,6 @@ default['gitlab']['redis']['enable'] = true default['gitlab']['redis']['ha'] = false default['gitlab']['redis']['dir'] = "/var/opt/gitlab/redis" default['gitlab']['redis']['log_directory'] = "/var/log/gitlab/redis" -default['gitlab']['redis']['svlogd_size'] = 1000000 -default['gitlab']['redis']['svlogd_num'] = 10 default['gitlab']['redis']['username'] = "gitlab-redis" default['gitlab']['redis']['uid'] = nil default['gitlab']['redis']['gid'] = nil @@ -254,3 +250,13 @@ default['gitlab']['nginx']['ssl_certificate_key'] = "/etc/gitlab/ssl/#{node['fqd default['gitlab']['nginx']['ssl_ciphers'] = "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4" default['gitlab']['nginx']['ssl_prefer_server_ciphers'] = "on" default['gitlab']['nginx']['listen_address'] = '*' + +### +# Logging +### +default['gitlab']['logging']['svlogd_size'] = 200 * 1024 * 1024 # rotate after 200 MB of log data +default['gitlab']['logging']['svlogd_num'] = 30 # keep 30 rotated log files +default['gitlab']['logging']['svlogd_timeout'] = 24 * 60 * 60 # rotate after 24 hours +default['gitlab']['logging']['svlogd_filter'] = "gzip" # compress logs with gzip +default['gitlab']['logging']['svlogd_udp'] = nil # transmit log messages via UDP +default['gitlab']['logging']['svlogd_prefix'] = nil # custom prefix for log messages diff --git a/files/gitlab-cookbooks/gitlab/libraries/gitlab.rb b/files/gitlab-cookbooks/gitlab/libraries/gitlab.rb index 6732a24..5788d3d 100644 --- a/files/gitlab-cookbooks/gitlab/libraries/gitlab.rb +++ b/files/gitlab-cookbooks/gitlab/libraries/gitlab.rb @@ -43,6 +43,7 @@ module Gitlab unicorn Mash.new sidekiq Mash.new nginx Mash.new + logging Mash.new node nil external_url nil git_data_dir nil @@ -134,6 +135,7 @@ module Gitlab "unicorn", "sidekiq", "nginx", + "logging", "postgresql" ].each do |key| rkey = key.gsub('_', '-') diff --git a/files/gitlab-cookbooks/gitlab/recipes/nginx.rb b/files/gitlab-cookbooks/gitlab/recipes/nginx.rb index 42c1e70..209ccb8 100644 --- a/files/gitlab-cookbooks/gitlab/recipes/nginx.rb +++ b/files/gitlab-cookbooks/gitlab/recipes/nginx.rb @@ -71,6 +71,7 @@ runit_service "nginx" do options({ :log_directory => nginx_log_dir }.merge(params)) + log_options node['gitlab']['logging'].to_hash.merge(node['gitlab']['nginx'].to_hash) end if node['gitlab']['bootstrap']['enable'] diff --git a/files/gitlab-cookbooks/gitlab/recipes/postgresql.rb b/files/gitlab-cookbooks/gitlab/recipes/postgresql.rb index 6783ed5..bd1b8c6 100644 --- a/files/gitlab-cookbooks/gitlab/recipes/postgresql.rb +++ b/files/gitlab-cookbooks/gitlab/recipes/postgresql.rb @@ -125,10 +125,9 @@ runit_service "postgresql" do down node['gitlab']['postgresql']['ha'] control(['t']) options({ - :log_directory => postgresql_log_dir, - :svlogd_size => node['gitlab']['postgresql']['svlogd_size'], - :svlogd_num => node['gitlab']['postgresql']['svlogd_num'] + :log_directory => postgresql_log_dir }.merge(params)) + log_options node['gitlab']['logging'].to_hash.merge(node['gitlab']['postgresql'].to_hash) end if node['gitlab']['bootstrap']['enable'] diff --git a/files/gitlab-cookbooks/gitlab/recipes/redis.rb b/files/gitlab-cookbooks/gitlab/recipes/redis.rb index c53fb87..77034a1 100644 --- a/files/gitlab-cookbooks/gitlab/recipes/redis.rb +++ b/files/gitlab-cookbooks/gitlab/recipes/redis.rb @@ -55,10 +55,9 @@ end runit_service "redis" do down node['gitlab']['redis']['ha'] options({ - :log_directory => redis_log_dir, - :svlogd_size => node['gitlab']['redis']['svlogd_size'], - :svlogd_num => node['gitlab']['redis']['svlogd_num'] + :log_directory => redis_log_dir }.merge(params)) + log_options node['gitlab']['logging'].to_hash.merge(node['gitlab']['redis'].to_hash) end if node['gitlab']['bootstrap']['enable'] diff --git a/files/gitlab-cookbooks/gitlab/recipes/sidekiq.rb b/files/gitlab-cookbooks/gitlab/recipes/sidekiq.rb index bf6897c..25f1663 100644 --- a/files/gitlab-cookbooks/gitlab/recipes/sidekiq.rb +++ b/files/gitlab-cookbooks/gitlab/recipes/sidekiq.rb @@ -29,6 +29,7 @@ runit_service "sidekiq" do options({ :log_directory => sidekiq_log_dir }.merge(params)) + log_options node['gitlab']['logging'].to_hash.merge(node['gitlab']['sidekiq'].to_hash) end if node['gitlab']['bootstrap']['enable'] diff --git a/files/gitlab-cookbooks/gitlab/recipes/unicorn.rb b/files/gitlab-cookbooks/gitlab/recipes/unicorn.rb index 0984b4f..4fb8c55 100644 --- a/files/gitlab-cookbooks/gitlab/recipes/unicorn.rb +++ b/files/gitlab-cookbooks/gitlab/recipes/unicorn.rb @@ -78,6 +78,7 @@ runit_service "unicorn" do options({ :log_directory => unicorn_log_dir }.merge(params)) + log_options node['gitlab']['logging'].to_hash.merge(node['gitlab']['unicorn'].to_hash) end if node['gitlab']['bootstrap']['enable'] diff --git a/files/gitlab-cookbooks/gitlab/templates/default/sv-nginx-log-config.erb b/files/gitlab-cookbooks/gitlab/templates/default/sv-nginx-log-config.erb new file mode 100644 index 0000000..8902097 --- /dev/null +++ b/files/gitlab-cookbooks/gitlab/templates/default/sv-nginx-log-config.erb @@ -0,0 +1,6 @@ +<%= "s#@svlogd_size" if @svlogd_size %> +<%= "n#@svlogd_num" if @svlogd_num %> +<%= "t#@svlogd_timeout" if @svlogd_timeout %> +<%= "!#@svlogd_filter" if @svlogd_filter %> +<%= "u#@svlogd_udp" if @svlogd_udp %> +<%= "p#@svlogd_prefix" if @svlogd_prefix %> diff --git a/files/gitlab-cookbooks/gitlab/templates/default/sv-postgresql-log-config.erb b/files/gitlab-cookbooks/gitlab/templates/default/sv-postgresql-log-config.erb new file mode 100644 index 0000000..8902097 --- /dev/null +++ b/files/gitlab-cookbooks/gitlab/templates/default/sv-postgresql-log-config.erb @@ -0,0 +1,6 @@ +<%= "s#@svlogd_size" if @svlogd_size %> +<%= "n#@svlogd_num" if @svlogd_num %> +<%= "t#@svlogd_timeout" if @svlogd_timeout %> +<%= "!#@svlogd_filter" if @svlogd_filter %> +<%= "u#@svlogd_udp" if @svlogd_udp %> +<%= "p#@svlogd_prefix" if @svlogd_prefix %> diff --git a/files/gitlab-cookbooks/gitlab/templates/default/sv-redis-log-config.erb b/files/gitlab-cookbooks/gitlab/templates/default/sv-redis-log-config.erb new file mode 100644 index 0000000..8902097 --- /dev/null +++ b/files/gitlab-cookbooks/gitlab/templates/default/sv-redis-log-config.erb @@ -0,0 +1,6 @@ +<%= "s#@svlogd_size" if @svlogd_size %> +<%= "n#@svlogd_num" if @svlogd_num %> +<%= "t#@svlogd_timeout" if @svlogd_timeout %> +<%= "!#@svlogd_filter" if @svlogd_filter %> +<%= "u#@svlogd_udp" if @svlogd_udp %> +<%= "p#@svlogd_prefix" if @svlogd_prefix %> diff --git a/files/gitlab-cookbooks/gitlab/templates/default/sv-sidekiq-log-config.erb b/files/gitlab-cookbooks/gitlab/templates/default/sv-sidekiq-log-config.erb new file mode 100644 index 0000000..8902097 --- /dev/null +++ b/files/gitlab-cookbooks/gitlab/templates/default/sv-sidekiq-log-config.erb @@ -0,0 +1,6 @@ +<%= "s#@svlogd_size" if @svlogd_size %> +<%= "n#@svlogd_num" if @svlogd_num %> +<%= "t#@svlogd_timeout" if @svlogd_timeout %> +<%= "!#@svlogd_filter" if @svlogd_filter %> +<%= "u#@svlogd_udp" if @svlogd_udp %> +<%= "p#@svlogd_prefix" if @svlogd_prefix %> diff --git a/files/gitlab-cookbooks/gitlab/templates/default/sv-unicorn-log-config.erb b/files/gitlab-cookbooks/gitlab/templates/default/sv-unicorn-log-config.erb new file mode 100644 index 0000000..8902097 --- /dev/null +++ b/files/gitlab-cookbooks/gitlab/templates/default/sv-unicorn-log-config.erb @@ -0,0 +1,6 @@ +<%= "s#@svlogd_size" if @svlogd_size %> +<%= "n#@svlogd_num" if @svlogd_num %> +<%= "t#@svlogd_timeout" if @svlogd_timeout %> +<%= "!#@svlogd_filter" if @svlogd_filter %> +<%= "u#@svlogd_udp" if @svlogd_udp %> +<%= "p#@svlogd_prefix" if @svlogd_prefix %> diff --git a/files/gitlab-cookbooks/runit/definitions/runit_service.rb b/files/gitlab-cookbooks/runit/definitions/runit_service.rb index 60f09a1..7f90f68 100644 --- a/files/gitlab-cookbooks/runit/definitions/runit_service.rb +++ b/files/gitlab-cookbooks/runit/definitions/runit_service.rb @@ -18,7 +18,7 @@ # limitations under the License. # -define :runit_service, :directory => nil, :only_if => false, :finish_script => false, :control => [], :run_restart => true, :active_directory => nil, :init_script_template => nil, :owner => "root", :group => "root", :template_name => nil, :start_command => "start", :stop_command => "stop", :restart_command => "restart", :status_command => "status", :options => Hash.new, :env => Hash.new, :action => :enable, :down => false do +define :runit_service, :directory => nil, :only_if => false, :finish_script => false, :control => [], :run_restart => true, :active_directory => nil, :init_script_template => nil, :owner => "root", :group => "root", :template_name => nil, :start_command => "start", :stop_command => "stop", :restart_command => "restart", :status_command => "status", :options => Hash.new, :log_options => Hash.new, :env => Hash.new, :action => :enable, :down => false do include_recipe "runit" @@ -77,6 +77,24 @@ define :runit_service, :directory => nil, :only_if => false, :finish_script => f end end + template File.join(params[:options][:log_directory], "config") do + owner params[:owner] + group params[:group] + source "sv-#{params[:template_name]}-log-config.erb" + cookbook params[:cookbook] if params[:cookbook] + variables params[:log_options] + notifies :create, "ruby_block[reload #{params[:name]} svlogd configuration]" + end + + ruby_block "reload #{params[:name]} svlogd configuration" do + block do + File.open(File.join(sv_dir_name, "log/supervise/control"), "w") do |control| + control.print "h" + end + end + action :nothing + end + if params[:down] file "#{sv_dir_name}/down" do mode "0644" -- libgit2 0.21.2