#This config file defines Shinken specific objects like #satellites or Realms # #This file is for defining a pure high availability environnement #That means that if a satellite die, it will 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-master address node1 port 7768 spare 0 ;is not a spare realm All weight 1 ;optionnal : 1 } #The second scheduler, the slave one define scheduler{ scheduler_name scheduler-slave address node2 port 7768 spare 1 ;is a spare realm All weight 1 ;optionnal : 1 } #Reactionner launches notifications define reactionner{ reactionner_name reactionner-master 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 } #Reactionner launches notifications #The slave one define reactionner{ reactionner_name reactionner-slave address node2 port 7769 spare 1 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-master address node1 port 7771 realm All spare 0 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-slave address node2 port 7771 realm All spare 1 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 important : without 2 defined arbiter, #there is no high availability define arbiter{ arbiter_name Arbiter-master 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 slave, waiting patiently for its master to die define arbiter{ arbiter_name Arbiter-slave host_name node2 ;result of the get_hostname.py command (or hostname under Unix) address node2 port 7770 spare 1 #modules No module for now } #The broker manages data export (in flat file or in database) #Here just log files and status.dat file define broker{ broker_name broker-master address node1 port 7772 spare 0 realm All manage_sub_realms 1 manage_arbiters 1 modules Status-Dat, Simple-log } #The broker manages data export (in flat file or in database) #Here just log files and status.dat file define broker{ broker_name broker-slave address node2 port 7772 spare 1 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 } #Escalation is a generic version of service_escalation and host_escalation #It can be called by services/hosts so it will be far more easier to be #configured define escalation{ escalation_name ToLevel2 ;required first_notification 2 last_notification 5 notification_interval 1 escalation_period 24x7 ;optionnal, if none, always true escalation_options d,u,r,w,c ,optionnal, if none, all states (d,u,r,w,c) contacts dbrosseau # contact_groups admins }