Le module de type event-manager-reader est un module qui permet au module WebUI ( l'interface de Visualisation ) du Broker d'afficher le bac à événement ( voir la page Vue - Les Événements ).
Pour que la fonctionnalité "bac à événement" apparaisse dans l'interface, il faut absolument que ce module soit activé. |
S'il y a plusieurs configurations de WebUI présentes dans l'architecture, n'oubliez pas d'activer le module dans chaque configuration. Exemple :
|
Ce module fonctionne en paire avec le module : |
Les modules de type "event_container" sont des modules qui doivent être activés sur un module de type "webui", qu'on appellera le module parent.
webui" ), et ajouter dans le paramètre modules, le nom du module de type "event-manager-reader"."event_container"."webui" présents dans l'architecture, il ne faut pas oublier d'activer le module de type "event-manager-reader" dans la configuration de chacun d'eux."webui" ( voir la page Module WebUI )."event_container" sur un module de type "webui".Pour prendre en compte le changement de configuration, il faut redémarrer l'Arbiter :
L'exemple suivant :
event-manager-reader",WebUI", dont la configuration est dans le fichier /etc/shinken/module/webui.cfgdefine module {
[...]
modules Module 1, Module 2, Module 3, event-manager-reader
[...]
} |
Puis redémarrage de l'Arbiter
Pour pouvoir configurer un module de type "event-manager-reader", il faut faire un nouveau fichier de configuration grâce au fichier d'exemple fourni par défaut.
Mon-Module-event-manager-reader"Remplacer dans l'exemple le mot "Mon-Module-event-manager-reader"par le nom qui a été choisi.
Copier le fichier de définition du module d'exemple : /etc/shinken-user-example/configuration/daemons/brokers/modules/webui/modules/event_manager_reader/event_manager_reader-example.cfg dans le répertoire de définition des modules /etc/shinken/modules/ .
( Exemple : /etc/shinken/modules/Mon-Module-event-manager-reader.cfg )
|
Il faut vérifier que le fichier appartienne à l'utilisateur shinken et qu'il possède le droit d'édition. Si ce n'est pas le cas, il faut effectuer les commandes suivante :
chown -R shinken:shinken /etc/shinken/modules/Mon-Module-event-manager-reader.cfg chmod u+w /etc/shinken/modules/Mon-Module-event-manager-reader.cfg |
On change le nom du module en "Mon-Module-event-manager-reader" dans le fichier /etc/shinken/modules/Mon-Module-event-manager-reader.cfg
...
# ─── Module name [ Must be unique ] [ MANDATORY ] ───
# ─── ───
module_name Mon-Module-event-manager-reader
...
|
WebUI" correspondantDans notre exemple, on ajoute le module "Mon-Module-event-manager-reader" au module "WebUI" définie dans le fichier /etc/shinken/module/ma_webui.cfg
define module {
[...]
modules Module 1, Module 2, Module 3, Mon-Module-event-manager-reader
[...]
} |
Puis pour finir il faut redémarrer l'Arbiter pour que le Broker puisse prendre en compte ce nouveau module.
La configuration du module que Shinken livre par défaut se trouve dans le fichier /etc/shinken/modules/event_manager_reader.cfg.
#================================================================================
# event manager
#================================================================================
# Modules that can load this module:
# - WebUI (to display events data to the users)
# This module read event from database to show you in the WebUI
#================================================================================
define module {
# ┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐ #
# │ ────────────────────────────────────── MODULE IDENTITY ────────────────────────────────────── │ #
# └─────────────────────────────────────────────────────────────────────────────────────────────────────┘ #
# ─── Module name [ Must be unique ] [ MANDATORY ] ───
# ─── ───
module_name event-manager-reader
# ─── Module type [ Do not edit ] [ MANDATORY ] ───
# ─── ───
module_type event_container
# ┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐ #
# │ ──────────────────────────────────── DATABASE CONNECTION ──────────────────────────────────── │ #
# └─────────────────────────────────────────────────────────────────────────────────────────────────────┘ #
# ───────────────── MongoDB parameters ──────────────────────────────────────────────────────────────── #
# ─── MongoDB uri definition . You can find the mongodb uri syntax at ───
# ─── https://docs.mongodb.com/manual/reference/connection-string/ ───
# ───
# Default : mongodb://localhost/?w=1&fsync=false ───
# ─── ───
# uri mongodb://localhost/?w=1&fsync=false
# ─── Which database contains events data ───
# ───
# Default : event_container ───
# ─── ───
# database event_container
# ─── username/password to authenticate to MongoDB. ───
# ─── Both parameters must be provided for authentication to function correctly. ───
# ─── ───
# broker__module_webui__module_event_manager_reader__database__username
# ─── ───
# broker__module_webui__module_event_manager_reader__database__password
# ─── SSH tunnel activation to secure your mongodb connection ───
# ─── That will allow all mongodb to be encrypted & authenticated with SSH ───
# ───
# ... : Enable => 1 ( enable ssh tunnel ) ───
# Default : Disable => 0 ( disable ssh tunnel ) ───
# ─── ───
# use_ssh_tunnel 0
# ─── If the SSH connection goes wrong, then retry use_ssh_retry_failure time before_shinken_inactive ───
# ───
# Default : 1 ( try ) ───
# ─── ───
# use_ssh_retry_failure 1
# ─── SSH user to connect to the mongodb server. ───
# ───
# Default : shinken ───
# ─── ───
# ssh_user shinken
# ─── SSH keyfile to connect to the mongodb server. ───
# ───
# Default : ~shinken/.ssh/id_rsa ───
# ─── ───
# ssh_keyfile ~shinken/.ssh/id_rsa
# ─── SSH Timeout used to test if the SSH tunnel is viable or not, in seconds. ───
# ───
# Default : 10 ( seconds ) ───
# ─── ───
# ssh_tunnel_timeout 10
# ────────────── AutoReconnect Management ───────────────────────────────────────────────────────────── #
# ─── When MongoDB require you to reconnect ( For example, It can occur when a new PRIMARY is elected ───
# ─── in a MongoDB cluster ), it will raised the MongoDB AutoReconnect exception. ───
# ─── ───
# ─── How many try to reconnect before module go in error ───
# ───
# Default : 4 ( try ) ───
# ─── ───
# auto_reconnect_max_try 4
# ─── Time between each try ───
# ───
# Default : 3 ( seconds ) ───
# ─── ───
# auto_reconnect_sleep_between_try 3
# ─── NOTE: Change these values only if you have a MongoDB cluster and you change the ───
# ─── heartbeatTimeoutSecs of your MongoDB replica set ───
# ─── The value of auto_reconnect_max_try * auto_reconnect_sleep_between_try must be higher than ───
# ─── heartbeatTimeoutSecs in the rs.conf(); of your MongoDB replica set. ───
# ┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐ #
# │ ───────────────────────────────────── VISUALISATION UI ────────────────────────────────────── │ #
# └─────────────────────────────────────────────────────────────────────────────────────────────────────┘ #
# ─── Specify the max retries when the Visualisation UI can't communicate with the event_manager_reader ───
# ─── during the Excel export. ───
# ─── Increase this parameter when users encounter difficulties when generating the Excel export ───
# ─── of events. This will make the export more tolerant to network loss or database slowness, ───
# ─── or restart of the broker. ───
# ─── The value cannot be 0. ───
# ───
# Default : 2 ( try ) ───
# ─── ───
# broker__module_webui__module_event_manager_reader__events_export__max_retry 2
# ┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐ #
# │ ─────────────────────────────── DEFAULT NOTIFICATIONS OPTIONS ─────────────────────────────── │ #
# └─────────────────────────────────────────────────────────────────────────────────────────────────────┘ #
# ─── The parameters below allow users to change default configuration of notification for Events list ───
# ─────────── Sound Notification Parameters ─────────────────────────────────────────────────────────── #
# ─── Sound notification on new event ───
# ───
# Default : 0 => Disable ( Sound notification is not played ) ───
# ... : 1 => Enable ( Sound notification is played ) ───
# ─── ───
# broker__module_webui__module_event_manager_reader__default_notifications_settings__sound__enabled 0
# ─────────── Visual Notification Parameters ────────────────────────────────────────────────────────── #
# ─── Visual notification on new event ───
# ───
# Default : 0 => Disable ( Visual notification is not played ) ───
# ... : 1 => Enable ( Visual notification is played ) ───
# ─── ───
# broker__module_webui__module_event_manager_reader__default_notifications_settings__visual__blink__enabled 0
# ┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐ #
# │ ───────────────────────────────────── INTERNAL OPTIONS ────────────────────────────────────── │ #
# └─────────────────────────────────────────────────────────────────────────────────────────────────────┘ #
# ─── INTERNAL : DO NOT EDIT FOLLOWING PARAMETER WITHOUT YOUR DEDICATED SUPPORT ───
# ─── Broker idle time before considering that Shinken is inactive. ───
# ─── Use this if you have Broker loop time that exceeds 30 seconds ───
# ───
# Default : 30 ( seconds ) ───
# ─── ───
# time_before_shinken_inactive 30
} |
Il est possible de définir plusieurs instances de module de type "event-manager-reader" dans l'architecture Shinken.
|
Cette configuration s'effectue dans le fichier de configuration du module.
Pour se connecter à la base MongoDB utilisé pour le stockage des données, deux méthodes sont disponibles :
# ┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐ #
# │ ──────────────────────────────────── DATABASE CONNECTION ──────────────────────────────────── │ #
# └─────────────────────────────────────────────────────────────────────────────────────────────────────┘ #
# ───────────────── MongoDB parameters ──────────────────────────────────────────────────────────────── #
# ─── MongoDB uri definition . You can find the mongodb uri syntax at ───
# ─── https://docs.mongodb.com/manual/reference/connection-string/ ───
# ───
# Default : mongodb://localhost/?w=1&fsync=false ───
# ─── ───
# uri mongodb://localhost/?w=1&fsync=false
# ─── Which database contains events data ───
# ───
# Default : event_container ───
# ─── ───
# database event_container
# ─── username/password to authenticate to MongoDB. ───
# ─── Both parameters must be provided for authentication to function correctly. ───
# ─── ───
# broker__module_webui__module_event_manager_reader__database__username
# ─── ───
# broker__module_webui__module_event_manager_reader__database__password |
|
Par défaut, le module se connecte de manière directe à la base MongoDB pour y lire et écrire les données.
Dans la configuration du module, ceci correspond au paramètre "use_ssh_tunnel" à 0.
Cette méthode de connexion a pour avantage d'être facile à configurer au niveau de Shinken. Par contre, elle oblige à permettre l'accès à la base MongoDB au monde extérieur, et donc s'exposer à des problèmes de sécurité.
La sécurisation de la base MongoDB est bien sûr toujours possible ( voir la page Sécurisation des connexions aux bases MongoDB ) mais bien plus complexe à mettre en place. La méthode de connexion par SSH est ainsi préférable pour des raisons pratiques et de sécurité.
# ─── SSH tunnel activation to secure your mongodb connection ───
# ─── That will allow all mongodb to be encrypted & authenticated with SSH ───
# ───
# ... : Enable => 1 ( enable ssh tunnel ) ───
# Default : Disable => 0 ( disable ssh tunnel ) ───
# ───
# use_ssh_tunnel 0
# ─── If the SSH connection goes wrong, then retry use_ssh_retry_failure time before_shinken_inactive ───
# ───
# Default : 1 ( try ) ───
# ───
# use_ssh_retry_failure 1
# ─── SSH user to connect to the mongodb server. ───
# ───
# Default : shinken ───
# ───
# ssh_user shinken
# ─── SSH keyfile to connect to the mongodb server. ───
# ───
# Default : ~shinken/.ssh/id_rsa ───
# ───
# ssh_keyfile ~shinken/.ssh/id_rsa
# ─── SSH Timeout used to test if the SSH tunnel is viable or not, in seconds. ───
# ───
# Default : 10 ( seconds ) ───
# ───
# ssh_tunnel_timeout 10 |
Le module peut également se connecter par tunnel SSH à la base MongoDB, pour des raisons de sécurité.
En effet, le paramétrage de MongoDB permet de définir sur quelle interface réseau ce dernier écoute les requêtes.
En n'autorisant seulement interface réseau avec l'adresse 127.0.0.1, cela évite d'ouvrir la base au monde extérieur.
Dans la configuration de la base MongoDB ( /etc/mongod.conf ), il faut que le paramètre " bind_ip " est positionné pour n'écouter que sur l'interface locale :
bind_ip= 127.0 . 0.1Dans cette configuration, la base MongoDB écoute que sur l'interface réseau local, pour que le module se connecte, il faut passer par un tunnel SSH. Pour ce faire, activer les options suivantes :
|
# ────────────── AutoReconnect Management ───────────────────────────────────────────────────────────────
# ─── When MongoDB require you to reconnect ( For example, It can occur when a new PRIMARY is elected ───
# ─── in a MongoDB cluster ), it will raised the MongoDB AutoReconnect exception. ───
# ─── ───
# ─── How many try to reconnect before module go in error ───
# ───
# Default : 4 ( try ) ───
# ───
# auto_reconnect_max_try 4
# ─── Time between each try ───
# ───
# Default : 3 ( seconds ) ───
# ───
# auto_reconnect_sleep_between_try 3
# ─── NOTE: Change these values only if you have a MongoDB cluster and you change the ───
# ─── heartbeatTimeoutSecs of your MongoDB replica set ───
# ─── The value of auto_reconnect_max_try * auto_reconnect_sleep_between_try must be higher than ───
# ─── heartbeatTimeoutSecs in the rs.conf(); of your MongoDB replica set. |
Voir : Haute disponibilité de la base MongoDB (mise en place d'un cluster) |
Dans le cas de l'utilisation d'un cluster MongoDB, lorsque le membre Primaire devient inaccessible, une nouvelle élection est déclenchée, ce qui provoque une coupure temporaire de l'accès à la base.
Dans le but de ne pas interrompre le service, le module SLA va se reconnecter automatiquement au cluster MongoDB.
Pour ce faire, il va faire un nombre d'essais égaux au paramètre " auto_reconnect_max_try " avec une pause de X secondes entre chaque essai (correspondant au paramètre
"auto_reconnect_sleep_between_try").
Par défaut pour MongoDB, le temps maximum avant qu'un membre Primaire soit considéré comme indisponible et qu'une nouvelle élection ait lieu est de 10 secondes.
Voir : " heartbeatTimeoutSecs" donné par la commande rs . conf (); dans un shell de MongoDB.
|
Les valeurs par défauts du fichier laissent 12 secondes, ce qui est amplement suffisant avec la configuration par défaut de MongoDB.
Il est conseillé de ne pas modifier ces valeurs. |
# ┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐ #
# │ ───────────────────────────────────── VISUALISATION UI ────────────────────────────────────── │ #
# └─────────────────────────────────────────────────────────────────────────────────────────────────────┘ #
# ─── Specify the max retries when the Visualisation UI can't communicate with the event_manager_reader ───
# ─── during the Excel export. ───
# ─── Increase this parameter when users encounter difficulties when generating the Excel export ───
# ─── of events. This will make the export more tolerant to network loss or database slowness, ───
# ─── or restart of the broker. ───
# ─── The value cannot be 0. ───
# ───
# Default : 2 ( try ) ───
# ───
# broker__module_webui__module_event_manager_reader__events_export__max_retry 2 |
Le paramètre "broker__module_webui__module_event_manager_reader__events_export__max_retry" permet de configurer le nombre maximal de tentatives lorsque l'interface de visualisation ne peut pas communiquer avec le module event_manager_reader pendant l'export des données vers Excel.
Cela rendra les exports plus tolérants aux pertes de réseau ou aux lenteurs de la base de données, ou aux redémarrages du Broker.
|
Il est possible de choisir une notification audio ainsi qu'une notification visuelle lorsqu'il y a un nouvel événement.
Les valeurs de ces paramètres impacteront seulement les valeurs par défaut de la liste d'événements.
# ┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐ #
# │ ─────────────────────────────── DEFAULT NOTIFICATIONS OPTIONS ─────────────────────────────── │ #
# └─────────────────────────────────────────────────────────────────────────────────────────────────────┘ #
# ─── The parameters below allow users to change default configuration of notification for Events list ───
# ─────────── Sound Notification Parameters ─────────────────────────────────────────────────────────── #
# ─── Sound notification on new event ───
# ───
# Default : 0 => Disable ( Sound notification is not played ) ───
# ... : 1 => Enable ( Sound notification is played ) ───
# ───
# broker__module_webui__module_event_manager_reader__default_notifications_settings__sound__enabled 0
# ─────────── Visual Notification Parameters ────────────────────────────────────────────────────────── #
# ─── Visual notification on new event ───
# ───
# Default : 0 => Disable ( Visual notification is not played ) ───
# ... : 1 => Enable ( Visual notification is played ) ───
# ───
# broker__module_webui__module_event_manager_reader__default_notifications_settings__visual__blink__enabled 0 |
# ─────────── Sound Notification Parameters ─────────────────────────────────────────────────────────── #
# ─── Sound notification on new event ───
# ───
# Default : 0 => Disable ( Sound notification is not played ) ───
# ... : 1 => Enable ( Sound notification is played ) ───
# ───
# broker__module_webui__module_event_manager_reader__default_notifications_settings__sound__enabled 0 |
|
Pour changer le son joué lors des notifications de changements ( voir la page Changer le son des notifications utilisé par l'Interface de visualisation )
# ─────────── Visual Notification Parameters ────────────────────────────────────────────────────────── #
# ─── Visual notification on new event ───
# ───
# Default : 0 => Disable ( Visual notification is not played ) ───
# ... : 1 => Enable ( Visual notification is played ) ───
# ───
# broker__module_webui__module_event_manager_reader__default_notifications_settings__visual__blink__enabled 0 |
|
# ┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐ #
# │ ───────────────────────────────────── INTERNAL OPTIONS ────────────────────────────────────── │ #
# └─────────────────────────────────────────────────────────────────────────────────────────────────────┘ #
# ─── INTERNAL : DO NOT EDIT FOLLOWING PARAMETER WITHOUT YOUR DEDICATED SUPPORT ───
# ─── Broker idle time before considering that Shinken is inactive. ───
# ─── Use this if you have Broker loop time that exceeds 30 seconds ───
# ───
# Default : 30 ( seconds ) ───
# ───
# time_before_shinken_inactive 30 |
Ces paramètres sont dédiés au fonctionnement interne au module, il est fortement recommandé de ne pas les modifier sans le support dédié. |
|