146 lines
6.2 KiB
Markdown
Executable file
146 lines
6.2 KiB
Markdown
Executable file
<!-- title: Installation de Shinken -->
|
|
<!-- category: GNU/Linux -->
|
|
<!-- tag: planet -->
|
|
|
|
Dans la série "ma vie de sysadmin en semi-pro", je me suis frotté à la mise
|
|
en place d'une supervision de type Nagios.<!-- more --> Mon besoin est la surveillance de
|
|
quelques serveurs et services critiques et la remontée d'alertes en cas de
|
|
souci. Nagios est la référence dans le domaine avec des centaines de greffons
|
|
pour surveiller la plupart des applications existantes et la possiblité de
|
|
créer ses propres greffons pour ses applications spécifiques. Par goût de la
|
|
démarcation (mais pas seulement), j'ai opté pour
|
|
[Shinken](https://fr.wikipedia.org/wiki/Shinken_%28logiciel%29), un
|
|
*fork* de Nagios qui a plusieurs avantages à mes yeux :
|
|
|
|
- c'était une branche expérimentale de Nagios qui aurait dû succéder au Nagios actuel dont les critiques disent que le noyau n'évolue pas assez vite par rapport aux demandes des utilisateurs,
|
|
- son architecture est saluée pour sa capacité de montée en charge (distribuée, balance de charge),
|
|
- c'est écrit en Python et la compatibilité est totale avec les greffons Nagios.
|
|
|
|
La supervision en général et Nagios en particulier est un vaste sujet et des
|
|
IT administrant des milliers de serveurs et de services ont beaucoup plus de
|
|
légitimité que moi pour en parler. Je vais me borner à décrire les étapes
|
|
d'une installation sans problème sur un serveur Debian Wheezy.
|
|
|
|
### Installation de Shinken
|
|
|
|
Ce qui suit s'inspire directement du [10 minutes Shinken installation guide](https://shinken.readthedocs.org/en/latest/02_gettingstarted/installations/shinken-installation.html) avec quelques adaptations pour Debian Wheezy.
|
|
|
|
Installation des paquets Debian nécessaires :
|
|
|
|
$ apt-get install python-cherrypy3 python-pip \
|
|
python-pycurl nagios-plugins
|
|
|
|
Création d'un utilisateur **shinken** dédié :
|
|
|
|
$ adduser shinken
|
|
|
|
Et finalement installation de shinken lui-même avec le programme PIP (je suppose que Python et PIP 2.x sont installés sur votre Debian) :
|
|
|
|
$ pip install shinken
|
|
|
|
C'est aussi simple que cela. On a installé le moteur de Shinken mais aucune
|
|
interface graphique. Je découvre petit à petit mais l'interface est une
|
|
composante optionnelle et plusieurs sont proposées. J'ai choisi
|
|
d'installer **webui**, celle recommandée qui apporte de la visualisation (la
|
|
configuration se fait en modifiant des fichiers et en redémarrant les
|
|
services Shinken).
|
|
|
|
### Installation de Webui
|
|
|
|
Shinken propose son propre gestionnaire de greffons avec le programme **shinken**.
|
|
|
|
$ shinken --init
|
|
$ shinken install webui
|
|
$ shinken install auth-cfg-password
|
|
|
|
Webui nécessite un stockage en base pour stocker les préférences
|
|
utilisateurs. On peut se limiter à SQLite, j'ai choisir MongoDB (la base
|
|
NoSQL) qui me sert à d'autres usages.
|
|
|
|
$ apt-get install mongodb python-pymongo
|
|
$ shinken install mod-mongodb
|
|
|
|
Editer */etc/shinken/modules/webui.cfg* et rajouter les modules dépendants :
|
|
|
|
modules auth-cfg-password,mongodb
|
|
|
|
Editer */etc/shinken/brokers/broker-master.cfg* et rajouter le module webui :
|
|
|
|
modules webui
|
|
|
|
Il reste à définir les contacts (personnes) du système dans
|
|
*/etc/shinken/contacts*. Par défaut, un administrateur est défini dans
|
|
*/etc/shinken/contacts/admin.cfg*, son mot de passe est utilisé pour
|
|
l'interface Webui.
|
|
|
|
Deux commandes servent régulièrement quand on modifie la configuration.
|
|
|
|
Vérifier que la configuration est syntaxiquement correcte :
|
|
|
|
$ service shinken check
|
|
|
|
Redémarrer les services Shinken :
|
|
|
|
$ service shinken restart
|
|
|
|
Si tout est correct, on peut se connecter sur Webui depuis un navigateur à l'adresse :
|
|
|
|
http://<SERVER>:7767
|
|
|
|
### les objets supervisés
|
|
|
|
Nagios introduit la notion de *host* et de *service* pour désigner les
|
|
machines et les services s'exécutant sur ces machines. La configuration de
|
|
Shinken après installation est minimale :
|
|
|
|
- les notifications par email sont activées et seront utilisées si [votre serveur peut envoyer des emails](/2014/smtp-relay-avec-qmail-sur-debian-wheezy/)
|
|
- la machine locale est elle-même supervisée de manière générique, je crois que le seul indicateur c'est le Ping pour vérifier qu'elle est accessible.
|
|
|
|
On va enrichir tout cela en installant un agent SNMP sur le serveur Shinken ce qui permet de surveiller, entre autre, l'utilisation CPU, RAM, occupation des disques.
|
|
|
|
On installe un agent SNMP sur la machine locale avec le paquet **snmpd** qui, par défaut, n'est accessible que par localhost :
|
|
|
|
$ apt-get install snmpd
|
|
|
|
On rajoute le greffon linux-snmp dans Shinken :
|
|
|
|
$ shinken install linux-snmp
|
|
|
|
On corrige deux soucis de l'installation sous Debian :
|
|
|
|
le script **check_icmp** doit avoir les droits setuid :
|
|
|
|
$ chmod u+s /usr/lib/nagios/plugins/check_icmp
|
|
|
|
Le module PERL **utils.pm** est mal référencé par les greffons Nagios ; on le
|
|
fait pointer sur celui de notre installation de PERL dans */usr/share/perl5*
|
|
|
|
/usr/share/perl5$ ln -s /usr/lib/nagios/plugins/utils.pm
|
|
|
|
On peut modifier la configuration du *host* **localhost** en éditant le fichier */etc/shinken/hosts/localhost.cfg* :
|
|
|
|
define host{
|
|
use linux-snmp
|
|
contact_groups admins
|
|
host_name localhost
|
|
address 127.0.0.1
|
|
}
|
|
|
|
On vérifie la configuration et on redémarre Shinken :
|
|
|
|
$ service shinken check
|
|
$ service shinken restart
|
|
|
|
Si la configuration est correcte, la machine locale avec ses services CPU,
|
|
Mémoire apparaît désormais dans Webui. La fréquence du *polling*, les
|
|
notifications, tout est configurable finement par *host* , par groupe de
|
|
*host*, par service. La documentation est riche et bien détaillée.
|
|
|
|
Dans le cas de GNU/Linux, la supervision par SNMP apporte les indicateurs de
|
|
base d'un serveur. Pour avoir plus, on peut donner l'accès SSH au superviseur
|
|
Shinken sur les serveurs ou on peut installer NRPE (Nagios Remote Plugin
|
|
Executer). Je préfère NRPE car on ne demande pas l'accès total au serveur à
|
|
superviser. L'installation de [NRPE est bien décrite dans cet
|
|
article](http://xmodulo.com/2014/03/nagios-remote-plugin-executor-nrpe-
|
|
linux.html). Pour finir, beaucoup de resources Nagios sont disponibles sur
|
|
le site [Nagios Exchange](http://exchange.nagios.org).
|