[Tutoriel] Shinken 2.4 sur CentOS/RHEL 7 – partie 3

Posted by

Cet article fait parti d’une série d’articles (au moins 3) que je vais publier sur le sujet et que j’ai séparé pour les rendre un peu plus digestes. Je vous conseille quand même de ne pas en sauter pour bien comprendre de quoi on parle ;-) :

Les modules

L’ensemble des modules et en particulier le broker n’a donc aucun module d’activé. Or les interfaces graphiques sont gérées par des modules du broker pour ne citer qu’eux.

Les modules et shinken.io

Par convention (ce n’était pas forcément le cas dans les précédentes versions), la configuration des modules est définie dans des fichiers de configurations individuels qui seront stockés dans le sous dossier modules de /etc/shinken/.

On peut trouver les fichiers liés aux modules dans le répertoire /var/lib/shinken/modules/ (par défaut, mais vous pouvez le modifier dans le fichier shinken.cfg ou dans les « .ini » des démons).

cat /etc/shinken/modules/sample.cfg
# Here is a sample module that will do nothing :)
#define module{
#     module_name    module-sample
#     module_type    module-sample
#     key1           value1
#     key2           value2

ll /var/lib/shinken/modules
total 24
drwxr-xr-x 2 shinkn shinkn 4096 17 sept. 14:34 dummy_arbiter
drwxr-xr-x 2 shinkn shinkn 4096 17 sept. 14:34 dummy_broker
drwxr-xr-x 2 shinkn shinkn 4096 17 sept. 14:34 dummy_broker_external
drwxr-xr-x 2 shinkn shinkn 4096 17 sept. 14:34 dummy_poller
drwxr-xr-x 2 shinkn shinkn 4096 17 sept. 14:34 dummy_scheduler
-rw-r--r-- 1 shinkn shinkn 919 17 sept. 14:34 __init__.py

Autant dire que pour l’instant on ne peut pas faire grand chose !

C’est un choix technique qui a été fait à partir de la version 2 (si je ne m’abuse) et qui permet de n’avoir que ce dont on a vraiment besoin, ce qui est une très bonne pratique.

Pour autant, pour éviter de trop alourdir le processus d’installation de multiples modules, l’équipe a mis au point un catalogue d’extensions qui permet d’installer les modules manquants à l’aide d’une simple ligne de commande, ce qui est très pratique.

La première fois, il faut commencer par « initialise » notre Shinken 2.4, avec la commande suivante :

shinken --init

Le site shinken.io référence à date pas moins de 138 packages dont les fameux modules qui nous manquent.

Premier module : les logs comme nagios.log

Pour installer le module de log plat à la mode « Nagios », il faut installer simple-log.

 shinken install simple-log
  Grabbing : simple-log
  OK simple-log

Pas mal hein?

Si vous avez l’erreur suivante qui apparaît, c’est que vous n’avez pas fait la commande shinken init à l’étape précédente.

shinken install simple-log
[1442761511] ERROR: [Shnken] Cannot load cli commands, missing paths or cli entry in the config
[1442761511] ERROR: [Shnken] CLI loading not done: missing configuration data. Please run --init

shinken --init
Creating ini section paths
Creating ini section shinken.io
Saving the new configuration file /root/.shnken.ini

Installer la WebUI, l’interface graphique officielle du projet

Pour installer l’interface graphique « officielle » (aka la WebUI), il faut se rendre sur la page suivante (et la documentation qui détaille sont installation sont disponibles ici).

Toutes les dépendances python peuvent être installées via pip et le fichier requirements.txt. Pour mongodb, je vous l’ai déjà fait installer un peu plus tôt donc ça devrait déjà être fait (enfin… si vous avez suivi… sinon :-p retournez à l’article précédent).

pip install -r https://raw.githubusercontent.com/shinken-monitoring/mod-webui/develop/requirements.txt
shinken install webui2
  Grabbing : webui2
  OK webui2

Par défaut, le fichier de configuration webui2.cfg est créé dans le dossier /etc/shinken/modules/ et les fichiers du modules ont été déposés dans /var/lib/shinken/modules/.

Pour que notre authentification par fichier htpasswd soit prise en compte, il faut dé-commenter la ligne contenant le paramètre htpasswd_file.

[Deprecated]Vous devriez aussi changer tout de suite le paramètre auth_secret dans le fichier de configuration webui2.cfg. Remplacez CHANGEME par la valeur que vous voulez.

Historiquement il fallait changer soit même le paramètre auth_secret dans le fichier de configuration mais cette option a été remplacée par un fichier autogénéré. Cette méthode est plus sécurisante car elle évite d’oublier de le faire ;-).

   htpasswd_file              /etc/shinken/htpasswd.users
[...]
   # Authentication secret for session cookie
   #auth_secret                BOBLEPONGE
   #                           ; CHANGE THIS or someone could forge cookies
   auth_secret_file            /var/lib/shinken/auth_secret
[...]

Pour l’instant, seule l’authentification par Apache htpasswd est activé (vu qu’on vient de le décommenter). On pourra en rajouter d’autres par la suite mais pour faire simple, on va juste y ajouter un compte pour commencer.

htpasswd -c /etc/shinken/htpasswd.users admin

Ensuite on démarre la base mongodb

systemctl enable mongod
systemctl start mongod

Câbler le tout

On a installé deux modules, mais aucun des deux n’ont été reliés au broker : ils ne seront pas utilisés au démarrage. On modifie donc la configuration du broker en conséquence.

vi /etc/shinken/brokers/broker-master.cfg
    modules     simple-log,webui2

Pour plus de détails sur la configuration du broker, je vous renvoie vers la page broker de la documentation officielle.

Redémarrez l’outil pour prendre en compte la modification de configuration et connectez vous à l’URL http://[@IP_shnken]:7767

systemctl restart shinken
shinken2
Yata !
03_shinken
Le dashboard. Mais pour l’instant il n’y a pas grand chose !

En cas de problèmes

Par défaut, les logs sont stockés dans le répertoire /var/log/shinken/, avec un fichier par démon.

Ils sont généralement assez détaillés et on peut moduler le niveau de détails dans les fichiers de configuration des démons que j’ai présenté un peu plus tôt.

Dans le cas où la configuration (shinken.cfg et tous les autres .cfg qui en découlent) contiendrait une erreur, l’arbiter plantera au démarrage et les informations sur son plantage seront contenues dans le fichier /tmp/bad_start_for_arbiter. Ça peut être utile.

Aller plus loin

Ça y est. Votre nouvel outil de supervision fonctionne et vous dispose zd’une interface graphique pour voir ce qu’il s’y passe.

Voici quelques pistes pour réellement terminer le travail que vous venez de commencer :

  • D’abord vous pourriez commencer par ajouter des plugins et quelques serveurs à votre configuration pour voir comment Shinken réagit quand on lui donne un peu de travail. Et pourquoi ne pas vous économiser du travail de configuration en utilisant les packs, dans ce but ultime d’automatiser toujours plus (pour travailler moins) ?
  • Ensuite, vous pourriez ajouter des modules à la WebUI, comme par exemple ui-graphite ou ui-pnp pour ajouter la gestion des graphes dans votre WebUI.
  • Enfin, vous pourriez vous pencher sur les aspects de haute disponibilité, de répartition de charge et de gestion des royaumes, histoire de répondre à des problématiques plus complexe ?

21 comments

  1. Bonjour zwindler,

    merci pour ce tuto de la nouvelle version.
    J’ignore comment tu as fait pour le faire fonctionner mais je n’y arrive pas. Impossible d’accéder à l’interface webui malgré ta procédure. Je n’ai rien oublié pourtant … Cela devient frustrant haha. Si t’as une idée, je te remercie d’avance ;)

  2. Tu peux m’en dire plus ? Est ce que le port est en écoute ? Est ce que tu as été voir dans les fichiers de logs (arbiter, broker, …) que je cite en fin d’article pour voir s’il n’y avait pas une erreur ? Typiquement, est ce que le module WebUI est bien chargé par le broker ?

  3. Kh0rne77 > as tu désactivé SELinux et le firewall ?

    Tuto très bien mais j’ai dû rater une manip car l’accès au Web GUI ne prend pas mes login/pwd

  4. Effectivement j’ai oublié de l’écrire explicitement.

    En relisant, je parle du cookie_auth à changer sans indiquer qu’il faut AUSSI décommenter la partie htpasswd_file /etc/shinken/htpasswd.users.

    Je modifie pour que ce soit plus clair. Merci pour le retour.

  5. Bonjour zwindler,
    je me permets de vous écrire parce que je suis entrain de travailler sur cet outil de supervision . le soucis que je rencontre est celui de l’intégration de nagvis à shinken. Je voudrais savoir si cela est possible tout précisant que j’ai installé nagvis par le biais de omd (Operating Monitoring Distribution)

  6. Oui c’est possible, ça demandera juste un peu de configuration, aussi bien côté Nagvis que côté Shinken. Il y a une page dédiée sur la documentation de Shinken qui traite de ce sujet : http://shinken.readthedocs.org/en/latest/11_integration/nagvis.html
    Dans les grandes lignes, il va falloir activer le module Livestatus (non traité dans mon tutoriel mais similaire à l’activation des modules dont je parle) côté Shinken, puis modifier le fichier de configuration /etc/nagvis/nagvis.ini.php.
    Le fait que Nagvis ait été installé via OMD ne devrait pas être un problème.

  7. Bonjour Zwindler,
    Super tutoriel, très complet. Je suis actuellement en train de travailler sur Shinken, du moins son installation. Je travaille avec une machine non reliée à Internet et du coup j’ai des soucis pour installer le module webui2 ce qui est normal. J’ai cherché une procédure pour installer en offline mais j’ai rien trouvé. De ton côté, sais-tu s’il en existe une ?

  8. Je n’ai pas eu à le faire récemment, mais à vue de nez :
    – il faut commencer par récupérer les dépendances pipy listées dans le mod-webui/requirements.txt, donc bottle==0.12.8, pymongo>=3.0.3, requests, arrow et passlib.
    – Tu télécharges les tar.gz depuis le site de pipy (exemple pour arrow : https://pypi.python.org/pypi/arrow).
    – une fois tous les tar.gz récupérés, tu peux les installer directement avec le tar.gz via la commande « pip install arrow-0.8.0.tar.gz »
    – tu récupères le module web-ui depuis les sources sur https://github.com/shinken-monitoring/mod-webui (zip) et tu le dézippe sur ton serveur
    – tu lances la commande

    shinken install --local mod-webui

    Je n’ai pas retesté depuis un moment, donc je ne peux pas garantir à 100% qu’il n’y a pas de petites subtilités mais le principe est là.

    Je vais rédiger un petit article « follow up » pour formaliser un peu plus ces problématiques de déploiements offline car je remarque que c’est un problème récurrent pour pas mal de monde (moi compris)

  9. Bonjour Zwindler,
    Je voudrais savoir si c’était possible de créer les services liés à un modèle sous Shinken automatiquement, je le faisais sous Centreon et en utilisant la même configuration, il me créer pas les services..
    Merci d’avance,

  10. Bonjour,

    Une des choses que je reproche à Centreon c’est justement la gestion de la configuration qui est certes compatible mais différente du standard Nagios.

    Quand tu créés un modèle de service dans Centreon et que tu l’affectes à un hôte, il génère effectivement un service. Ça permet d’avoir une « conf à plat » mais ça n’est pas la façon de faire de Nagios.
    Dans Nagios, tu as une réelle notion d’héritage. Si un template d’hôte dispose de templates de services, et que tu créé des hôtes qui dépendent de ce template d’hôte, la définition des services associée est implicite. Les services ne sont donc pas créés, ce n’est pas nécessaire.

    Shinken est plus proche de la philosophie Nagios de ce point de vue là. La définition des hôtes est beaucoup plus « simple », il suffit de bien créer tes templates et de simplement les ajouter sur les hôtes. Dans la majeure partie des cas (sauf exceptions ou tu modifies un seuil pour un serveur donné), il n’y a donc aucun service à créer.

  11. Merci pour les infos,
    Du coup, je ne sais pas si j’ai bien saisi, j’ai mes templates d’hôtes qui ont des templates de services associés.
    Lorsque je créer un nouvel hôte :
    define host{
    host_name nom_serveur
    use template_hôtes
    address @IP
    }

    Sauf que les services associés au template d’hôte ne sont pas créés automatiquement..

  12. C’est bien ça.
    Juste pour être sûr, qu’est ce que tu veux dire pas les services ne sont pas créés ?
    Tu ne les retrouve pas dans ta conf ou tu ne les vois pas dans la console Shinken une fois le moteur redémarré ?

  13. Ok tu devrais les avoir dans l’interface. Je pense que tu as un problème de configuration du coup.
    Je te conseille d’aller sur un forum (shinken ou monitoring-fr) pour pouvoir poster ta configuration et demander de l’aide. Par commentaire interposé ça me paraît compliqué de trouver la solution.

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.