#This config file defined Shinken specific objects like
#satellites or Realms
#
#This file is for defined a pure load balanced environnement
#That mean that if a satellite die, it will not be replaced
#There is only one Realm with every components into it
#All you need to to is to replace "node1" and "node2" by the DNS
#names of your Shinken servers


#The scheduler is a "Host manager". It gets the hosts and theirs
#services and it schedules the checks for the pollers.
define scheduler{
       scheduler_name	scheduler-1
       address	node1
       port	7768
       spare	0	;is not a spare
       realm	All
       weight		1       ;optionnal : 1
       }


#The second scheduler
define scheduler{
       scheduler_name	scheduler-2
       address	node2
       port	7768
       spare	0
       realm	All
       weight		1       ;optionnal : 1
       }


#There is only one reactionner, because it does not need
#load balancing load
define reactionner{
       reactionner_name	reactionner
       address	node1
       port	7769
       spare	0
       realm 	All
       manage_sub_realms 0	;optionnal : 1
       min_workers	 1	;optionnal : 1
       max_workers	 15	;optionnal : 30
       polling_interval		1       ;optionnal : 1
       }

#Pollers are here to launch checks
define poller{
       poller_name     poller-All
       address  node1
       port     7771
       realm	All
       manage_sub_realms 0	;optionnal : 0
       min_workers	 4	;optionnal : 1
       max_workers	 4	;optionnal : 30
       processes_by_worker	256	   ;optionnal : 256
       polling_interval		1       ;optionnal : 1
}


#Pollers are here to launch checks
define poller{
       poller_name     poller-2
       address  node2
       port     7771
       realm	All
       manage_sub_realms 0	;optionnal : 0
       min_workers	 4	;optionnal : 1
       max_workers	 4	;optionnal : 30
       processes_by_worker	256	   ;optionnal : 256
       polling_interval		1       ;optionnal : 1
}


#The arbiter definition is optionnal
#Like reactionner and broker, it does not need load balanced
define arbiter{
       arbiter_name	Arbiter
       host_name	node1       ;result of the get_hostname.py command (or hostname under Unix)
       address	node1
       port	7770
       spare	0
       #modules		 No module for now
       }


#The broker manage data export (in flat file or in database)
#Here just log files and status.dat file
define broker{
       broker_name	broker
       address	node1
       port	7772
       spare	0
       realm 	All
       manage_sub_realms 1
       manage_arbiters	 1
       modules		 Status-Dat, Simple-log
       }


##Now the modules for broker

#Here the NDO/MySQL module
#So you can use with NagVis or Centreon
define module{
       module_name	ToNdodb_Mysql
       module_type	ndodb_mysql
       database		ndo      ; database name
       user		root     ; user of the database
       password		root     ; must be changed
       host		localhost ; host to connect
       character_set	utf8     ;optionnal, UTF8 is the default
}

#Here a NDO/Oracle module. For Icinga web connection
#Or for database admin that do not like MySQL
define module{
       module_name	ToNdodb_Oracle
       module_type	ndodb_oracle
       database		XE              ;database name (listener in fact)
       user		system
       password		password        ;Yes I know I have to change my default password...
       oracle_home      /usr/lib/oracle/xe/app/oracle/product/10.2.0/server     ;optional
}


#Here for Merlin/MySQL. for Ninja connection
define module{
       module_name      ToMerlindb_Mysql
       module_type      merlindb
       backend          mysql    ;backend to use, here mysql databse
       database         merlin   ;database name
       user             root
       password         root
       host		localhost
       character_set    utf8     ;optionnal, UTF8 is the default
}


#Here the Merlin/Sqlite. No one uses it for now :)
define module{
       module_name      ToMerlindb_Sqlite
       module_type      merlindb
       backend		sqlite 	  ;like the mysql, but sqlite :)
       database_path    /tmp/mabase.sqlite  ;path of the sqlite file
}


#Here the couchdb export. Maybe use one day...
define module{
       module_name      ToCouchdb
       module_type      couchdb
       user             root
       password         root
       host		localhost
}


#Export services perfdata to file
define module{
       module_name      Service-Perfdata
       module_type      service_perfdata
       path		service-perfdata
}


#For hosts this time
define module{
       module_name      Host-Perfdata
       module_type      host_perfdata
       path		host-perfdata
}


#The log managment
define module{
       module_name      Simple-log
       module_type      simple_log
       path		/var/log/shinken/nagios.log
}


#Status.dat and objects.cache export. For the old Nagios
#interface
define module{
       module_name      Status-Dat
       module_type      status_dat
       status_file	status.dat
       object_cache_file	objects.cache
       status_update_interval   15
}


#A global Realm
define realm{
       realm_name  All
       default		1
}




##Now addon about standard configuration :
#resultmodulation : change "on te fly" a check result, without negate or something like it
#escalation : like service_escalation, but a generic that host/service can call

#A result modulation is use to module a check result, like CRITICAL->WARNING here
define resultmodulation{
       resultmodulation_name     critical_is_warning           ;required
       exit_codes_match          2                ;optionnal, list of code to change
       output_match              //               ;optionnal, regexp for activation of exit_code if output match
       exit_code_modulation      1                ;code that will be put if the code match
       output_modulation         s///        ;optionnal regexp to change output
       longoutput_modulation     s///      ;optionnal regexp to change long_output
       modulation_period         24×7    ;period when to apply the modulation
}