Versions Compared

Key

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

Introduction

La fonctionnalité de duplication des

checks

Checks par donnée de l'

hôte

Hôte (ou "duplicate foreach") permet de pouvoir dupliquer des checks sur un même hôte grâce à une donnée dédiée à cet effet.

En effet, si un hôte héberge plusieurs services de même type (par exemple, plusieurs bases de données) il peut être intéressant de dupliquer toute la configuration de vérification pour chacun de ces services, en leur dédiant à chacun des checks.

Un template donné ne s'applique qu'à un hôte dans son ensemble et ne peut pas y être dupliqué. Pour pouvoir dupliquer les

vérifications

checks d'un hôte, il faut utiliser des checks ayant la propriété "Duplicate for each

host data", et

" (Dupliqué pour chaque valeur de la Donnée de l'hôte).

Nous verrons dans ce chapitre comment configurer la façon dont ils seront dupliqués sur cet hôte

: quelle partie sera copiée (commande

,

intervalle...) et quelle partie sera spécifique à chaque check (identifiants, port de connexion...).

 

Structure de la donnée duplicate Foreach:

  • KEY: Correspond à la clé, appelé $KEY$.
     

  • VALUE: Correspond à un paramètre, appelé $VALUE$ si il y en a qu'un ou $VALUEx$, avec x allant de 1 à 16.
    Info

    Remarque: L'utilisation de ces variables est possible dans une commande. Il faut utiliser le délimiteur $ au début et fin de chaque variable pour l'appeler.

    Exemple des structures possible:

    Structure simple (sans paramètre):

    Nombre de générationStructure simpleExemple1
    Code Block
    themeMidnight
    KEY
    Code Block
    DB1

     

     

    2
    Code Block
    themeMidnight
    KEY-name1,KEY-name2
    Code Block
    DB1,DB2
    n+1
    Code Block
    languagejs
    themeMidnight
    KEY-name-n

     

     

    Info
    iconfalse
    Remarque: Cette structure peu être répéter autant de fois que nécessaire. Chaque structure correspond à une génération de check. (Cf. Structure avancée ci-dessous)

     

     

    et notamment comment obtenir des données spécifiques à chaque copie, qui seront récupérées dans cette Macro (donnée) de Duplicate for each ou via les arguments par défaut.

    Fonctionnement

    Les checks

     

     

    Pour qu'un check soit dupliqué, il doit remplir plusieurs conditions. Prenons le cas d'une commande qui prend deux arguments tel que le check_dummy.

     

     

     

    Voici comment le check ou check template sera défini :

    • Le nom du check doit contenir $KEY$ (1). Cette macro sera remplacée par les différentes valeurs de la donnée de Duplicate for each de l'hôte, de manière à ne pas générer de collision de nom.
    • (Optionnel) Le champ "Args" permet de passer des arguments séparés entre !
      Pour des arguments lors d'un Duplicate for each, les macro sont $VALUEx$ (2)

    Structure avancée:

    Nombre de générationStructure avancéeExemple1
    Code Block
    themeMidnight
    KEY$(value1)$
    Code Block
    DB1$(2222)$
    2
    Code Block
    themeMidnight
    KEY-name1$(value1)$,KEY-name2$(value1,value2)$

     

     

    Code Block
    DB1$(2222)$,DB2$(3333,ssl)$
    n+1

     

     

    Code Block
    DB1$(22)$,DB2$(3000)$,DB2$(1521)$

     

     

    Fonctionnement

    Les checks

    Pour qu'un check soit dupliqué, il doit remplir plusieurs conditions.
    • Le champ "Duplicate for each host data" (13) doit contenir contenir le nom d'une donnée  de la donnée qui sera définie dans l'hôte. C'est la donnée qui servira à dupliquer le check.
    • Le nom du check doit contenir $KEY$. Cette macro sera remplacée par les données de l'hôte, de manière à ne pas générer de collision de nom.
    • (Optionnel) Le champ "Duplicate for each default arguments" (4) permet de spécifier les valeurs par défaut pour les macros $VALUEn$. Exemple de syntaxe : $(ma_valeur1)$$(ma_valeur2)$
      Note : si la commande ne prend qu'un seul argument, on peut définir l'argument par défaut avec : ma_valeur sans les $ 

     

    Le check peut donc Le check peut alors utiliser, dans sa configuration, $KEY$, et $VALUE1$ à $VALUE16$.

    Ces macros seront remplacées de façon spécifique à chaque copie.

     

     Le champ "Default value" (2) permet de spécifier les valeurs par défaut pour les macros $VALUEn$.

     

     

    Panel

    Image Removed

     
    titleCommande d'exemple "cmd-dummy"

    Image Added

    Panel

    Image Added

    L'hôte

     

     

     

    Pour que l'hôte duplique ses checks, il doit alors renseigner les valeurs à dupliquer, sous la forme de données.via les différentes valeurs de la donnée Duplicate for each de l'hôte.

     

    Un hôte ayant des checks à dupliquer qui lui étant sont attachés, doit obligatoirement fournir des valeurs , et les dans sa donnée de Duplicate for each. Les données apparaîtront en Warning si elle sont manquantes.

     

     

     

    Panel

    Image Added

    Image Removed

     

    Les valeurs renseignées La donnée renseignée dans la donnée doit doivent définir une ou plusieurs clés séparées par des virgules comme montré dans l'exemple.
    Suivant chaque clé, les arguments sont passés entres $( et )$ de manière consécutives.

    Dès que la saisie du champ est terminée, le nombre de checks de l'hôte est mis à jour.

    Voici un exemple de Donnée Duplicate For Each : ok,warning$(1)$$(Dummy WARNING)$,critical$(2)$$(Dummy CRITICAL)$,unknown$(3)$$(Dummy UNKNOWN)$

    Dans cet exemple, la première valeur/clé "ok" n'a aucun argument défini, la valeur par défaut des arguments sera alors utilisée, à savoir, 2 arguments dans notre exemple : $(0)$$(Dummy OK)$
    Pour la valeur/clé  "warning", cette clé a deux arguments "1" et "Dummy WARNING".

    Plus de détails sont dans la prochaine section "Les valeurs".

    Panel

    Image Added

     

     

    PanelImage Removed

    L'onglet check permet de vérifier le résultat de la duplication.

    Les checks obtenus ont des configurations identiques. Pour pouvoir leur donner des données spécifiques, il faudra utiliser les valeurs.

    On voit ici que le check a bien été dupliqué pour les 4 valeurs de données Duplicate for each.

    Pour chaque duplication, les arguments sont bien récupérés pour le passage dans la commande.

    Panel

    Image Added

    Panel
    titleEvaluation de commande

    Image AddedImage Removed

    Les valeurs

     

    Pour que chaque check puisse exécuter une vérification différente sur l'hôte, il est possible de paramétrer spécifiquement chaque copie.

    Pour cela, l'hôte peut passer des arguments de duplication à chaque copie sous la forme de valeurs . La syntaxe dans la donnée de Duplicate ForEach.

     

     

     

    Par exemple, pour une commande qui demande deux arguments, la syntaxe de la donnée de Duplicate for each est la suivante :

    Dans cet example, chaque copie aura accès à trois valeurs, $VALUE1$, $VALUE2$, et $VALUE3$.

     

    Code Block
    themeMidnight
    red$(255,0,0(IndianRed)$$(CD5C5C)$,green$(0,255,0ForestGreen)$,blue$(0,0,255)$blue

     

    Notez que la valeur par défaut des arguments du Duplicate for each default_value (qui contiendra 2 valeurs) prendra place uniquement pour blue. 

    CheckMacroValeur
    Check-Duplicate-red

    $VALUE1$

    $VALUE2$

    $VALUE3$

    IndianRed

    CD5C5C

    255

    0

    0

    Check-Duplicate-green

    $VALUE1$

    $VALUE2$

    ForestGreen

    $VALUE3$
     

    0

    255

    0
    $VALUE2$Aucune valeur
    Check-Duplicate-blue

    $VALUE1$

    $VALUE2$

    $VALUE3$

    0

    0

    255

    default_value1

     
     
    $VALUE2$

     

     

    default_value2

    Syntaxe des fichiers de configuration

    Voici dans notre exemple, la définition d'un check duplicate for each qui va s'appliquer à un modèle d'hôte:

     

    Code Block
    define service {
    
    
       service_description          check-dummy-$KEY$
       register                     0
       host_name                    testpack-host-tpl
       use                          check-dummy-tpl
       duplicate_foreach            _STATUS
       default_value                $(0)$$(Dummy OK)$
    }
    
    
    define host {
        name                testpack-host-tpl
        check_command       check-host-alive
        check_interval      1
        retry_interval      1
        register            0
        _STATUS             ok,warning$(1)$$(Dummy WARNING)$,critical$(2)$$(Dummy CRITICAL)$,unknown$(3)$$(Dummy UNKNOWN)$
    }
    
    

    Description

    La fonctionnalité duplicate foreach s'active directement depuis le check que l'on souhaite générer plusieurs fois. Deux champs sont à renseigner:

     

    Duplicate for Each:

    Ce champ correspond au nom de la donnée de l'hôte ou cluster à utiliser.

    Une fois le nom de la donnée défini, Shinken interprète au niveau de l'hôte ou cluster: Crée un check pour chaque valeur de cette donnée, sous la forme KEY1,KEY2,KEY3

        • Info
          iconfalse

          remarque: Le nom du check doit contenir un $KEY$ pour l'identifier de façon unique.

    Duplicate for Each default:

    Ce champs correspond à la valeur par défaut des arguments de la donnée utiliser pour le "duplicate foreach", soit le nom de la donnée renseigné dans le champ "duplicate foreach".

        • Info
          iconfalse
          remarque: Si il y a plusieurs arguments par défaut, utiliser la virgule comme séparateur

     

    Utilisation 

    En partant du postulat d'avoir 3 base de données, DB1DB2 et DB3 avec un port par défaut à 1521 et une connexion sécurisée en ssl. Le nom de la donnée de l’hôte/cluster choisi pour le "duplciate foreach" est DATABASES.

    Sans les valeurs des arguments par default:

    Page d'édition d'un check:

    (1) Renseignez le champ "duplciate foreach" avec DATABASES.

    Page d'édition d'un hôte/cluster:

    (2) Ajouter la donnée DATABASES avec pour valeur: DB1$(1521,ssl)$,DB2$(1521,ssl)$,DB3$(1521,ssl)$

     

    Avec les valeurs des arguments par default:

    Page d'édition d'un check:

    (1) Renseignez le champ "duplciate foreach" avec DATABASES.

    (2) Renseignez la valeur par default des arguments du champ "duplciate foreach" avec 1521,ssl.

    Page d'édition d'un hôte/cluster:

    (3) Ajouter la donnée DATABASES avec pour valeur: DB1,DB2,DB3

          • Info
            iconfalse

            Remarque: Définir un port particulier sur DB2 donnerait: Ajouter la donnée DATABASES avec pour valeur DB1,DB2$(2222)$,DB3