Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Scroll Ignore
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue


Panel
titleSommaire

Table of Contents
stylenone



Description

Le module livedata-module-sla-provider est un module qui permet au module broker-module-livedata du Broker de fournir une API de consultation des données SLA archivées.

  • /api/v1/sla
  • Il récupère les données SLA présentes dans la base de données Shinken.

Pour plus de détails sur cette API, vous pouvez consulter sa documentation d'utilisation.

Activation

Le module livedata-module-sla-provider est un module qui peut être activé seulement sur le module broker-module-livedata.

  • L'activation du module s'effectue en ajoutant le nom de ce module dans le fichier de configuration du module broker-module-livedata.
  • Pour ce faire, ouvrez le fichier de configuration du broker-module-livedata. à l'emplacement /etc/shinken/modules/, et ajouter le nom de votre module "livedata-module-sla-provider".


Exemple: par défaut, nous livrons un module dont le nom est "livedata-module-sla-provider":

Code Block
languagebash
define DEMON-TYPE {
    [...]
    modules                   Module 1, Module 2, Module 3, livedata-module-sla-provider
    [...]
}


Pour prendre en compte le changement de configuration, redémarrer l'Arbiter:

Code Block
service shinken-arbiter restart


Info

Si vous avez plusieurs modules broker-module-livedata présents dans votre architecture, n'oubliez pas d'activer le module livedata-module-sla-provider dans la configuration de chacune d'elles.


Configuration

La configuration du module se trouve par défaut dans le fichier /etc/shinken/modules/livedata-module-sla-provider.cfg

  • Vous trouverez aussi systématiquement un exemple dans /etc/shinken-user-example/configuration/daemons/brokers/modules/broker-module-livedata/modules/livedata-module-sla-provider/livedata-module-sla-provider-example.cfg


Exemple de fichier de configuration


Code Block
languagejs
# ================================================================================
# livedata_module_sla_provider
#=============================================================================== #=
# -------------------------------        livedata_module_sla_provider        -------------------------------- #
# Modules that can load this module:
# - broker-module-livedata (to add new route to this module)
# This module is an API providing information on SLA of monitored elements
#=========================================================================================================== #
# --- Daemons that can load this module:                     

define module {

    # ┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐ #
    # │ ──────────────────────────────────────    MODULE IDENTITY    ────────────────────────────────────── │ #
    # └─────────────────────────────────────────────────────────────────────────────────────────────────────┘ #

    # ─── Module name [ Must be unique ]                                               ---
# ---   => broker-module-livedata  [ MANDATORY ] ───
    # ───                                                                 ---
# --- This module is an API providing information on SLA of moditored elements                     ───
    module_name     ---
#============================================================================================================ #

define module {

    # ==========================================   Module identity   ======================================== #
    # --- Module name [ Must be unique ]                                    livedata-module-sla-provider

    # ─── Module type [ Do not edit ]                                                         [ MANDATORY ] ───
    # ───                                                                                                   ───
    module_type                                         livedata_module_sla_provider

    # ┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐ #
    # │ ────────────────────────────────────    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                                              ───
    #                                                                                                       ───
    # livedata_module_sla_provider__database__uri         mongodb://localhost/?w=1&fsync=false

    # ─── Which database contains sla data                                                                  ───
    #                                                                                                       ───
    #           Default : shinken                                                                           ───
    #                                                                                                       ───
    # livedata_module_sla_provider__database__name        shinken

    # ─── SSH tunnel activation to secure your mongodb connection                                           ───
    # ─── That will allow all mongodb to be encrypted & authenticated with SSH                              ───
    #                                                                                                       ───
    #           Default : 0 => Disable ( disable ssh tunnel )                                               ───
    #           ...     : 1 => Enable  ( enable ssh tunnel )                                                ───
    #                                                                                                       ---───
    module_name         # livedata_module_sla_provider__use_ssh_tunnel        0

    # ─── SSH user to connect to the mongodb server.                              livedata-module-sla-provider

    # --- Module type [ Do not edit ]              ───
    #                                                     ---
    module_type                                       livedata_module_sla_provider


     # ======================================================================================================= # ───
    # ------------------------------------           Default : shinken                            SLA Database connexion   -------------------------------------- #
                    # ------------------------------------------------------------------------------------------------------- #
                         ───
    # =================  Mongo parameters  ===================                                                                         #
	#                              ───
    # livedata_module_sla_provider__ssh_user              shinken

    # ─── SSH keyfile to connect to the mongodb server.                                           #
     # --- Mongodb uri definition 																			--- ───
    # >>> DEFAULT : mongodb://localhost/?w=1&fsync=false                                                              ---
    livedata_module_sla_provider__database__uri                    		mongodb://localhost/?w=1&fsync=false
	
	# --- Which database contains sla data           												───
    #     ---
    # >>> DEFAULTDefault : shinken~shinken/.ssh/id_rsa                                                              ───
    #                 ---
    livedata_module_sla_provider__database__name             			shinken

    # --- if the module encounter an issue to connect on the database, it will retry X times before         ---
    # --- considering it as a connexion error                           ───
    # livedata_module_sla_provider__ssh_keyfile           ~shinken/.ssh/id_rsa

    # ─── SSH Timeout used to test if the SSH tunnel is viable or not,  ---
in seconds.    # >>> DEFAULT : 2                  ───
    #                                                                 ---
    # livedata_module_sla_provider__database__retry_connection_X_times_before_considering_an_error	  2

	# --- If the module face a connection error to the database, it restart the connection process                                  ---───
    # --- after X seconds           Default : 10 ( seconds )                                                                    ───
    #           ---
       # >>> DEFAULT : 10                                  												     ---
    # livedata_module_sla_provider__database__wait_X_seconds_before_reconnect                           10

	
    # ========  SSH Tunnel for Database connection───
  ==========  # livedata_module_sla_provider__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                                               ───
    #        #
    # --- SSH tunnel activation to securize your mongodb connection  										---
	# --- That will allow all mongodb to be encrypted & authentificated with SSH 							---
    # >>> Disabled  : 0 ( DEFAULT )                         												 ---
    # --- Enabled   : 1                  ───
    #           Default : 4  												---
    # livedata_module_sla_provider__use_ssh_tunnel( number of try )            	                             0
  
    # --- SSH user to connect to the mongodb server.       													---───
    #        >>> DEFAULT : shinken                                 												 ---
        # livedata_module_sla_provider__ssh_user                	                             shinken
     ───
    # --- SSH keyfile to connect to the mongodb server. livedata_module_sla_provider__database__retry_connection_X_times_before_considering_an_error 4

    # ─── Time between each try       												---
    # >>> DEFAULT : ~shinken/.ssh/id_rsa                       												 ---
    # livedata_module_sla_provider__ssh_keyfile             	                     ───
    #    ~shinken/.ssh/id_rsa
  
    # --- SSH Timeout used to test if the SSH tunnel is viable or not, in seconds                           ---
    # >>> DEFAULT : 10                                          ───
    #           Default : 3 ( seconds )                        ---
    # livedata_module_sla_provider__ssh_tunnel_timeout  		                             10
  

    # ======================================================================================================= #   ───
    # ----------------------------------------                                   SLA calculation   ----------------------------------------- #
                    # ------------------------------------------------------------------------------------------------------- #
	#                                               ───
    # livedata_module_sla_provider__database__wait_X_seconds_before_reconnect 3

    # ─── NOTE: Change these values only if you have a MongoDB cluster and you change the                   ───
    # ───       heartbeatTimeoutSecs of your MongoDB replica set                     #
    # --- Some status can impact              ───
    # ───       The value of                                                ---
    # ---     Positively ( counted as OK / UP ) 										              ───
    # ─── ---
	# ---     Negatively ( counted as CRITICAL / DOWN ) retry_connection_X_times_before_considering_an_error * wait_X_seconds_before_reconnect      ───
    # ───       must be higher than heartbeatTimeoutSecs in the rs.conf(); of your MongoDB replica set.     ───

    # ┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐ #
    #  ──────────────────────────────────────    SLA CALCULATION    ──────────────────────────────────────  ---#
    # --- └─────────────────────────────────────────────────────────────────────────────────────────────────────┘ #

    or# not─── impact the SLANo_data periods ( is"Missing notdata" counted,and meaning"Shinken theinactive" periodstatus of) study is reduced by the period  ---
    # ---     that is not counted )            ───
    #                                                         ---
    # ---                                         ───
    #           Default : include => Only status    is considered. "Missing data" and "Shinken inactive"       ───
    #                 ---
    # --- This configuration aims at giving Shinken administrators a way tostatus configure 						---
	# --- howare counted negatively in the SLA.  are calculated. 																		---
  
    # ========  No_data periods ( "Missing data" and "Shinken inactive" status )  ==========      ───
    #        #
	#   ...     : exclude => No_data are not counted from SLA considered period.                    ───
    #           ...     : ok      => No_data are considered as UP periods.                                  #───
    # >>>    include: ( DEFAULT ) Only status is considered. 												 ---
	# --- 	    note: "Missing data" and "Shinken inactive" status are counted negatively in the SLA. 		---
    # ---    exclude:  No_data are not counted from SLA considered period									--- 
    # ---    ok:       No_data are considered as UP periods 												---
    # livedata_module_sla_provider__no_data_period        		                ───
    # livedata_module_sla_provider__no_data_period        include
  
}



Détails des sections composant le fichier de configuration

Identification du module

Il est possible de définir plusieurs instances de module de type livedata-module-sla-provider dans votre architecture Shinken.

  • Chaque instance devra avoir un nom unique.


NomTypeUnitéDéfautCommentaire


Code Block
module_name 


Texte---livedata-module-sla-provider

Nous vous conseillons de choisir un nom en fonction de l'utilisation du module pour que votre configuration soit simple à maintenir.

Doit être unique.


Code Block
module_type 


Texte---livedata_module_sla_providerNe peut être modifié.



Accès à la base MongoDB

Cette configuration s'effectue dans le fichier de configuration du module. 

Pour se connecter à la base MongoDB utilisée pour le stockage des données, 2 méthodes sont disponibles:

  • Connexion directe : Par défaut, mais non sécurisée.
  • Tunnel SSH : Shinken se connecte à la base MongoDB au travers d'un module SSH pour plus de sécurité
Configuration des paramètres communs aux deux méthodes


Code Block
languagejs
themeConfluence
define module {

    [...]     

	# =================  Mongo parameters  ===================                                                #
    #                                                                                                         #
    # --- Mongodb uri definition                                                                            ---
    # >>> DEFAULT : mongodb://localhost/?w=1&fsync=false                                                    ---
    livedata_module_sla_provider__database__uri                  mongodb://localhost/?w=1&fsync=false
     
    # --- Which database contains sla data                                                                  ---
    # >>> DEFAULT : shinken                                                                                 ---
    livedata_module_sla_provider__database__name                 shinken
 
    # --- if the module encounter an issue to connect on the database, it will retry X times before         ---
    # --- considering it as a connexion error                                                               ---
    # >>> DEFAULT : 2                                                                                       ---
    # livedata_module_sla_provider__database__retry_connection_X_times_before_considering_an_error    3
 
    # --- If the module face a connection error to the database, it restart the connection process          ---
    # --- after X seconds                                                                                   ---
    # >>> DEFAULT : 10                                                                                      ---
    # livedata_module_sla_provider__database__wait_X_seconds_before_reconnect                  10     

	[...]

}



NomTypeUnitéDéfautCommentaire


Code Block
livedata_module_sla_provider__database_uri


TexteURLmongodb://localhost/?w=1&fsync=falseURL mongo de connexion à la base de données cf. https://docs.mongodb.com/manual/reference/connection-string/


Code Block
livedata_module_sla_provider__database__name


Texte---shinkenNom de la base de données où sont stockés les données SLA


Code Block
livedata_module_sla_provider__database__retry_connection_X_time_before_considering_an_error 


EntierNombre de tentative2Si le module rencontre un problème de connexion, cette valeur indique le nombre de fois il essaye de se reconnecter avant de considérer qu'il y a une erreur de connexion.


Code Block
livedata_module_sla_provider__database__reconnect_to_database_after_X_seconds


EntierSeconde10Une fois que le module a considéré qu'il y avait une erreur de connexion, il va essayer de refaire le processus de connexion après ces X secondes.


Connexion directe au serveur MongoDB

Par défaut, le module se connecte de manière directe à la base MongoDB, définie avec les paramètres communs listés ci-dessus, car le paramètre "use_ssh_tunnel" est à 0.

Connexion par SSH au serveur MongoDB


Code Block
languagejs
themeConfluence
define module {

    [...]   
  
	# ========  SSH Tunnel for Database connection  ==========                                                #
    #                                                                                                         #
    # --- SSH tunnel activation to securize your mongodb connection                                         ---
    # --- That will allow all mongodb to be encrypted & authentificated with SSH                            ---
    # >>> Disabled  : 0 ( DEFAULT )                                                                         ---
    # --- Enabled   : 1                                                                                     ---
    # livedata_module_sla_provider__use_ssh_tunnel                                           0
   
    # --- SSH user to connect to the mongodb server.                                                        ---
    # >>> DEFAULT : shinken                                                                                 ---
    # livedata_module_sla_provider__ssh_user                                                 shinken
      
    # --- SSH keyfile to connect to the mongodb server.                                                     ---
    # >>> DEFAULT : ~shinken/.ssh/id_rsa                                                                    ---
    # livedata_module_sla_provider__ssh_keyfile                                              ~shinken/.ssh/id_rsa
   
    # --- SSH Timeout used to test if the SSH tunnel is viable or not, in seconds                           ---
    # >>> DEFAULT : 10                                                                                      ---
    # livedata_module_sla_provider__ssh_tunnel_timeout                                       10

	[...]

}


Par défaut, le module se connecte de manière directe à la base MongoDB pour y lire les données.

Dans la configuration du module, on sait que la connexion se fait de manière directe lorsque le paramètre "use_ssh_tunnel" est à 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 Sécurisation des connexions aux bases MongoDB ), mais bien plus complexe à mettre en place.

La méthode de connexion par SSH est donc préférable pour des raisons pratiques et de sécuritées.


NomTypeUnitéDéfautCommentaire


Code Block
livedata_module_sla_provider__use_ssh_tunnel


Booléen---0Utiliser un tunnel SSH pour accéder au serveur de base de données


Code Block
livedata_module_sla_provider__ssh_user


Texte---shinkenUtilisateur distant à utiliser pour la connexion SSH


Code Block
livedata_module_sla_provider__ssh_keyfile


Texte---~shinken/.ssh/id_rsaClé SSH locale à utiliser pour se connecter au serveur distant


Code Block
livedata_module_sla_provider__ssh_tunnel_timeout


EntierSecondes10Temps maximal en seconde pour établir le tunnel de connexion vers la base de donnée MongoDB


Paramétrage des états Données manquantes ( Missing data ) et Shinken inactif ( Shinken inactive )


Code Block
define module {

	[...]  	

	# ======================================================================================================= #
    # ----------------------------------------    SLA calculation   ----------------------------------------- #
    # ------------------------------------------------------------------------------------------------------- #
    #                                                                                                         #
    # --- Some status can impact                                                                            ---
    # ---     Positively ( counted as OK / UP )                                                             ---
    # ---     Negatively ( counted as CRITICAL / DOWN )                                                     ---
    # ---     or not impact the SLA ( is not counted, meaning the period of study is reduced by the period  ---
    # ---     that is not counted )                                                                         ---
    # ---                                                                                                   ---
    # --- This configuration aims at giving Shinken administrators a way to configure                       ---
    # --- how the SLA are calculated.                                                                       ---
   
    # ========  No_data periods ( "Missing data" and "Shinken inactive" status )  ==========                  #
    #                                                                                                         #
    # >>>    include: ( DEFAULT ) Only status is considered.                                                ---
    # ---       note: "Missing data" and "Shinken inactive" status are counted negatively in the SLA.       ---
    # ---    exclude:  No_data are not counted from SLA considered period                                   ---
    # ---    ok:       No_data are considered as UP periods                                                 ---
    # livedata_module_sla_provider__no_data_period                                           include
 	
	[...] 

}


Les états Données manquantes ( Missing data ) et Shinken inactif ( Shinken inactive ) ont été regroupés dans un paramètre. Ce paramètre correspond à la période durant laquelle Shinken n'a pas effectué les vérifications pour un check (plateforme Shinken éteinte, ou vérification du check désactivé grâce aux Périodes de temps). Le statut de ces checks est donc Données manquantes ( "Missing data" ) ou Shinken inactif ( "Shinken inactive" ).


NomTypeUnitéDéfautCommentaire


Code Block
livedata_module_sla_provider__no_data_period


Texte---include
  • include : On considère que si l'on ne peut pas savoir si le service est rendu, c'est qu'il n'est pas rendu

  • exclude : On considère que l'état de la supervision (de Shinken) n'impacte pas le taux de disponibilité

  • ok : On considère que même si la supervision ne l'a pas confirmé, le service est rendu