Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

vigiboard / doc / admin.rst @ 98760d1b

History | View | Annotate | Download (28 KB)

1
**********************
2
Guide d'administration
3
**********************
4

    
5

    
6
Installation
7
============
8

    
9
Pré-requis logiciels
10
--------------------
11
Afin de pouvoir faire fonctionner VigiBoard, l'installation préalable des
12
logiciels suivants est requise :
13

    
14
* python (>= 2.5), sur la machine où VigiBoard est installé
15
* Apache (>= 2.2.0), sur la machine où VigiBoard est installé
16
* mod_wsgi (>= 2.3), sur la machine où VigiBoard est installé
17
* PostgreSQL (>= 8.3), éventuellement sur une machine distante
18

    
19
Reportez-vous aux manuels de ces différents logiciels pour savoir comment
20
procéder à leur installation sur votre machine.
21

    
22
VigiBoard requiert également la présence de plusieurs dépendances Python. Ces
23
dépendances seront automatiquement installées en même temps que le paquet de
24
VigiBoard.
25

    
26
Installation du paquet RPM
27
--------------------------
28
L'installation du connecteur se fait en installant simplement le paquet RPM
29
``vigilo-vigiboard``. La procédure exacte d'installation dépend du
30
gestionnaire de paquets utilisé. Les instructions suivantes décrivent la
31
procédure pour les gestionnaires de paquets RPM les plus fréquemment
32
rencontrés.
33

    
34
Installation à l'aide de urpmi::
35

    
36
    urpmi vigilo-vigiboard
37

    
38
Installation à l'aide de yum::
39

    
40
    yum install vigilo-vigiboard
41

    
42

    
43

    
44
Démarrage et arrêt
45
==================
46

    
47
VigiBoard fonctionne comme un site Web standard. À ce titre, il n'est pas
48
nécessaire d'exécuter une commande spécifique pour démarrer VigiBoard, dès lors
49
que le serveur Web qui l'héberge a été lancé, à l'aide de la commande::
50

    
51
    service httpd start
52

    
53
De la même manière, il n'y a pas de commande spécifique pour arrêter VigiBoard.
54
L'application est arrêtée en même temps que le serveur Web, à l'aide de la
55
commande::
56

    
57
    service httpd stop
58

    
59

    
60

    
61
Configuration
62
=============
63

    
64
La configuration initialement fournie avec VigiBoard est très rudimentaire.
65
Elle est décomposée en deux fichiers :
66

    
67
- le fichier ``settings.ini`` d'une part, qui contient la majorité des options
68
  de configuration ;
69
- et le fichier ``app_cfg.py`` qui contient des options de configuration plus
70
  complexes, nécessitant l'utilisation d'un langage plus complet (Python).
71

    
72
Ce chapitre a pour but de présenter les différentes options de configuration
73
disponibles afin de configurer VigiBoard en fonction de vos besoins. Les
74
chapitres :ref:`confbdd` à :ref:`confproxy` reprennent l'ordre de la
75
configuration utilisé dans le fichier ``settings.ini`` de l'application. Toutes
76
les options de configuration citées ici se trouvent sous la section
77
``[app:main]`` du fichier ``settings.ini``.
78

    
79
Le chapitre :ref:`confappcfg` quant à lui décrit certaines options de
80
configuration fournies par le fichier ``app_cfg.py``.
81

    
82
Enfin, le chapitre :ref:`confmodwsgi` donne des informations quant à la méthode
83
utilisée pour intégrer VigiBoard sur un serveur Web de type Apache, grâce au
84
module mod_wsgi.
85

    
86
La configuration de la journalisation des événements se fait également au
87
travers du fichier ``settings.ini``. Néanmoins, comme ce procédé se fait de la
88
même manière dans les différents composants de Vigilo, celui-ci fait l'objet
89
d'une documentation séparée dans le document *Vigilo - Journaux d'événements*.
90

    
91
.. _confbdd:
92

    
93
Base de données
94
---------------
95

    
96
Pour fonctionner, VigiBoard nécessite qu'une base de données soit accessible.
97
Ce chapitre décrit les options de configuration se rapportant à la base de
98
données.
99

    
100
Connexion
101
^^^^^^^^^
102
La configuration de la connexion à la base de base de données se fait en
103
modifiant la valeur de la clé ``sqlalchemy.url`` sous la section
104
``[app:main]``.
105

    
106
Cette clé contient une URL qui contient tous les paramètres nécessaires pour
107
pouvoir se connecter à la base de données. Le format de cette URL est le
108
suivant::
109

    
110
    sgbd://utilisateur:mot_de_passe@serveur:port/base_de_donnees
111

    
112
Le champ ``:port`` est optionnel et peut être omis si vous utilisez le port
113
par défaut d'installation du SGBD choisi.
114

    
115
Par exemple, voici la valeur correspondant à une installation mono-poste par
116
défaut de VigiBoard::
117

    
118
    postgres://vigilo:vigilo@localhost/vigilo
119

    
120
**ATTENTION** : à l'heure actuelle, seul PostgreSQL a fait l'objet de tests
121
intensifs. D'autres SGBD peuvent également fonctionner, mais aucun support ne
122
sera fourni pour ces SGBD.
123

    
124
Choix d'un préfixe pour les tables
125
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
126
Vous pouvez choisir un préfixe qui sera appliqué aux noms des tables de la base
127
de données en indiquant ce préfixe dans la clé ``db_basename`` sous la section
128
``[app:main]``. Par défaut, la configuration suppose que les tables de Vigilo
129
porteront le préfixe ``vigilo_``.
130

    
131
Si vous optez pour l'utilisation d'un préfixe, veillez à ce que celui-ci ne
132
contiennent que des caractères alpha-numériques (a-zA-Z0-9) ou le caractère
133
``_``.
134

    
135
Si vous décidez de ne pas utiliser de préfixe, veillez à ce que la base de
136
données configurée ne doit utilisée que par Vigilo, au risque d'un conflit avec
137
une éventuelle application tierce.
138

    
139
Optimisation de la couche d'abstraction
140
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
141
L'option ``sqlalchemy.echo`` permet de forcer l'affichage des requêtes SQL. En
142
production, cette valeur doit être positionnée à ``False``. Elle est redondante
143
avec la configuration des journaux d'événements (voir le document intitulé
144
Vigilo - Journaux d'événements pour plus d'information).
145

    
146
L'option ``sqlalchemy.echo_pool`` permet d'activer le mode de débogage du
147
gestionnaire de connexions à la base de données. De même que pour l'option
148
``sqlalchemy.echo`` ci-dessus, elle doit être positionnée à ``False`` en
149
production.
150

    
151
L'option ``sqlalchemy.pool_recycle`` permet de définir la durée après laquelle
152
une connexion est « recyclée » (recréée).
153

    
154
L'option ``sqlalchemy.pool_size`` permet de configurer le nombre de connexions
155
gérées simultanément par le gestionnaire de connexions à la base de données. La
156
valeur recommandée est 20.
157

    
158
L'option ``sqlalchemy.max_overflow`` permet de limiter le nombre maximales de
159
connexions simultanées à la base de données. La limite correspond à la somme de
160
``sqlalchemy.pool_size`` et ``sqlalchemy.max_overflow``. Une valeur de 100
161
convient généralement.
162

    
163
La documentation d'API de SQLAlchemy (la bibliothèque d'abstraction de la base
164
de données utilisée par Vigilo) donne quelques informations supplémentaires sur
165
le rôle de ces différents paramètres. Cette documentation est accessible `sur
166
le site du projet
167
<http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/pooling.html>`_.
168

    
169
Éléments de sécurité
170
--------------------
171

    
172
Ce chapitre décrit les options relatives à la gestion des données de sécurité
173
(clés de chiffrements, etc.) utilisées par VigiBoard.
174

    
175
Choix de la méthode de hachage des mots de passe
176
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
177
Lorsque l'authentification de Vigilo se base sur les comptes contenus dans la
178
base de données, les mots de passe des utilisateurs sont stockés sous forme
179
hachée afin de rendre plus difficile le cassage de ces mots de passe.
180

    
181
La méthode de hachage sélectionnée peut être configurée en modifiant la valeur
182
de la clé ``password_hashing_function`` sous la section ``[app:main]``. Les
183
méthodes de hachage disponibles sont variées. Les fonctions de hachage
184
suivantes sont notamment disponibles : md5, sha1, sha224, sha256, sha384 et
185
sha512. D'autres fonctions peuvent être disponibles en fonction de votre
186
installation de Python.
187

    
188
**Attention :** en cas d'absence d'une valeur pour cette option ou si la
189
fonction de hachage indiquée n'existe pas, les mots de passe sont stockés en
190
clair. Vérifiez donc la valeur indiquée.
191

    
192
**Attention :** cette option ne doit être modifiée qu'au moment de
193
l'installation. Si vous modifiez la méthode utilisée ultérieurement, les
194
comptes précédemment enregistrés ne seront plus utilisables. En particulier, le
195
compte d'administration créé par défaut.
196

    
197
Clé de chiffrement / déchiffrement des sessions
198
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
199
Afin de ne pas dévoiler certains paramètres associés à un utilisateur, le
200
fichier de session qui contient ces paramètres est chiffré à l'aide d'une clé
201
symétrique, utilisée à la fois pour le chiffrement et le déchiffrement des
202
sessions de tous les utilisateurs de VigiBoard.
203

    
204
L'option ``beaker.session.secret`` permet de choisir la clé utilisée pour
205
chiffrer et déchiffrer le contenu des sessions. Cette clé peut être la même que
206
celle configurée pour le chiffrement / déchiffrement des cookies (voir le
207
chapitre suivant), mais ceci est déconseillé afin d'éviter que la compromission
208
de l'une des deux clés n'entraine la compromission de l'autre.
209

    
210
De la même manière, vous pouvez configurer les autres interfaces graphiques de
211
Vigilo pour utiliser les mêmes clés, ou opter de préférence pour des clés
212
différentes (là encore, pour éviter la propagation d'une compromission).
213

    
214
Clé de chiffrement / déchiffrement des cookies
215
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
216
L'association entre un utilisateur et sa session se fait à l'aide d'un cookie
217
de session enregistré sur le navigateur de l'utilisateur. De la même manière
218
que les sessions sont chiffrés afin de garantir la confidentialité de leur
219
contenu, le cookie de session est également chiffré afin de protéger son
220
contenu.
221

    
222
L'option ``sa_auth.cookie_secret`` permet de choisir la clé utilisée pour
223
chiffrer et déchiffrer le contenu du cookie. Cette clé peut être la même que
224
celle configurée pour le chiffrement / déchiffrement des sessions (voir le
225
chapitre ), mais ceci est déconseillé afin d'éviter que la compromission de
226
l'une des deux clés n'entraine la compromission de l'autre.
227

    
228
De la même manière, vous pouvez configurer les autres interfaces graphiques de
229
Vigilo pour utiliser les mêmes clés, ou opter de préférence pour des clés
230
différentes (là encore, pour éviter la propagation d'une compromission).
231

    
232

    
233
Emplacement de la configuration d'authentification/autorisation
234
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
235
La directive ``auth.config`` de la section ``[app:main]`` permet d'indiquer
236
l'emplacement du fichier contenant la configuration de la couche
237
d'authentification/autorisation de Vigilo.
238

    
239
Il n'est généralement pas nécessaire de modifier cette valeur. La configuration
240
de cette couche d'abstraction est détaillée dans le document *Vigilo -
241
Authentification et autorisation*.
242

    
243
Configuration de l'interface
244
----------------------------
245

    
246
Ce chapitre décrit les options qui modifient l'apparence de l'interface
247
graphique de VigiBoard.
248

    
249
Langue par défaut de VigiBoard
250
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
251
Au sein de son interface, VigiBoard tente de s'adapter au navigateur de
252
l'utilisateur pour afficher les pages dans sa langue. Toutefois, si
253
l'utilisateur n'a pas paramétré sa langue ou bien si aucune traduction n'est
254
disponible qui soit en accord avec les paramètres du navigateur de
255
l'utilisateur, une langue par défaut est utilisée (dans l'installation par
256
défaut de VigiBoard, cette langue est le Français ``fr``).
257

    
258
Vous pouvez modifier la langue utilisée par défaut en changeant la valeur de la
259
clé ``lang`` sous la section ``[app:main]``. La valeur de cette clé est le code
260
de la langue à utiliser, sur deux caractères et en minuscules (format ISO
261
3166-1 ``alpha 2``). Exemples de codes valides : fr, en, de, ...
262

    
263
La liste complète des codes possibles est disponible sur
264
http://fr.wikipedia.org/wiki/ISO_3166-1. La langue retenue doit être disponible
265
parmi les traductions fournies avec VigiBoard.
266

    
267
Emplacement de la documentation en ligne
268
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
269
Il est possible d'ajouter un lien dans l'interface graphique qui redirige
270
l'utilisateur vers la documentation en ligne de l'application. Ceci se fait en
271
assignant une URL à l'option ``help_link``.
272

    
273
Si cette option est renseignée, une icône en forme de bouée de sauvetage
274
|imghelp| apparaît dans l'interface graphique qui permet à l'utilisateur
275
d'accéder à l'URL indiquée.
276

    
277
.. |imghelp| image:: help.png
278

    
279
Délai de rafraîchissement automatique
280
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
281
Le bac à événements de VigiBoard peut être actualisé automatiquement à
282
intervalle régulier afin de donner une vue à jour de l'état du parc aux
283
veilleurs. L'option ``refresh_delay`` permet de choisir le délai, en secondes,
284
entre deux rafraîchissements automatiques de la page.
285

    
286
NOTE : Les veilleurs ont la possibilité de désactiver le rafraîchissement
287
automatique durant leur session. Dans tous les cas, si une boîte de dialogue de
288
VigiBoard est affichée à l'écran, le rafraîchissement automatique est mis en
289
pause afin de ne pas perturber les opérations en cours.
290

    
291
État initial du rafraîchissement automatique
292
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
293
Vous avez la possibilité d'activer par défaut le rafraîchissement automatique
294
du bac à événements pour les veilleurs, en positionnant l'option
295
``refresh_enabled`` à ``True``.
296

    
297
NOTE : Les veilleurs ont la possibilité de désactiver le rafraîchissement
298
automatique durant leur session. Leur choix (rafraîchissement automatique actif
299
ou non) est conservé en session durant un certain temps.
300

    
301
Configuration du nombre d'événements affichés par page
302
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
303
Le nombre d'événements affichés par page peut être configuré en changeant la
304
valeur de la clé ``vigiboard_items_per_page`` sous la section ``[app:main]``.
305

    
306
Configuration du lien d'accueil
307
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
308
Vous avez la possibilité de rediriger l'utilisateur vers une page de votre
309
choix lorsque celui-ci clique sur le logo de Vigilo |imghome| dans l'interface
310
graphique de VigiBoard. Ceci se fait en modifiant l'URL donnée par l'option
311
``logo_link``.
312

    
313
.. |imghome| image:: home.png
314

    
315
Ordre de tri de la priorité des événements
316
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
317
VigiBoard prend en compte la priorité des événements pour les triers dans son
318
interface graphique. Néanmoins, chaque système à sa propre définition de la
319
priorité d'un événement. Généralement, plus la priorité d'un événement est
320
élevée, plus cet événement doit être traité en premier. Cependant il se peut
321
que cet ordre de tri soit inversé sur votre parc (c'est-à-dire qu'un événement
322
très prioritaire est représenté par une priorité dont la valeur est très
323
basse).
324

    
325
L'ordre de tri de la priorité est défini grâce à la clé de configuration
326
``vigiboard_priority_order``, sous la section ``[app:main]``. Cette clé accepte
327
deux valeurs : ``asc`` (nombre peu élevé = priorité importante) ou ``desc``
328
(nombre élevé = priorité importante).
329

    
330
Choix du critère de tri prioritaire
331
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
332
En fonction de votre parc informatique, il peut être intéressant de trier les
333
événements reçus dans le bac à événements par état Nagios puis par horodatage,
334
ou bien l'inverse.
335

    
336
L'option ``state_first`` est un booléen qui permet de choisir si le tri se fait
337
d'abord par l'état (``True``), ou d'abord par l'horodatage (``False``).
338

    
339
.. _confproxy:
340

    
341
Configuration du serveur mandataire
342
-----------------------------------
343
VigiBoard permet d'accéder à la page d'état Nagios d'un hôte ou d'un service,
344
et ce malgré le fait que ces hôtes/services sont supervisés par des serveurs
345
Nagios différents. Ceci est rendu possible par l'existence d'un serveur
346
mandataire (proxy) qui relaye les requêtes au serveur Nagios concerné.
347

    
348
Le chapitre  présente tout d'abord les options communes à tous les types de
349
serveurs mandataires de Vigilo. Puis, le chapitre  détaille les options
350
spécifiques au serveur mandataire pour Nagios intégré à VigiBoard.
351

    
352
Options communes à tous les serveurs mandataires de Vigilo
353
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
354
Les options communes à tous les serveurs mandataires de Vigilo concernent
355
l'authentification auprès d'un serveur mandataire intermédiaire. Elles sont au
356
nombre de trois :
357

    
358
- ``app_proxy_auth_method`` indique la méthode d'authentification à utiliser et
359
  peut valoir ``basic`` ou ``digest`` ,
360
- ``app_proxy_auth_username`` indique le nom d'utilisateur à utiliser pour se
361
  connecter au serveur mandataire intermédiaire ,
362
- ``app_proxy_auth_password`` indique le mot de passe associé à ce nom
363
  d'utilisateur.
364

    
365
Ces trois options doivent être renseignées pour que l'authentification auprès
366
du serveur mandataire intermédiaire soit effective.
367

    
368
Options spécifiques au serveur mandataire Nagios
369
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
370
L'option ``app_path.nagios`` indique l'emplacement de l'installation de Nagios
371
sur le serveur Web distant, à partir de la racine du serveur Web. Généralement,
372
il s'agit de ``/nagios/`` (emplacement par défaut lors d'une nouvelle
373
installation de l'interface graphique CGI de Nagios).
374

    
375
L'option ``app_scheme.nagios`` indique le protocole à utiliser pour communiquer
376
avec le serveur Web distant. Les protocoles supportés sont ``http`` et
377
``https``.
378

    
379
L'option ``app_port.nagios`` permet d'indiquer le port à utiliser pour se
380
connecter, dans le cas où il ne s'agit pas du port standard. Par défaut, le
381
serveur mandataire Nagios utilise le port standard associé au protocole donné
382
par ``app_scheme.nagios`` (80 pour HTTP, 443 pour HTTPS).
383

    
384
L'option ``app_redirect.nagios`` permet de modifier le comportement du serveur
385
mandataire. Lorsque cette option vaut ``True``, le serveur mandataire agit
386
comme un simple redirecteur de requêtes. Dans ce mode, les options
387
d'authentification liées au serveur mandataire sont ignorées. Ce mode de
388
fonctionnement est utile afin de tester la configuration mais n'est pas
389
recommandé en production.
390

    
391
Les options ``app_auth_method.nagios``, ``app_auth_username.nagios`` et
392
``app_auth_password.nagios`` permettent d'indiquer la méthode
393
d'authentification, le nom d'utilisateur et le mot de passe pour accéder à
394
l'interface CGI de Nagios. Ces options sont similaires à celles décrites au
395
chapitre .
396

    
397
Configuration des sessions
398
--------------------------
399
Chaque fois qu'un utilisateur se connecte à VigiBoard, un fichier de session
400
est créé permettant de sauvegarder certaines préférences de cet utilisateur
401
(par exemple, le thème de l'application, la taille de la police de caractères,
402
etc.).
403

    
404
Ce chapitre décrit les options relatives à la gestion des sessions.
405

    
406
Emplacement des fichiers de session
407
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
408
Le dossier dans lequel les fichiers de session seront stockés est indiqué par
409
l'option ``cache_dir``.
410

    
411
Nom du cookie de session
412
^^^^^^^^^^^^^^^^^^^^^^^^
413
Afin d'associer un utilisateur au fichier de session qui lui correspond, un
414
cookie de session est créé sur le navigateur de l'utilisateur. L'option
415
``beaker.session.key`` permet de choisir le nom du cookie créé. Le nom doit
416
être composé de caractères alphanumériques (a-zA-Z0-9) et commencer par une
417
lettre (a-zA-Z).
418

    
419
.. _confappcfg:
420

    
421
Options du fichier ``app_cfg.py``
422
---------------------------------
423
Le fichier ``app_cfg.py`` contient des réglages spécifiques à VigiBoard plus
424
complexes à représenter que par l'usage du fichier ``settings.ini``. Ce
425
chapitre décrit ces réglages.
426

    
427
La modification de ces réglages nécessite une connaissance rudimentaire du
428
langage de programmation Python.
429

    
430
Choix des colonnes affichées dans VigiBoard
431
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
432
Vous avez la possibilité de configurer les colonnes à afficher dans VigiBoard
433
ainsi que leur ordre. VigiBoard est fourni avec un ensemble de colonnes
434
prédéfinies. La liste complète des colonnes disponibles peut être obtenue à
435
l'aide de la commande suivante::
436

    
437
    vigilo-plugins vigiboard.columns
438

    
439
L'option ``base_config['vigiboard_plugins']`` du fichier ``app_cfg.py``
440
contient un tuple des noms des colonnes à afficher (dans leur ordre
441
d'affichage, de gauche à droite sur un navigateur configuré pour un utilisateur
442
français, et de droite à gauche pour un utilisateur hébreu).
443

    
444
Exemple de configuration possible::
445

    
446
    base_config['vigiboard_plugins'] = ( 
447
    'details', 
448
    'date', 
449
    'priority', 
450
    'occurrences', 
451
    'hostname', 
452
    'servicename', 
453
    'output', 
454
    'hls', 
455
    'status', 
456
    )
457

    
458
Configuration des liens externes
459
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
460
L'option ``base_config['vigiboard_links.eventdetails']`` contient la liste des
461
liens externes configurés, c'est-à-dire les liens qui seront affichés dans le
462
dialogue de détail d'un événement (figure ).
463

    
464
La configuration des liens externes est donnée sous la forme d'un tuple de
465
tuples, de la forme::
466

    
467
    (libellé du lien, URL cible)
468

    
469
L'URL peut être relative ou absolue. Dans le cas d'une URL relative, celle-ci
470
est relative à l'emplacement de la racine de VigiBoard sur le serveur Web.
471

    
472
L'URL peut contenir des paramètres qui seront transmis tel quel. De plus, les
473
variables de substitution suivantes sont disponibles :
474

    
475
- ``%(idcorrevent)d`` est remplacé par l'identifiant (unique) de l'événement
476
  corrélé dans Vigilo,
477
- ``%(host)s`` est remplacé par le nom de l'hôte impacté par l'événement
478
  corrélé,
479
- ``%(service)s`` est remplacé par le nom du service impacté ou ``None`` si
480
  l'événement concernant directement l'hôte,
481
- ``%(message)s`` est remplacé par le message de supervision remonté par
482
  Nagios.
483

    
484
Exemple de configuration possible::
485

    
486
    base_config['vigiboard_links.eventdetails'] = ( 
487
        ( 
488
            u'Détail de l\'hôte dans Nagios', 
489
            '/nagios/%(host)s/cgi-bin/status.cgi?host=%(host)s' 
490
        ), ( 
491
            u'Détail de la métrologie', 
492
            'http://vigilo.example.com/vigigraph/rpc/fullHostPage?host=%(host)s' 
493
        ), ( 
494
            u'Détail de la sécurité', 
495
            'http://security.example.com/?host=%(host)s' 
496
        ), ( 
497
            'Inventaire', 
498
            'http://cmdb.example.com/?host=%(host)s' 
499
        ), ( 
500
            'Documentation', 
501
            'http://doc.example.com/?q=%(message)s' 
502
        ), 
503
    ) 
504

    
505
Cet exemple correspond à la liste de liens suivante :
506
  
507
.. figure:: liens.png
508
   
509
   Liens externes d'un événement
510

    
511

    
512
Emplacement du gestionnaire de tickets
513
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
514
Un ticket d'incident peut être associé à un ou plusieurs événements corrélés
515
apparaissant dans VigiBoard. L'adresse du gestionnaire de ticket est
516
paramétrable à l'aide de l'option ``base_config['vigiboard_links.tt']``.
517

    
518
Il s'agit d'une URL absolue, dans laquelle les variables de substitution
519
suivantes sont disponibles :
520

    
521
- ``%(idcorrevent)d`` est remplacé par l'identifiant (unique) de l'événement
522
  corrélé dans Vigilo,
523
- ``%(host)s`` est remplacé par le nom de l'hôte impacté par l'événement
524
  corrélé,
525
- ``%(service)s`` est remplacé par le nom du service impacté ou ``None`` si
526
  l'événement concernant directement l'hôte,
527
- ``%(tt)s`` est remplacé par la référence du ticket d'incident, telle que
528
  saisie par un utilisateur.
529

    
530
Exemple de configuration possible::
531

    
532
    base_config['vigiboard_links.tt'] = 'http://bugs.example.com/?ticket_id=%(tt)s'
533

    
534

    
535
.. _confmodwsgi:
536

    
537
Intégration de VigiBoard avec Apache / mod_wsgi
538
-----------------------------------------------
539

    
540
VigiBoard a été testé avec le serveur libre Apache. L'application utilise en
541
outre le module Apache ``mod_wsgi`` pour communiquer avec le serveur. Ce module
542
implémente un modèle de communication basé sur l'interface WSGI. Le reste de ce
543
chapitre décrit la configuration utilisée pour réaliser cette intégration.
544

    
545
Fichier de configuration pour Apache
546
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
547
Le fichier de configuration pour l'intégration de VigiBoard dans Apache se
548
trouve généralement dans ``/etc/vigilo/vigiboard/vigiboard.conf`` (un lien
549
symbolique vers ce fichier est créé dans le dossier de configuration d'Apache,
550
généralement dans ``/etc/httpd/conf.d/vigiboard.conf``).
551

    
552
En général, il n'est pas nécessaire de modifier le contenu de ce fichier. Ce
553
chapitre vise toutefois à fournir quelques informations sur le fonctionnement
554
de ce fichier, afin de permettre d'éventuelles personnalisations de ce
555
comportement. 
556

    
557
Ce fichier tente tout d'abord de charger le module ``mod_wsgi`` (directive
558
LoadModule) puis ajoute les directives de configuration nécessaire à Apache
559
pour faire fonctionner VigiBoard, reprises partiellement ci-dessous::
560

    
561
    WSGIRestrictStdout off 
562
    WSGIPassAuthorization on 
563
    WSGIDaemonProcess vigiboard user=apache group=apache threads=2 
564
    WSGIScriptAlias /vigilo/vigiboard "/etc/vigilo/vigiboard/vigiboard.wsgi" 
565

    
566
    KeepAlive Off 
567

    
568
    <Directory "/etc/vigilo/vigiboard/"> 
569
    <Files "vigiboard.wsgi"> 
570
    WSGIProcessGroup vigiboard 
571
    WSGIApplicationGroup %{GLOBAL} 
572

    
573
    Order deny,allow 
574
    Allow from all 
575
    </Files> 
576
    </Directory> 
577

    
578
L'option ``WSGIRestrictStdout`` est positionnée à ``off`` afin d'éviter
579
qu'Apache ne tue le processus de l'application lorsque des données sont
580
envoyées sur la sortie standard. Ceci permet de récupérer les erreurs critiques
581
pouvant être émises par l'application. Ces erreurs apparaissent alors dans le
582
journal des événements d'Apache (configuré par la directive ``error_log``).
583

    
584
L'option ``WSGIPassAuthorization`` positionnée à ``on`` indique à Apache et
585
mod_wsgi que les informations d'authentification éventuellement transmises par
586
l'utilisateur doivent être transmises à VigiBoard. En effet, Vigilo utilise son
587
propre mécanisme de gestion de l'authentification et des autorisations (voir la
588
documentation intitulée Vigilo - Authentification et autorisation) et utilise
589
donc ces informations.
590

    
591
L'option ``WSGIDaemonProcess`` permet de créer un groupe de processus affecté
592
au traitement des requêtes HTTP destinées à VigiBoard. Il permet d'utiliser un
593
nom d'utilisateur et un groupe prédéfini (afin de réduire les privilèges
594
nécessaires), ainsi que le nombre de processus légers à utiliser pour traiter
595
les requêtes (ici, 2).
596

    
597
L'option ``WSGIScriptAlias`` indique l'emplacement à partir duquel VigiBoard sera accessible (ici, ``http://example.com/vigilo/vigiboard`` si le serveur Apache est configuré pour le domaine ``example.com``) et l'emplacement du script WSGI nécessaire au lancement de l'application (voir le chapitre suivant).
598

    
599
L'option ``KeepAlive`` positionnée à ``off`` est nécessaire afin de contourner
600
un problème dans le module ``mod_wsgi`` d'Apache.
601

    
602
Les autres options permettent d'exécuter le script WSGI de VigiBoard à l'aide
603
du groupe de processus défini précédemment.
604

    
605
La liste complète des directives de configuration supportées par le module
606
``mod_wsgi`` d'Apache est disponible `dans la documentation officielle
607
<http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives>`_.
608

    
609
Script WSGI de VigiBoard
610
^^^^^^^^^^^^^^^^^^^^^^^^
611
Le script WSGI de VigiBoard est un script Python très simple qui a pour but de
612
démarrer l'exécution de VigiBoard à partir du fichier de configuration associé
613
(``/etc/vigilo/vigiboard/settings.ini``).
614

    
615
Vous n'avez généralement pas besoin de modifier son contenu, sauf
616
éventuellement pour adapter l'emplacement du fichier de configuration en
617
fonction de votre installation.
618

    
619

    
620

    
621
Annexes
622
=======
623

    
624
Glossaire - Terminologie
625
------------------------
626

    
627
.. glossary::
628
   API
629
       *Application Programming Interface*. Interface logicielle de programmation,
630
       permettant à un développeur d'enrichir la liste des fonctionnalités
631
       proposées par un logiciel.
632
   
633
   CGI
634
       *Common Gateway Interface*. Interface standard de communication entre un
635
       serveur Web et un programme capable de générer une réponse HTTP valide. Il
636
       s'agit par exemple de l'interface retenue par Nagios pour la génération de
637
       ses pages Web.
638
   
639
   SGBD(R)
640
       Serveur de Gestion de Bases de Données (Relationnelles). Logiciel
641
       permettant d'héberger une base de données sur la machine.
642
   
643
   SQL
644
       *Structured Query Language*. Langage de requêtes structuré pour
645
       l'interrogation d'une base de données relationnelle.
646
   
647
   URL
648
       *Uniform Resource Locator*. Chaîne de caractères permettant d'identifier
649
       une ressource sur Internet. Exemple : ``http://www.projet-vigilo.org/``.
650
   
651
   WSGI
652
       *Web Server Gateway Interface*. Une interface pour la communication entre
653
       une application et un serveur Web, similaire à CGI. Il s'agit de
654
       l'interface utilisée par Vigilo.
655

    
656

    
657
.. vim: set tw=79 :