forked from aws/opsworks-cookbooks
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfigure-client.rb
48 lines (40 loc) · 1.8 KB
/
configure-client.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
if node[:opsworks][:layers].has_key?('monitoring-master')
include_recipe 'opsworks_ganglia::client'
monitoring_master = node[:opsworks][:layers]['monitoring-master'][:instances].collect{ |instance, names|
names['private_ip']
}.first rescue nil
service "gmond" do
service_name value_for_platform_family("rhel" => "gmond", "debian" => "ganglia-monitor")
action :nothing
init_command "/usr/sbin/service ganglia-monitor" if platform?("ubuntu") && node[:platform_version] == "14.04"
not_if { monitoring_master.nil? }
end
template '/etc/ganglia/gmond.conf' do
source 'gmond.conf.erb'
variables({
:stack_name => node[:opsworks][:stack][:name],
:monitoring_master => monitoring_master
})
notifies :restart, "service[gmond]"
only_if do
::File.exists?('/etc/ganglia/gmond.conf')
end
end
service "start/stop gmond depending if monitoring_master available" do
service_name value_for_platform_family("rhel" => "gmond", "debian" => "ganglia-monitor")
action(monitoring_master.nil? ? :stop : :start)
init_command "/usr/sbin/service ganglia-monitor" if platform?("ubuntu") && node[:platform_version] == "14.04"
end
if node[:opsworks][:instance][:layers].any?{ |layer|
['php-app', 'monitoring-master'].include?(layer)
} || (node[:opsworks][:instance][:layers].include?('rails-app') && node[:opsworks][:rails_stack][:name] == 'apache_passenger')
Dir.glob("#{node[:apache][:log_dir]}/*-ganglia.log").each do |ganglia_log|
cron "Ganglia Apache Monitoring #{ganglia_log}" do
minute '*/2'
command "/usr/sbin/ganglia-logtailer --classname ApacheLogtailer --log_file #{ganglia_log} --mode cron > /dev/null 2>&1"
end
end
end
else
Chef::Log.info 'No monitoring-master node found. Skipping Ganglia client configuration.'
end