+#
+# Copyright 2013-2014, whitestar
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+$LOAD_PATH.push("#{File.dirname(__FILE__)}/_lib")
+#${chef-repo}/roles/_lib/grid.rb
+require 'grid'
+
name 'pleiades-nm'
description 'Pleiades nagios node'
run_list(
'role[node_commons]',
- 'role[grid-realm]',
- 'role[ganglia-gmond]'
+ 'role[nameservice-client-grid]',
+ 'role[ganglia-gmond]',
+ 'role[nagios]'
)
#env_run_lists "prod" => ["recipe[apache2]"], "staging" => ["recipe[apache2::staging]"], "_default" => []
-mcast_addr = '239.2.11.2'
+this_cluster = Grid::CLUSTERS[:pleiades]
+this_subcluster = Grid::CLUSTERS[:pleiades][:nagioses]
+mcast_addr = this_subcluster[:mcast_addr]
port = '8649'
+=begin
+# uni-cast
+udp_send_channels4ucast = []
+this_subcluster[:nodes].first(2).each {|host|
+ udp_send_channels4ucast.push(
+ {
+ 'mcast_join' => '',
+ 'host' => "#{host}.#{Grid::DOMAIN}",
+ 'port' => port,
+ 'ttl' => ''
+ }
+ )
+}
+=end
+
+host_templates = []
+hosts = []
+hostgroups = []
+hostgroup_names = []
+
+Grid::CLUSTERS[:pleiades].each {|key, cluster|
+ host_templates.push(
+ {
+ 'name' => cluster[:use_host_object],
+ 'use' => 'generic-grid-host',
+ 'register' => '0'
+ }
+ )
+
+ cluster[:nodes].each {|host|
+ hosts.push(
+ {
+ 'host_name' => host,
+ 'use' => cluster[:use_host_object],
+ 'address' => "#{host}.#{Grid::DOMAIN}",
+ }
+ )
+ }
+
+ hostgroups.push(
+ {
+ 'hostgroup_name' => cluster[:name],
+ 'alias' => cluster[:alias],
+ 'members' => cluster[:nodes].join(','),
+ }
+ )
+ hostgroup_names.push(cluster[:name])
+}
+
+nagios_objects = {
+ 'contacts' => [
+ {
+ 'name' => 'generic-grid-contact',
+ 'service_notification_period' => '24x7',
+ 'host_notification_period' => '24x7',
+ 'service_notification_options' => 'w,u,c,r',
+ 'host_notification_options' => 'd,u,r',
+ 'service_notification_commands' => 'notify-service-by-email',
+ 'host_notification_commands' => 'notify-host-by-email',
+ 'register' => '0'
+ },
+ {
+ 'contact_name' => 'alice',
+ 'use' => 'generic-grid-contact',
+ 'alias' => 'Alice',
+ 'email' => 'alice@localhost'
+ },
+ {
+ 'contact_name' => 'bob',
+ 'use' => 'generic-grid-contact',
+ 'alias' => 'Bob',
+ 'email' => 'bob@localhost'
+ }
+ ],
+ 'contactgroups' => [
+ {
+ 'contactgroup_name' => 'grid-admins',
+ 'alias' => 'Grid Administrators',
+ 'members' => 'root'
+ #'members' => 'alice,bob'
+ }
+ ],
+ 'hosts' => [
+ {
+ 'name' => 'generic-grid-host',
+ 'use' => 'generic-host',
+ 'alias' => 'Grid Node',
+ 'check_command' => 'check-host-alive',
+ 'max_check_attempts' => '20',
+ 'notification_interval' => '60',
+ 'notification_period' => '24x7',
+ 'notification_options' => 'd,u,r',
+ 'register' => '0',
+ },
+ ] + host_templates + hosts,
+ 'hostgroups' => \
+ hostgroups + [
+ # all nodes
+ {
+ 'hostgroup_name' => 'grid-servers',
+ 'alias' => 'GridServers',
+ 'hostgroup_members' => hostgroup_names.join(',')
+ }
+ ],
+ 'services' => [
+ # ganglia gmetad monitoring
+ {
+ 'use' => 'generic-check_ganglia_cache-service',
+ 'host_name' => 'localhost',
+ 'contact_groups' => 'grid-admins',
+ },
+ {
+ 'use' => 'generic-ganglia_heartbeat-service',
+ 'hostgroup_name' => "#{this_cluster[:gmetads][:name]}",
+ 'contact_groups' => 'grid-admins',
+ },
+ # standard monitoring.
+ {
+ 'use' => 'generic-ping-service',
+ 'hostgroup_name' => 'grid-servers',
+ 'contact_groups' => 'grid-admins',
+ },
+ {
+ 'use' => 'generic-ssh-service',
+ 'hostgroup_name' => 'grid-servers',
+ 'contact_groups' => 'grid-admins',
+ },
+ {
+ 'use' => 'generic-ntp-service',
+ 'hostgroup_name' => 'grid-servers',
+ 'contact_groups' => 'grid-admins',
+ },
+ {
+ 'use' => 'generic-load_one-service',
+ 'hostgroup_name' => 'grid-servers',
+ 'contact_groups' => 'grid-admins',
+ },
+ {
+ 'use' => 'generic-load_five-service',
+ 'hostgroup_name' => 'grid-servers',
+ 'contact_groups' => 'grid-admins',
+ },
+ {
+ 'use' => 'generic-load_fifteen-service',
+ 'hostgroup_name' => 'grid-servers',
+ 'contact_groups' => 'grid-admins',
+ },
+ {
+ 'use' => 'generic-part_max_used-service',
+ 'hostgroup_name' => 'grid-servers',
+ 'contact_groups' => 'grid-admins',
+ },
+ {
+ 'use' => 'generic-proc_total-service',
+ 'hostgroup_name' => 'grid-servers',
+ 'contact_groups' => 'grid-admins',
+ },
+ {
+ 'use' => 'generic-http-service',
+ 'hostgroup_name' \
+ => "#{this_cluster[:gmetads][:name]},#{this_cluster[:nagioses][:name]}",
+ 'contact_groups' => 'grid-admins',
+ },
+=begin
+ {
+ 'use' => 'generic-https-port-cert-service',
+ 'service_description' => 'HTTPS_443_cert',
+ 'hostgroup_name' => 'grid-proxy-servers',
+ 'contact_groups' => 'grid-admins',
+ },
+ {
+ 'use' => 'generic-https-service',
+ 'hostgroup_name' => 'grid-proxy-servers',
+ 'contact_groups' => 'grid-admins',
+ },
+ {
+ 'use' => 'generic-mysql-service',
+ 'hostgroup_name' => 'grid-oozie-servers',
+ 'contact_groups' => 'grid-admins',
+ },
+ {
+ 'use' => 'generic-mysql-slave-service',
+ 'hostgroup_name' => 'grid-oozie-servers',
+ 'contact_groups' => 'grid-admins',
+ },
+ {
+ 'use' => 'generic-remote-mysql-heartbeat-service',
+ 'hostgroup_name' => 'grid-oozie-servers',
+ 'contact_groups' => 'grid-admins',
+ },
+ {
+ 'use' => 'generic-ldap-service',
+ 'hostgroup_name' => 'grid-nameservice-servers',
+ 'check_command' => 'check_ldap3!dc=grid,dc=example,dc=com',
+ 'contact_groups' => 'grid-admins',
+ },
+=end
+ ],
+ 'servicedependencies' => [
+ {
+ 'host_name' => 'localhost',
+ 'service_description' => 'Cache for check_ganglia_metric',
+ #'dependent_host_name' => '.*', # NG!
+ 'dependent_hostgroup_name' => 'grid-servers',
+ 'dependent_service_description' => '.* via Ganglia$',
+ 'execution_failure_criteria' => 'c,p'
+ }
+ ]
+}
default_attributes(
+ 'nagios' => {
+ 'objects' => nagios_objects,
+ 'web' => {
+ 'Allow' => [
+ "from .#{Grid::DOMAIN}",
+ 'from 192.168.0.0/16'],
+ 'AuthType' => 'Kerberos',
+ 'mod_auth_kerb' => {
+ 'KrbAuthRealms' => Grid::REALM,
+ 'Krb5Keytab' => '/etc/krb5.keytab'
+ }
+ },
+ 'check_external_commands' => '1',
+ 'use_regexp_matching' => '1',
+ 'authorized_for_system_information' => '*',
+ 'authorized_for_configuration_information' => '*',
+ 'authorized_for_system_commands' => '*',
+ 'authorized_for_all_services' => '*',
+ 'authorized_for_all_hosts' => '*',
+ 'authorized_for_all_service_commands' => '*',
+ 'authorized_for_all_host_commands' => '*',
+ 'check_ganglia_metric' => {
+ 'enabled' => true,
+ 'gmetad_host' => "#{this_cluster[:gmetads][:service_hostname]}.#{Grid::DOMAIN}"
+ },
+ }
)
override_attributes(
'ganglia' => {
# gmond
'cluster' => {
- 'name' => 'Nagios',
- 'owner' => 'grid.example.com'
+ 'name' => this_subcluster[:alias],
+ 'owner' => Grid::DOMAIN
},
'static' => {
## static multi-cast
]
=begin
## static uni-cast
- 'udp_send_channels' => [
- {
- 'mcast_join' => '',
- 'host' => "nm00.#{this.domain}",
- 'port' => port,
- 'ttl' => ''
- },
- {
- 'mcast_join' => '',
- 'host' => "nm01.#{this.domain}",
- 'port' => port,
- 'ttl' => ''
- }
- ],
+ 'udp_send_channels' => udp_send_channels4ucast,
'udp_recv_channels' => [
{
'mcast_join' => '',