You are here

Shinken : version 0.4, les realm

Après installation dans "/usr/local" la version 0.4 semble très stable. Au passage j'ai installé la version 0.72 de Thruk qui s'avère très agréable à l'usage.
Comme déjà dit dans un article précédent l'esthétique de cet interface est très proche de celle de l'interface de Nagios, mais il s'avère que c'est plein de petits "plus" qui facilitent la vie. La communication avec Shinken est impeccable, vous pouvez en quelques clics demander le raffraîchissement d'un service, d'un hôte, de tous les hôtes ...
Revenons-en à ma création de "royaume". Un royaume doit comporter 4 des 5 modules principaux : poller,broker,actionner et scheduler. La seule chose qui lui manque est un arbiter capable de gérer la description des hosts/services à surveiller.
Le paramétrage s'effectue donc principalement au niveau de l'arbiter sur la machine "centrale". Il faut indiquer à l'arbiter la création d'un "realm" et décrire les quatre modules liés à ce royaume. Il en sera de même dans les fichiers décrivant les hosts et les services.
Les fichiers de paramétrage sont présentés ci-dessous :

define realm {
        realm_name      testweb
        default         0
}

D'abord le "realm" c'est la partie la plus simple, donner un nom
et dire que ce n'est pas le royaume par défaut.
 define scheduler{
       scheduler_name       scheduler-web
       address              192.168.1.120
       port                 7768
       spare                0

       weight               1
       realm                testweb
       }


A tout seigneur, tout honneur, on commence par le maître des lieux, c'est lui qui controlera ce royaume pour y distribuer le boulot ... il doit être défini par un nom, une IP, un port, un poids (ici 1) le fait qu'il n'est pas un "spare" et l'appartenance au royaume "testweb".
 define reactionner{
       reactionner_name     reactionner-web
       address              192.168.1.120
       port                 7769
       spare                0
       manage_sub_realms    0
       min_workers          1
       max_workers          5
       polling_interval     3
       realm                testweb
       }


Le même genre de définition nécessaire à la communication, nom; IP, port, royaume plus quelques paramètres propres :
  • max et min workers (pensez au MaxServer et MinServer de Apache)
  • Polling interval
 define broker{
       broker_name          broker-web
       address              192.168.1.120
       port                 7772
       spare                0
       modules           Status-Dat, Simple-log, Livestatus
# , ToMerlindb_Mysql
       manage_sub_realms    1
       manage_arbiters      0 
       realm                testweb
       }

Toujours le même style de paramérage avec les paramètres spécifiques des "modules" à activer, ici je n'ai pas activé la liaison "Mysql" car la liaison est à faire avec un nouveau schéma de la base de données.
Je vais essayer de voir avec les versions les plus récentes de Ninja. Pour le moment la liaison Mysql est inactivée. C'est pourtant la seule manière de centraliser les données issues du royaume.
 define poller{
       poller_name              poller-web
       address                  192.168.1.120
       port                     7771
       manage_sub_realms        0
       min_workers              2
       max_workers              2
       processes_by_worker      127
       polling_interval         5
       realm                    testweb
}


Encore le même paramétrage avec les spécifiques :
  • min et max workers
  • processes_by_worker
  • polling interval


Du coté du serveur hébergeant notre "royaume" le paramétrage est beaucoup plus simple et peut être réalisé une fois pour toutes car cela se limite à un "bloc" de définitions pour chaque module. Les quatre fichiers ont d'ailleurs strictement la même syntaxe, je les ait nommes my_broker.ini, my_pollerd.ini, my_reactionnerd.ini et my_reactionnerd.ini. Le contenu est standard et corresponds à ceci :
[daemon]
#relative from this cfg file
workdir=/var/lib/shinken
pidfile=%(workdir)s/brokerd.pid
interval_poll=5
maxfd=1024
port=7772
host=0.0.0.0
user=shinken
group=shinken
idontcareaboutsecurity=no

Il faut biensûr faire varier le fichier de "pid" et le port pour chacun des modules. Les ports sont un peu "standardisés" et il est plus simple d'utiliser toujours les mêmes :

  • 7768 : scheduler
  • 7769 : reactionner

  • 7771 : poller
  • 7772 : broker

Cela permet d'éviter de faire des "noeuds" difficiles à démonter.
Pour la description des "hôtes" il suffit d'y ajouter une ligen "realm testweb" et le tour est joué :
define host{
        use                     generic-host
        host_name               xxxxxx 
        alias                   testweb_frontal
        address                 xxxxxx
        check_command           check_ping!4.0,80%!10.0,80%!      
        realm                   testweb
        max_check_attempts      3
        notification_interval   1800
        notification_period     24x7
        notification_options    d,u,r
        register                1
        }

Pour les services le standard est suffisant, ils suivent le sort de leur hôte :
define service {
        use                     generic-HTTP
        host_name               xxxxxxxx
        name                    HTTP-XXX
        contact_groups          virtuel
        notification_interval   480
        check_command           check_http_auth!/index.php!user:password!
        normal_check_interval   200
        check_interval          10
}


Et le résultat me direz-vous ... et bien cela marche, et même fort bien dès que vous avez commencé à décrire quelques hôtes et services dans votre nouveau royaume.
Lorsque tout fonctionne vous voulez pouvoir suivre vos hosts/services en direct d'une seule et même console ... et cela marche, au moins avec THRUK, pour NINJA la version dont je dispose (fournie avec SHINKEN 0.3) ne fonctionne pas avec SHINKEN 0.4 car il faut une version plus récente et l'installation de Ninja suppose d'installer d'autres packages ... bref dans un premier temps je reste avec THRUK. Voir l'article suivant pour des précisions sur le paramétrage hosts + services et celui de Thruk.



performance: