L’architecture de Shinken se veut beaucoup plus modulaire. Nombreux sont les paramètres présents dans nagios.cfg de Nagios qui sont passés sous des modules. Et tout ceci pour nous simplifier la vie!! :) La configuration sera simple pour une personne qui utilise déjà Nagios : c’est la même, mais avec quelques petits ajouts pour nos différents éléments. Un exemple de configuration est déjà disponible dans le path d’installation. Le fichier définissant les éléments de l’architecture est shinken-specific.cfg. Comme ça vous pouvez garder votre générateur de configuration de style Centreon tout en utilisant Shinken avec une architecture distribuée. Magique.
Les différents éléments sont définis suivant un modèle commun :
Certains éléments possèdent des options particulières :
Les modules ont comme propriétés :
Ci dessous une liste non exhaustive des modules, ainsi que leur paramètres.
Chargé par le Broker. Export en base Ndo sous Mysql. Nécessite le module Python MySQLdb (apt-get install python-mysqldb).
Prends les paramètres :
Chargé par le Broker. Export en base Ndo sous Oracle. Nécessite un client Oracle sur le serveur et que le répertoire ORACLE_HOME/lib soit dans le ld.config.cfg (ou bien alors que le daemon broker soit lancé avec LD_LIBRARY_PATH qui pointe vers ce même répertoire). Il demande également le module Python Cx_Oracle disponible sur http://cx-oracle.sourceforge.net/. Ah oui, ceci nécessite bien sûr une base Oracle avec le schémas de base déjà inséré (cf icinga pour le fichier oracle.sql).
Il prends en compte les paramètres suivants :
Chargé par le Broker. Export en base Merlin sous Mysql ou sqlite. Nécessite le module Python MySQLdb ou Sqlite. (apt-get install python-mysqldb).
Chargé par le Broker. Export dans une base CouchDB (ouai, ultra utile :) )
Chargé par le Broker. Export des informations de perfdata des services. Prends le paramètre :
exemple : $LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$\t$SERVICESTATE$\n
Chargé par le Broker. Export des informations de perfdata des hôtes. Prends le paramètre :
exemple : $LASTHOSTCHECK$\t$HOSTNAME$\t$HOSTOUTPUT$\t$HOSTSTATE$\t$HOSTPERFDATA$\n
Chargé par le Broker. Présentation des données comme le module Livestatus de Nagios
Chargé par le Broker. Module permettant d’avoir tout les logs dans le même fichier. (Sauf si on lance le mode debug)
Chargé par le Broker. Envoie tout les logs logs vers le syslog. Ne peut pas être chargé en même temps que Simple-log
Chargé par le Broker. Module utilisée pour les vieilles interface Nagios. Utile pour le nagiostats.
A utiliser avec l’interface PNP.
: Detailler les différences
define module{
module_name PickleRetention
module_type pickle_retention_file_generic
path /tmp/retention.dat
}
define module{
module_name PickleRetentionBroker
module_type pickle_retention_file_generic
path /tmp/retention_broker.dat
}
define module{
module_name PickleRetentionArbiter
module_type pickle_retention_file_generic
path /tmp/retention_arbiter.dat
}
define module{
module_name NagiosRetention
module_type nagios_retention_file
path /tmp/retention-nagios.dat
}
define module{
module_name MemcacheRetention
module_type memcache_retention
server 127.0.0.1
port 11211
}
define module{
module_name RedisRetention
module_type redis_retention
server 127.0.0.1
Ceci donne par exemple pour une configuration simple (sans distribuée, ni hautement disponible) sur la machine qui se nomme serveur-maitre et qui a comme IP 192.168.0.1. Le Broker aura deux modules : un export vers la base Merlin, un autre pour la création d’un fichier de log unique pour toute l’architecture (équivalent de nagios.log, mais pour tous les daemons à la fois) :
define arbiter{
arbiter_name arbiter-1
host_name serveur-maitre
address 192.168.0.1
port 7770
spare 0
}
define scheduler{
scheduler_name scheduler-1
address 192.168.0.1
port 7768
spare 0
}
define reactionner{
reactionner_name reactionner-1
address 192.168.0.1
port 7769
spare 0
}
define poller{
poller_name poller-1
address 192.168.0.1
port 7771
spare 0
}
define broker{
broker_name broker-1
address 192.168.0.1
port 7772
spare 0
modules Export_Merlin,Simple-log
}
define module{
module_name Export_Merlin
module_type merlindb
backend mysql
database merlin
user root
password root
host localhost
character_set utf8 ;optionnel, UTF-8 par défaut
}
define module{
module_name Simple-log
module_type simple_log
path /usr/local/shinken/src/var/shinken.log
}
Pour être compatible Nagios, un pack (un arbiter, un scheduler, un poller, un reactionner et un broker) est défini si l’administrateur n’en utilise pas avec toutes les valeurs par défauts.
Les daemons utilisent une configuration locale qui est présente juste pour définir les paramètres d’écoute et de définition de répertorie de travail. Il est possible de démarrer un daemon sans configuration, et dans ce cas il prendra simplement ses paramètres par défaut. Un exemple de configuration de daemon pour le scheduler : etc/schedulerd.ini
$cat etc/schedulerd.ini [daemon] workdir=/usr/local/shinken/src/var pidfile=%(workdir)s/schedulerd.pid port=7768 host=0.0.0.0 user=shinken group=shinken idontcareaboutsecurity=0
Cette configuration est au format Python (RFC jenemesouviensplusdunumero). Les paramètres sont simples:
Pour le lancement, ouvrez un shell sur la machine avec le user shinken. Dans un soucis de simplicité pour commencer, ici nous allons lancer tous les daemons sur la même machine nommée serveur-maitre.
cd shinken python bin/shinken-scheduler.py -d -c etc/schedulerd.ini python bin/shinken-poller.py -d -c etc/pollerd.ini python bin/shinken-reactionner.py -d -c etc/reactionnerd.ini python bin/shinken-broker.py -d -c etc/brokerd.ini #on vérifie tout d'abord la conf python bin/shinken-arbiter.py -v -c etc/nagios.cfg -c etc/shinken-specific.cfg #si c'est bon, on lance réellement : python bin/shinken-arbiter.py -d -c etc/nagios.cfg -c etc/shinken-specific.cfg
#Autre solution plus rapide qui lance tout les démons et vérifie la configuration /etc/init.d/shinken start #ou /etc/init.d/shinken restart
Vous pouvez alors vous ruer sur votre Ninja pour voir les informations qui vous intéresse.