Created
July 6, 2012 15:35
-
-
Save threetee/3060935 to your computer and use it in GitHub Desktop.
logstash::server recipe
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
rs_utils_marker :begin | |
# TODO: restrict search to servers in same environment | |
log "Retrieving elasticsearch server list via RightLink" | |
rs_utils_server_collection "elasticsearch_servers" do | |
tags ["cf_elasticsearch:active"] | |
secondary_tags 'server:private_ip_0' | |
action :load | |
end | |
# For now, just load the first one we find, and if we didn't find any, then fall back to attributes | |
if node.has_key?(:server_collection) | |
es_results = node[:server_collection]["elasticsearch_servers"] | |
end | |
unless es_results.nil? || es_results.empty? | |
es_server = es_results.first | |
es_server_ip = es_server[1].detect { |i| i =~ /server:private_ip_0/ }.split('=').last | |
else | |
log "No elasticsearch server_collection results, using default: '#{node['logstash']['elasticsearch_ip']}'" | |
es_server_ip = node['logstash']['elasticsearch_ip'] | |
end | |
log "Using elasticsearch server IP: '#{es_server_ip}'" | |
# TODO: restrict search to servers in same environment | |
log "Retrieving graphite server list via RightLink" | |
rs_utils_server_collection "graphite_servers" do | |
tags ["cf_graphite:active"] | |
secondary_tags 'server:private_ip_0' | |
action :load | |
end | |
if node.has_key?(:server_collection) | |
graphite_results = node[:server_collection]["graphite_servers"] | |
end | |
unless graphite_results.nil? || graphite_results.empty? | |
graphite_server = graphite_results.first | |
graphite_server_ip = graphite_server[1].detect { |i| i =~ /server:private_ip_0/ }.split('=').last | |
else | |
log "No graphite server_collection results, using default: '#{node['logstash']['graphite_ip']}'" | |
graphite_server_ip = node['logstash']['graphite_ip'] | |
end | |
log "Using graphite server IP: '#{graphite_server_ip}'" | |
#create directory for logstash | |
directory "#{node[:logstash][:basedir]}/server" do | |
action :create | |
mode "0755" | |
owner "#{node[:logstash][:user]}" | |
group "#{node[:logstash][:group]}" | |
end | |
%w{bin etc lib log tmp patterns }.each do |ldir| | |
directory "#{node['logstash']['basedir']}/server/#{ldir}" do | |
action :create | |
mode "0755" | |
owner node['logstash']['user'] | |
group node['logstash']['group'] | |
end | |
link "/var/lib/logstash/#{ldir}" do | |
to "#{node['logstash']['basedir']}/server/#{ldir}" | |
end | |
end | |
# installation | |
cookbook_file "#{node[:logstash][:basedir]}/server/lib/logstash-#{node[:logstash][:server][:version]}-monolithic.jar" do | |
source "logstash-#{node[:logstash][:server][:version]}-monolithic.jar" | |
owner "root" | |
group "root" | |
mode "0755" | |
end | |
link "#{node[:logstash][:basedir]}/server/lib/logstash.jar" do | |
to "#{node[:logstash][:basedir]}/server/lib/logstash-#{node[:logstash][:server][:version]}-monolithic.jar" | |
notifies :restart, "service[logstash_server]" | |
end | |
directory "#{node[:logstash][:basedir]}/server/etc/conf.d" do | |
action :create | |
mode "0755" | |
owner "#{node[:logstash][:user]}" | |
group "#{node[:logstash][:group]}" | |
end | |
link "/etc/logstash" do | |
to "#{node[:logstash][:basedir]}/server/etc" | |
end | |
runit_service "logstash_server" | |
template "#{node[:logstash][:basedir]}/server/etc/logstash.conf" do | |
source "#{node[:logstash][:server][:base_config]}" | |
owner "#{node[:logstash][:user]}" | |
group "#{node[:logstash][:group]}" | |
mode "0644" | |
variables(:graphite_server_ip => graphite_server_ip, | |
:es_server_ip => es_server_ip, | |
:enable_embedded_es => node['logstash']['server']['enable_embedded_es'], | |
:es_cluster => node['logstash']['elasticsearch_cluster']) | |
notifies :restart, "service[logstash_server]" | |
action :create | |
end | |
# Tag the server as an active logstash server | |
# TODO: generate the tag name from attributes so the cookbook will be more re-usable | |
tag = "cf_logstash:active=true" | |
log "Tagging server with #{tag}" | |
right_link_tag tag | |
# TODO: set up process logging using rs_utils_monitor_process | |
rs_utils_marker :end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment