====== Activité : Installation de l'interface webui ======
Shinken comprend une **interface web (webui)** qu'il faut installer. Elle s'appuie sur un **serveur http interne** ne nécessitant pas de composant supplémentaire comme apache par exemple.
Il faut **systématiquement se connecter** avec l'utilisateur **shinken** dès lors qu'on **ajoute** des éléments à shinken. Car les différents exécutables de shinken utilisent l'uid shinken. Il faut donc que les nouveaux fichiers installés bénéficient des droits **shinken** et non root.
On va donc ouvrir une session terminal et se connecter avec l'utilisateur shinken :
root@ctShinken:~# su - shinken
shinken@ctShinken:~$
===== Installation de l'interface Web =====
Pour installer l'interface web :
shinken@ctShinken:~$ shinken install webui
Grabbing : webui
OK webui
Après cela le nouveau module webui est installé :
shinken@ctShinken:~$ exit
root@ctShinken:~# ls /var/lib/shinken/modules/
dummy_arbiter dummy_broker_external dummy_scheduler webui
dummy_broker dummy_poller __init__.py
Et un nouveau fichier de configuration **webui.cfg** est créé :
root@ctShinken:~# ls /etc/shinken/modules/
sample.cfg webui.cfg
Avec le contenu suivant :
## Module: webui
## Loaded by: Broker
# The Shinken web interface and integrated web server.
define module {
module_name webui
module_type webui
host 0.0.0.0 ; All interfaces = 0.0.0.0
port 7767
auth_secret CHANGE_ME ; CHANGE THIS or someone could forge cookies
allow_html_output 1 ; Allow or not HTML chars in plugins output.
; WARNING: Allowing can be a security issue.
max_output_length 1024 ; Maximum output length for plugin output in webui
manage_acl 1 ; Use contacts ACL. 0 allow actions for all.
play_sound 0 ; Play sound on new non-acknowledged problems.
login_text Welcome on Shinken WebUI ; Text in the login form.
## Modules for WebUI
# - auth-htpasswd = Use an htpasswd file for auth backend.
# - auth-active-directory = Use AD for auth backend (and retrieve photos).
# - auth-cfg-password = Use the password setted in Shinken contact for auth.
# - ui-pnp = Use PNP graphs in the UI.
# - ui-graphite = Use graphs from Graphite time series database.
# - mongodb = Save user preferences to a Mongodb database
# - SQLitedb = Save user preferences to a SQLite database
modules
## Advanced Options
# Don't play with them on your production server ;)
#http_backend auto ; Choice is: auto, wsgiref or cherrypy if available
#remote_user_enable 1 ; If WebUI is behind a web server which
; has already authentified user, enable.
#remote_user_enable 2 ; Look for remote user in the WSGI environment
; instead of the HTTP header. This allows
; for fastcgi (flup) and scgi (flupscgi)
; integration, eg. with the apache modules.
#remote_user_variable X_Remote_User ; Set to the HTTP header containing
; the authentificated user s name, which
; must be a Shinken contact.
# If you got external plugins (pages) to load on webui
#additional_plugins_dir
}
A remarquer :
* le **nom** et le **type** du module : webui
* l'**adresse IP** de l'hôte : 0.0.0.0
* le **port** d'écoute : 7767
Pour prendre en compte le **nouveau module webui,** il faut **relancer** shinken :
root@ctShinken:~# /etc/init.d/shinken restart
Pour se connecter à l'interface Web de Shinken rendez-vous à l'url http://adressIPdeVotreServeur:7767
{{ :reseau:supervision:shinken_01.png |}}
Vous ne pouvez pas vous connecter car il n'y a **pas de liaison** entre le module **Broker** et **webui**.
Il faut modifier le fichier de configuration du broker **/etc/shinken/brokers/broker-master.cfg** ainsi (en complétant la ligne modules webui)
#===============================================================================
# BROKER (S1_Broker)
#===============================================================================
# Description: The broker is responsible for:
# - Exporting centralized logs of all Shinken daemon processes
# - Exporting status data
# - Exporting performance data
# - Exposing Shinken APIs:
# - Status data
# - Performance data
# - Configuration data
# - Command interface
# https://shinken.readthedocs.org/en/latest/08_configobjects/broker.html
#===============================================================================
define broker {
broker_name broker-master
address localhost
port 7772
spare 0
## Optional
manage_arbiters 1 ; Take data from Arbiter. There should be only one
; broker for the arbiter.
manage_sub_realms 1 ; Does it take jobs from schedulers of sub-Realms?
timeout 3 ; Ping timeout
data_timeout 120 ; Data send timeout
max_check_attempts 3 ; If ping fails N or more, then the node is dead
check_interval 60 ; Ping node every N seconds
## Modules
# Default: None
# Interesting modules that can be used:
# - simple-log = just all logs into one file
# - livestatus = livestatus listener
# - tondodb-mysql = NDO DB support
# - npcdmod = Use the PNP addon
# - graphite = Use a Graphite time series DB for perfdata
# - webui = Shinken Web interface
# - glpidb = Save data in GLPI MySQL database
modules webui
# Enable https or not
use_ssl 0
# enable certificate/hostname check, will avoid man in the middle attacks
hard_ssl_name_check 0
## Advanced
realm All
}
Redémarrez shinken et connectez-vous à nouveau à l'interface Web :
root@ctShinken:~# service shinken restart
{{ :reseau:supervision:shinken_02.png?300 |}}
* Authentifiez-vous avec le compte admin (mot de passe admin) comme indiqué dans la documentation mais…
{{ :reseau:supervision:shinken_03.png |}}
Il faut implémenter une méthode d'authentification pour webui (voir http://shinken.readthedocs.org/en/latest/11_integration/webui.html?highlight=webui)
Vous allez utiliser une méthode simple basée sur les contacts, c’est-à-dire sur les utilisateurs déclarés dans **/etc/shinken/contacts/admin.cfg**.
# This is a default admin
# CHANGE ITS PASSWORD!
define contact{
use generic-contact
contact_name admin
email shinken@localhost
pager 0600000000 ; contact phone number
password admin
is_admin 1
expert 1
}
Utilisez à nouveau le **client shinken** pour **rechercher** les modules d'**authentification associés à webui**.
root@ctShinken:~# su - shinken
shinken@ctShinken:~$ shinken search webui auth
shinken@debianWheezy:~$ shinken search webui auth
auth-active-directory (naparuba) [module,broker,webui,auth,authentification,auth-active-directory] : Active directory auth for WebUI
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
auth-ws-glpi (mohierf) [module,broker,webui,glpi,auth,authentication] : Authenticate Web UI users upon a Glpi Web Service login.
* Installez le bon module :
shinken@ctShinken:~$ shinken install auth-cfg-password
Grabbing : auth-cfg-password
OK auth-cfg-password
Vérifiez l'installation :
shinken@ctShinken:~$ exit
root@ctshinken:~# ls /var/lib/shinken/modules/
auth-cfg-password dummy_broker dummy_poller __init__.py
dummy_arbiter dummy_broker_external dummy_scheduler webui
root@ctshinken:~# ls /etc/shinken/modules/
auth_cfg_password.cfg sample.cfg webui.cfg
* Regardez le fichier de configuration **auth_cfg_password.cfg** du nouveau module :
## Module: auth-cfg-password
## Loaded by: WebUI
# Check authentification using password parameter in contact definition.
define module {
module_name auth-cfg-password
module_type cfg_password_webui
}
* Il faut modifier le fichier de configuration du module webui **/etc/shinken/modules/webui.cfg** pour lui indiquer la méthode d'authentification.
Modification dans webui.cfg :
port 7767
auth_secret CHANGE_ME ; CHANGE THIS or someone could forge cookies
allow_html_output 1 ; Allow or not HTML chars in plugins output.
; WARNING: Allowing can be a security issue.
max_output_length 1024 ; Maximum output length for plugin output in webui
manage_acl 1 ; Use contacts ACL. 0 allow actions for all.
play_sound 0 ; Play sound on new non-acknowledged problems.
login_text Welcome on Shinken WebUI ; Text in the login form.
modules auth-cfg-password
* **Redémarrez** shinken et **connectez-vous** à nouveau à l'interface web d'administration :
root@ctShinken:~# service shinken restart
{{ :reseau:supervision:shinken_04.png |}}
Vous avez maintenant accès à l'interface même la configuration de base n'est pas terminée.
L'interface principale webUI est accessible par le port 7767. D'autres interfaces sont utilisables. Le module broker dont dépend webui permet une entière liberté de choix.
Shinken permet de gérer des utilisateurs (contacts). Ils sont définis dans le répertoire **/etc/shinken/contacts** :
root@ctShinken:~# ls /etc/shinken/contacts
admin.cfg guest.cfg
Voici le contenu de ce deux fichiers contact après l'installation :
root@ctShinken:~# cat /etc/shinken/contacts/admin.cfg
# This is a default admin
# CHANGE ITS PASSWORD!
define contact{
use generic-contact
contact_name admin
email shinken@localhost
pager 0600000000 ; contact phone number
password admin
is_admin 1
expert 1
}
root@ctShinken:~# cat /etc/shinken/contacts/guest.cfg
# This is a default guest user
# CHANGE ITS PASSWORD or remove it
define contact{
use generic-contact
contact_name guest
email guest@localhost
password guest
can_submit_commands 0
}
Le mot clé **define** permet de créer une instance d'objet. Ici un objet contact.
Par défaut, Shinken configure **2 contacts** :
* **admin** : un compte avec le statut **d'administrateur** (**is_admin 1**)
* **guest** : un utilisateur avec le statut **d'invité**. Il peut consulter l'état des différents équipements surveillés mais ne peut effectuer aucune action (**can_submit_commands 0**)
Il faudrait bien sûr changer ce mot de passe, mais vous ne le ferez pas pour l'instant.
Il reste quelques réglages à opérer pour avoir une installation prête pour la supervision. En effet, le dashboard (tableau de bord) ne fonctionne pas.
{{ :reseau:supervision:shinken_05.png |}}
Comme cela est indiqué, il faut **installer une base de données** pour stocker les préférences utilisateurs. Il est possible d'utiliser mongodb ou SQLite. Vous allez utiliser **SQLite**.
Pour installer SQLite il faut procéder en 2 étapes.
* Installer les paquets :
root@ctShinken:~# apt-get install mongodb python-pymongo
* Installez le module **sqlitedb** pour shinken (rappel : terminal avec su – shinken toujours).
root@ctShinken:~# su - shinken
shinken@ctShinken:~$ shinken install sqlitedb
shinken@ctShinken:~$ exit
root@ctShinken:~#
* Etablissez une **relation** entre **webui** et **sqlitedb** dans le fichier de configuration de webui **/etc/shinken/modules/webui.cfg** :
modules auth-cfg-password,SQLitedb
(Attention pas d'espace entre les différents modules).
* Pour finir, il ne faut pas oublier de **relancer** shinken :
root@ctShinken:~# service shinken restart
* vous devez obtenir au final ceci :
{{ :reseau:supervision:shinken_06.png |}}
* L'installation de **widget** (composant d'interface graphique permettant d'obtenir des informations) se fait sans problème, par exemple vous pouvez installer le widget **Sytem state** :
{{ :reseau:supervision:shinken_07.png |}}
* et obtenir :
{{ :reseau:supervision:shinken_08.png |}}
Information : l'otilitaire shinken nous permet de voir les modules installé grâce à l'option **inventory** :
shinken@debianWheezy:~$ shinken inventory
auth-cfg-password
webui
==== Je reviens au menu Shinken ====
* [[reseau:supervision:shinken_00|Supervision des services avec Shinken]]