Installation de Shinken 2.0 sur Debian Wheezy
Jusque ici, j’avais toujours utilisé le célèbre couple Nagios / Centreon pour ma supervision. Seulement aujourd’hui les deux projets ne s’entendent plus trop. Les dév de Nagios ne se donnent plus la peine de rendre leur outil compatible avec la surcouche historique Centreon depuis la version 4. Et à l’inverse, l’équipe de Centreon ne cherche plus à ce greffer à Nagios depuis la version stable de leur moteur nommé Centreon Engine. J’ai bien essayé de donner sa chance à ce dernier. Mais après quelques heures dépensées sur des forums Tibétain à la recherche d’une correction pour une erreur SQL, j’ai décidé de repartir de zéro et de me trouver un nouvel outil de supervision.
Installation de Shinken
Shinken à besoin d’un utilisateur pour fonctionner.
1
|
useradd –m shinken
|
On passe à l’installation des dépendances python nécessaire à l’installation
1
|
apt–get install python–pycurl python–setuptools python–pip
|
L’installation de Shinken s’effectue via pip
1
|
pip install shinken
|
Cette installation nous donne l’arborescence suivante
- /etc/shinken : toute la configuration du programme
- /usr/bin/shinken-* : les scripts de lancement des daemons
- /var/lib/shinken : les modules shinken et les plugins de supervision (on y reviendra)
- /var/log/shinken : secret défense
On lance l’outils avec son script init
1
|
/etc/init.d/shinken start
|
Par défaut, Shinken ne se supervise que lui même. Plus encore cette supervision est très légère. Si vous jetez un oeil du coté de la configuration du host sous /etc/shinken/hosts/localhost.cfg, vous pouvez voir que ce dernier utilise un “template” nommé “generic-host” qui se contente de vérifier que l’hôte est up.
Nous on va y ajouter quelques vérification de base en plus sur notre hôte. Pour cela on va se servir d’un pack spécialisé. Les packs sont des boites à scripts pour superviser tel ou tel périphérique et sont disponible sur cette page.
On passe sous l’utilisateur Shinken pour effectuer l’installation du pack
1
|
su – shinken
|
La CLI de Shinken à besoin d’être initialisée afin de générer le fichier ini contenant les chemins vers les différents répertoires de configuration de l’outil.
1
|
shinken —init
|
A présent on peut chercher notre pack Linux
1
|
shinken search linux
|
Ce qui donne le résultat suivant
1
2
3
4
5
|
glances (david–guenault) [pack,system,linux,glances] : Standard check through checkglances.py and glances server
linux–snmp (naparuba) [pack,linux,snmp] : Linux checks based on SNMP
linux–ssh (naparuba) [pack,linux,ssh] : Linux checks based on SSH without any script on distant server
pack–glances (david–guenault) [pack,system,linux,glances] : Standard check through checkglances.py and glances server
raspberrypi (frescha) [pack,linux,raspberrypi,server,os] : Standard checks
|
On va choisir le pack linux-ssh qui est un mode agent. Le script ouvre une connexion ssh pour exécuter une commande sur le serveur distant et récupérer l’information. Il faut savoir que ce mode n’est pas le plus recommandé car il consomme plus de ressource qu’une requête SNMP classique.
1
|
shinken install linux–ssh
|
Le pack s’installe avec tous ses plugins dans le dossier /var/lib/shinken/libexec/.
Ces plugins ont besoin d’une librairie nommée python-paramiko. On repasse en root pour effectuer cette installation.
1
2
3
|
exit # pour repasser root
apt–get install python–paramiko
su – shinken # retour sur l’user shinken
|
Ces plugins lance une connexion ssh sur le serveur distant, en l’occurrence le serveur local dans notre cas. On va donc générer une paire de clé ssh et donner la clé publique à l’utilisateur shinken.
1
|
ssh–keygen
|
Ne pas saisir de passphrase sinon le script attendrait une intervention humaine pour saisir cette dernière à chaque exécution.
Déploiement de la clé publique
1
|
ssh–copy–id –i ~/.ssh/id_rsa shinken@localhost
|
On va tester un plugin pour voir que tout fonctionne parfaitement
1
|
/var/lib/shinken/libexec/check_load_average_by_ssh.py –H localhost
|
Ce qui doit donner
1
|
Ok: load average is good 0.59,0.27,0.15 | load1=0.59;1.00;2.00;; load5=0.27;1.00;2.00;; load15=0.15;1.00;2.00;;
|
On va donc ajouter le tag linux-ssh à la définition de notre hôte. Pour cela on édite /etc/shinken/hosts/localhost.cfg
1
2
3
4
5
6
|
define host{
use linux–ssh,generic–host
contact_groups admins
host_name localhost
address localhost
}
|
Pour plus de détail sur la configuration d’un hôte je vous renvois vers la documentation officiel.
On relance shinken pour prendre en compte
1
|
/etc/init.d/shinken restart
|
Les alertes sont consultable dans le fichier de log
1
|
tail –f /var/log/shinken/schedulerd.log
|
Bon, une console c’est pas top pour afficher les statuts de nos machines. On va installer l’interface web de Shinken pour rendre cela plus agréable.
Installation de l’interface web
L’interface web est un module du daemon broker qui va lire, interpréter et afficher les résultats obtenus dans les fichiers de logs.
L’installation s’effectue depuis le prompt de l’utilisateur shinken
1
|
shinken install webui
|
La configuration se trouve dans le fichier /etc/shinken/modules/webui.cfg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
define module {
module_name webui
module_type webui
host 0.0.0.0
port 7767
auth_secret CHANGE_ME
allow_html_output 1
max_output_length 1024
manage_acl 1
play_sound 0
login_text Welcome on Shinken WebUI
modules
}
|
Il faut ajouter ce module au broker principal dans le fichier /etc/shinken/brokers/broker-master.cfg
1
|
modules webui
|
On relance shinken
1
|
/etc/init.d/shinken restart
|
Et on se connecte à la page web via son navigateur à l’adresse de la machine sur le port défini dans le fichier de configuration du module webui.
On se log à l’aide des identifiants admin que l’on retrouve dans le fichier de configuration /etc/shinken/contacts/admin.cfg
1
2
3
4
5
6
7
8
|
define contact{
use generic–contact
contact_name admin
email shinken@localhost
pager 0600000000 ; contact phone number
password admin
is_admin 1
}
|
Et la ….. fail !
C’est normal je vous rassure. L’authentification est gérée par un module. Il faut l’ajouter. Regardons du coté des modules d’autentifications disponible
1
|
shinken search webui auth
|
Se qui donne :
1
2
3
|
auth–cfg–password (naparuba) [module,auth,authentification,mod–auth–cfg–password,auth–cfg–password,cfg–password,webui] : Shinken module for UI authentification from simple password for configuration file
auth–htpasswd (naparuba) [module,webui,auth,authentification] : Shinken module for UI authentification from Apache passwd files
auth–pam (mingbo_wan) [module,auth,authentification,auth–cfg–pam,cfg–pam,webui] : Shinken module for UI authentification via pam
|
- cfg-password : authentification simple basée sur le mot de passe enregistré dans la conf du contact
- htpassword : basé sur un fichier htaccess apache
- active-directory : authentification basé sur AD ou LDAP
On installe le premier
1
|
shinken install auth–cfg–password
|
Il n’y a rien à déclarer dans le fichier de conf du module (/etc/shinken/modules/auth_cfg_password.cfg) mais il faut quand même déclarer ce dernier comme pour les autres dans le module de webui sous /etc/shinken/modules/webui.cfg
1
|
modules auth–cfg–password
|
Et le restart qui va avec
1
|
/etc/init.d/shinken restart
|
Cette fois le login passe. Dans la vue “all” vous devriez voir votre hote ainsi que tous les services du pack linux-ssh.
Il est normal d’obtenir une erreur de type
1
|
Error : cannot fetch cpu stats values from host
|
Le plugin de récupération des informations CPU se base sur le programme sysstat. Il faut l’installer sur le système.
1
|
apt–get install sysstat
|
Si l’on se rend dans la vue “/dashboard” on a un énorme message d’erreur
La aussi c’est normal. Le dashboard est spécifique à chaque utilisateur. Le module WebUI à besoin de sauver les préférence de chaque utilisateur dans un fichier à plat ou une base de données. Ici on va utiliser sqlite.
Installation via l’utilisateur shinken
1
|
shinken install sqlitedb
|
Et on ajoute le module au module Webui sous /etc/shinken/modules/webui.cfg
1
|
modules auth–cfg–password,sqlitedb
|
Le fameux restart
1
|
/etc/init.d/shinken restart
|
Vous pouvez à présent ajouter des widgets sur la page /dashboard
Voila c’est terminé pour l’installation. Dans le prochain article je parlerais d’ajout d’hôtes et de services. En attendant il y a toujours la documentation officiel.