SERVICE_TEMPLATE_NAME='generic-service' # host templates that all our host definitions use
HOST_ALIVE_CHECK='check-host-alive' # host alive check if server is pingable
NRPE_PROCESS_SERVICE='process - nrpe' # nrpe checks will depend on this one
+NRPE_LOAD_CHECK='load'
def warn (msg)
# host/service/etc definitions
#
# It skips over such keys as are listed in exclude_keys
-# and also skips private keys (those starting with an underscre)
+# and also skips private keys (those starting with an underscore)
def print_block(fd, kind, hash, exclude_keys)
fd.puts "define #{kind} {"
hash.each_pair{ |key, value|
- next if key[0,1] == '_'
+ next if key == '_extinfo'
+ next if key == '_hostgroups'
+ next if key == '_memberlist'
next if exclude_keys.include? key
fd.puts " #{key} #{value}"
}
service['check_command'] = "#{ NRPE_CHECKNAME }!#{ check }"
service['depends'] = ensure_array( service['depends'] )
- service['depends'] << NRPE_PROCESS_SERVICE unless service['service_description'] == NRPE_PROCESS_SERVICE # Depend on NRPE unless we are it
+ unless service['service_description'] == NRPE_PROCESS_SERVICE
+ # Depend on the load check to reduce noise
+ service['depends'] << NRPE_LOAD_CHECK unless service['service_description'] == NRPE_LOAD_CHECK
+ # Depend on NRPE unless we are it
+ service['depends'] << NRPE_PROCESS_SERVICE
+ end
end
hosts.each{ |host|
hosts = merge_hosts_and_hostgroups service, servers, hostgroups, ''
excludehosts = merge_hosts_and_hostgroups service, servers, hostgroups, 'exclude'
- excludehosts.each{ |host|
+ excludehosts.uniq.each{ |host|
if hosts.delete(host) == nil
- throw "Cannot remove host #{host} from service #{service['service_description']}: it's not included anyway or excluded twice."
+ puts "info: [service #{service['service_description']}] not excluding host #{host} - it's not included anyway."
end
}
##############
config['hostgroups'].each_pair{ |name, hg|
next if hg['private']
+ throw "Empty hostgroup #{name}" if hg['_memberlist'].length == 0
set_complain_if_set hg, 'hostgroup_name', name , 'Hostgroup', name
set_complain_if_set hg, 'members' , hg['_memberlist'].join(","), 'Hostgroup', name