124 lines
3.3 KiB
Ruby
124 lines
3.3 KiB
Ruby
#
|
|
# Cookbook Name:: zabbix
|
|
# Recipe:: agent
|
|
#
|
|
# Copyright 2017, Linux-Help.org
|
|
# Authors:
|
|
# Eric Renfro <psi-jack@linux-help.org>
|
|
#
|
|
|
|
include_recipe 'zabbix::trap_scripts'
|
|
|
|
#################################
|
|
# Include Additional Repositories
|
|
case node['platform_family']
|
|
when 'rhel'
|
|
include_recipe 'yum-zabbix'
|
|
end
|
|
|
|
# Install zabbix package and dependencies
|
|
%w{zabbix-agent zabbix-sender cronie crontabs}.each do |pkg|
|
|
yum_package pkg
|
|
end
|
|
|
|
# Install custom zabbix_agentd.conf
|
|
template "/etc/zabbix/zabbix_agentd.conf" do
|
|
params = node['zabbix']['agentd']['config'].merge({
|
|
"Server" => node['zabbix']['agent_servers'],
|
|
"ServerActive" => node['zabbix']['agent_servers'],
|
|
"Hostname" => node['zabbix']['hostname'] ? node['zabbix']['hostname'] : node['fqdn'],
|
|
"HostMetadata" => [ "Linux" ] + node['zabbix']['agent_meta']
|
|
})
|
|
params = Hash[ params.sort_by { |key, val| key } ]
|
|
variables({
|
|
:params => params
|
|
})
|
|
source %W{
|
|
zabbix/#{node['zabbix']['version']}/#{node['platform']}-#{node['platform_version'].to_i}/zabbix_agentd.conf.erb
|
|
zabbix/#{node['zabbix']['version']}/#{node['platform']}/zabbix_agentd.conf.erb
|
|
zabbix/#{node['zabbix']['version']}/#{node['platform_family']}-#{node['platform_version'].to_i}/zabbix_agentd.conf.erb
|
|
zabbix/#{node['zabbix']['version']}/#{node['platform_family']}/zabbix_agentd.conf.erb
|
|
zabbix/#{node['zabbix']['version']}/zabbix_agentd.conf.erb
|
|
zabbix/zabbix_agentd.conf.erb
|
|
default/zabbix_agentd.conf.erb
|
|
zabbix_agentd.conf.erb
|
|
}
|
|
mode "0644"
|
|
owner "root"
|
|
group "root"
|
|
notifies :restart, "service[zabbix-agent]", :delayed
|
|
end
|
|
|
|
# Define the zabbix service, set to start on boot
|
|
service "zabbix-agent" do
|
|
supports :restart => true, :status => true, :reload => false
|
|
action [:enable, :start]
|
|
end
|
|
|
|
# Install custom trap scripts.
|
|
%w[ /etc/zabbix/trap.d /etc/zabbix/trap.d/live /etc/zabbix/trap.d/daily ].each do |path|
|
|
directory path do
|
|
owner 'root'
|
|
group 'root'
|
|
mode '0755'
|
|
end
|
|
end
|
|
|
|
remote_directory "/etc/zabbix/trap.d" do
|
|
files_backup 0
|
|
files_owner 'root'
|
|
files_group 'zabbix'
|
|
files_mode '0750'
|
|
owner 'root'
|
|
group 'root'
|
|
source 'traps'
|
|
action :create
|
|
end
|
|
|
|
# Link live agents to node
|
|
node['zabbix']['trap_scripts']['live']['add'].each do |script|
|
|
link "/etc/zabbix/trap.d/live/#{script}" do
|
|
to "/etc/zabbix/trap.d/#{script}"
|
|
end
|
|
end
|
|
|
|
# Link daily agents to node
|
|
node['zabbix']['trap_scripts']['daily']['add'].each do |script|
|
|
link "/etc/zabbix/trap.d/daily/#{script}" do
|
|
to "/etc/zabbix/trap.d/#{script}"
|
|
end
|
|
end
|
|
|
|
# Delete live agents to node
|
|
node['zabbix']['trap_scripts']['live']['del'].each do |script|
|
|
link "/etc/zabbix/trap.d/live/#{script}" do
|
|
to "/etc/zabbix/trap.d/#{script}"
|
|
action :delete
|
|
end
|
|
end
|
|
|
|
# Delete daily agents to node
|
|
node['zabbix']['trap_scripts']['daily']['del'].each do |script|
|
|
link "/etc/zabbix/trap.d/daily/#{script}" do
|
|
to "/etc/zabbix/trap.d/#{script}"
|
|
action :delete
|
|
end
|
|
end
|
|
|
|
|
|
# Setup trapper crons according to agents setup as appropriate:
|
|
cron "zabbix_live" do
|
|
minute '*'
|
|
hour '*'
|
|
user "root"
|
|
command %Q{/etc/zabbix/trap.d/runtrap live >/dev/null 2>&1}
|
|
only_if { node['zabbix']['trap_scripts']['live']['add'].any? }
|
|
end
|
|
|
|
cron "zabbix_daily" do
|
|
minute '*'
|
|
hour '0'
|
|
user "root"
|
|
command %Q{/etc/zabbix/trap.d/runtrap daily >/dev/null 2>&1}
|
|
only_if { node['zabbix']['trap_scripts']['daily']['add'].any? }
|
|
end
|