Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmlfalse
Panel
titleSommaire

Table of Contents
stylenone

Concept

Un Tagger basé sur des expressions régulières s'applique les éléments suivants issus de l'import des sources :

  • les hôtes,
  • les clusters,
  • les modèles d'hôtes ou
  • les modèles de clusters.

Il utilise une expression régulière ( regexp ) sur une propriété ou une donnée pour sélectionner les éléments auxquels appliquer la modification configurée pour le Tagger.

Il est possible de définir sur un Tagger une action qui va utiliser une plage d’adresses IP afin d'éditer automatiquement une propriété des hôtes, clusters, modèles d'hôtes et modèles de clusters issus de l'import des sources en fonction de la valeur d'une donnée ou d'une propriété. 

  • Cette action est portée par un module de type sync-regexp-tag, que vous aurez besoin d'ajouter sur votre Tagger.
  • L'intérêt est, par exemple, d'ajouter le modèle d'hôte Bordeaux sur les hôtes dont le nom commence par "bdx" 
Un cas d'usage classique est de rajouter/modifier des modèles d'hôtes/clusters sur les éléments s'ils respectent une règle de nommage sur le nom  
  • ).


L'activation d'un Tagger de ce module se fait en trois 3 étapes : 

  1. Définir un Tagger qui utilise un le module de type sync_-regexp_tag ( ex : /etc/shinken/taggers/regexp-tags.cfg ).
  2. Configurer les règles du module ( ex : /etc/shinken/modules/sync-regexp-tag.cfg ).
  3. Déclarer le Tagger dans le Synchronizer  (/etc/shinken/synchronizers/synchronizer-master.cfg ).

Définition du tagger

  1. -tag.
  2. L'ajouter au Tagger qui exécutera cette règle.
    1. Si vous n'avez pas déjà de Tagger défini, il faut le mettre en place ( voir la page Definition des taggers ).
  3. Redémarrer le Synchroniser pour que cette modification soit prise en compte.

Définition du module

La configuration des modules La configuration des Taggers doit être placée dans le dossier /etc/shinken/taggersmodules/

Le Tagger basé sur des expressions complexes livré par Shinken : /etc/shinken/taggers/regexp-tags.cfg.

Un exemple de fichier de configuration est disponible :

  • Un exemple de fichier de configuration est disponible ici : 
  •  /etc/shinken-user-example/configuration/daemons/synchronizers/
taggers
  • modules/sync-regexp-
tags
  • tag/MY-MODULE-regexp-tag-
tags.cfg

Exemple de fichier de configuration

Code Block
languagejs
themeConfluence
define tagger {
# Shinken Enterprise. Lines added by import core. Do not remove it, it's used by Shinken Enterprise to update your objects if you re-import them.
    _SE_UUID             core-tagger-f69a7f125adc11e5ae66080027f08538
    _SE_UUID_HASH        d183bc0dd8dba3d7a98725f676d7283c
# End of Shinken Enterprise part


    tagger_name         regexp-tags
    order               1

    modules             sync-regexp-tag


    description         This tagger will tag host based on the host_name
}

Pour prendre en compte le changement de configuration, il faut redémarrer le Synchronizer :

Code Block
languagetext
themeEmacs
service shinken-synchronizer restart

Détails des sections composant le fichier de configuration

Il est possible de définir plusieurs instances de Taggers dans l'architecture Shinken.

Chaque instance devra avoir un nom unique.

Scroll Title
anchorparameter_cfg
title
NomTypeUnitéDéfautCommentaire
No Format
tagger_name
Texte------

Valeur obligatoire

Nom du Tagger.

Le paramètre doit être unique parmi les autres taggers.

Caractères interdits :
les signes inférieur ou supérieur ( < ou > ), les guillemets ( ' ou " ).

No Format
order
Entier------

Valeur obligatoire

L'ordre d'application des Taggers. Les Taggers sont exécutés les uns à la suite des autres dans l'ordre croissant de la propriété order.

Warning

Si plusieurs Taggers qui s'enchaînent modifient la même propriété, il est possible qu'un Tagger annule les modifications de précédents Taggers.

Attention donc à l'ordre d'exécution des Taggers

No Format
modules 
Texte------

Valeur obligatoire

Nom du module utilisé par le Tagger.

No Format
description
Texte------

Une description du Tagger affichée dans l'Interface de Configuration.

Configuration du module

La configuration des modules doit être placée dans le dossier /etc/shinken/modules/

La configuration du module livré par Shinken se trouve dans le fichier  /etc/shinken/modules/sync-regexp-tag.cfg

  • example.cfg
  • Copier cet exemple et adapter le à votre besoin ( voir plus bas, la description des différents paramètres ).

    Code Block
    languagetext
    themeEmacs
    cp /etc/shinken-user-example/configuration/daemons/synchronizers/modules/sync-regexp-tag/MY-MODULE-regexp-tag-example.cfg /etc/shinken/modules/MY-MODULE-regexp-tag.cfg


    Nous vous recommandons d'intégrer, dans le nom du module, un rappel du type du module. C'est plus simple en gestion ( ex :  MY-MODULE-regexp-tag.cfg ).

  • Renommer le module ( paramètre module_name ).

  • Éditer les paramètres pour définir l'action du module :
    • Les hôtes à impacter.
    • La nature de l'action.

Exemple de fichier de configuration

Cette exemple ajoute 

  • le modèle d'hôte Bordeaux sur les hôtes à la fin des modèles d'hôtes utilisé par chaque hôte,
  • dont le nom commence par : bdx


Code Block
languagejs
themeConfluence
#===============================================================================
# ip-tag-*
#===============================================================================
# Daemons that can load this module:
# - synchronizer (into a tagger object)
# This module add new templates into hosts objects based on their hostname (regexp check)
#===============================================================================


define module{

    #======== Module identity =========
    # Module name. Must be unique
    module_name     MY-MODULE-regexp-tag

    # Module type (to load module code). Do not edit.
    module_type     sync-regexp-tag

    #======== Regexp definition and objects edition =========
    # matched_prop: which object property to check the regexp
    matched_prop    host_name

    # regexp to try to detect
    matched_regexp  ^bdx.*

    # property: which property to edit on the hosts. Default: use   (templates definitions)
    property               use

    # method: how to edit the host "property". Several methods are available:
    # - replace = put the value if not another one is in place
    # - append  = add the value at the END
    # - prepend = add the value at the BEGINING
    # - set     = just the value, erase the previous value set by other tagger or source.
    method                 append

    # value:  which value to set on the property
    value                  Bordeaux

}

Détails des sections composant le fichier de configuration

Identification du module

Code Block
languagejs
themeConfluence
#======== Module identity =========
# Module name. Must be unique
module_name     MY-MODULE-regexp-tag

# Module type (to load module code). Do not edit.
module_type     sync-regexp-tag



Il est possible de définir plusieurs instances de module sync-regexp-tag dans l'architecture Shinken.

  • Chaque instance devra avoir un nom unique.


Scroll Title
anchorparameter_cfg
title
NomTypeUnitéDéfautCommentaire
No Format
module_name



Texte------

Valeur obligatoire

Nom du Module.

Doit être unique parmi tous les modules


No Format
module_type
Texte---sync-regexp-tag

Ne pas modifier.




Configuration du module

La configuration des modules doit être placée dans le dossier /etc/shinken/modules/

La configuration du module livré par Shinken se trouve dans le fichier  /etc/shinken/modules/sync-regexp-tag.cfg

Un exemple de fichier de configuration est disponible ici :/etc/shinken-user-example/configuration/daemons/synchronizers/modules/sync-regexp-tag/sync-regexp-tag-example.cfg


Exemple de fichier de configuration

Code Block
languagejs
themeConfluence
#===============================================================================
# ip-tag-*
#===============================================================================
# Daemons that can load this module:
# - synchronizer (into a tagger object)
# This module add new templates into hosts objects based on their hostname (regexp check)
#===============================================================================


define module{

    #======== Module identity =========
    # Module name. Must be unique
    module_name     MY-MODULE-regexp-tag

    # Module type (to load module code). Do not edit.
    module_type     sync-regexp-tag

    #======== Regexp definition and objects edition =========
    # matched_prop: which object property to check the regexp
    matched_prop    host_name

    # regexp to try to detect
    matched_regexp  ^bdx.*

    # property: which property to edit on the hosts. Default: use   (templates definitions)
    property               use

    # method: how to edit the host "property". Several methods are available:
    # - replace = put the value if not another one is in place
    # - append  = add the value at the END
    # - prepend = add the value at the BEGINING
    # - set     = just the value, erase the previous value set by other tagger or source.
    method                 append

    # value:  which value to set on the property
    value                  Bordeaux

}

Pour prendre en compte le changement de configuration, il faut redémarrer le Synchronizer :


Code Block
languagetext
themeEmacs
service shinken-synchronizer restart

Détails des sections composant le fichier de configuration

Identification du module

Code Block
languagejs
themeConfluence
#======== Module identity =========
# Module name. Must be unique
module_name     MY-MODULE-regexp-tag

# Module type (to load module code). Do not edit.
module_type     sync-regexp-tag  

Il est possible de définir plusieurs instances de module de type sync-regexp-tag dans l'architecture Shinken.

Chaque instance devra avoir un nom unique.


Scroll Title
anchorparameter_cfg
title
NomTypeUnitéDéfautCommentaire
No Format
module_name 
Texte------

Valeur obligatoire

Nom du module.

Doit être unique parmi les modules.

No Format
module_type 
Texte---sync-regexp-tagNe pas modifier.

Définition des hôtes où l'action de modification sera appliquée ( plage d'adresses IP et exclusion )

Code Block
languagejs
themeConfluence
#======== Regexp definition and objects edition =========
# matched_prop: which object property to check the regexp
matched_prop    host_name

# regexp to try to detect
matched_regexp  ^bdx.*
Un exemple de fichier de configuration est disponible ici :/etc/shinken-user-example/configuration/daemons/synchronizers/modules/sync-regexp-tag/sync-regexp-tag-example.cfg

Exemple de fichier de configuration

Code Block
languagejs
themeConfluence
#===============================================================================
# ip-tag-*
#===============================================================================
# Daemons that can load this module:
# - synchronizer (into a tagger object)
# This module add new templates into hosts objects based on their hostname (regexp check)
#===============================================================================


define module{

# Shinken Enterprise. Lines added by import core. Do not remove it, it's used by Shinken Enterprise to update your objects if you re-import them.
    _SE_UUID             core-module-be8578085adb11e59c43080027f08538
    _SE_UUID_HASH        05673d95f7f69b0c1c291e8343b6ec93
# End of Shinken Enterprise part

    #======== Module identity =========
    # Module name. Must be unique
    module_name     sync-regexp-tag

    # Module type (to load module code). Do not edit.
    module_type     sync-regexp-tag

    #======== Regexp definition and objects edition =========
    # matched_prop: which object property to check the regexp
    matched_prop    host_name

    # regexp to try to detect
    matched_regexp  .*shinkendemo.*

    # property: which property to edit on the hosts. Default: use   (templates definitions)
    property               use

    # method: how to edit the host "property". Several methods are available:
    # - replace = put the value if not another one is in place
    # - append  = add the value at the END
    # - prepend = add the value at the BEGINING
    # - set     = just the value, erase the previous value set by other tagger or source.
    method                 append

    # value:  which value to set on the property
    value                  SHINKEN-DEMO-REGEXP-EXAMPLE
}

Pour prendre en compte le changement de configuration, il faut redémarrer le Synchronizer :

Code Block
languagetext
themeEmacs
service shinken-synchronizer restart

Détails des sections composant le fichier de configuration

Identification du module

Code Block
languagejs
themeConfluence
# Shinken Enterprise. Lines added by import core. Do not remove it, it's used by Shinken Enterprise to update your objects if you re-import them.
    _SE_UUID             core-module-be8578085adb11e59c43080027f08538
    _SE_UUID_HASH        05673d95f7f69b0c1c291e8343b6ec93
# End of Shinken Enterprise part

    #======== Module identity =========
    # Module name. Must be unique
    module_name     sync-regexp-tag

    # Module type (to load module code). Do not edit.
    module_type     sync-regexp-tag

Il est possible de définir plusieurs instances de module de type sync-regexp-tag dans l'architecture Shinken.

Chaque instance devra avoir un nom unique.

Scroll Title
anchorparameter_cfg
title
NomTypeUnitéDéfautCommentaire
No Format
module_name 
Texte------

Valeur obligatoire

Nom du module.

Doit être unique parmi les modules.

No Format
module_type 
Texte---sync-regexp-tagNe pas modifier.

Définition de l'expression régulière et de l'édition d'objets

Code Block
languagejs
themeConfluence
...       
    #======== Regexp definition and objects edition =========
    # matched_prop: which object property to check the regexp
    matched_prop    host_name

    # regexp to try to detect
    matched_regexp  .*shinkendemo.*

    # property: which property to edit on the hosts. Default: use   (templates definitions)
    property               use

    # method: how to edit the host "property". Several methods are available:
    # - replace = put the value if not another one is in place
    # - append  = add the value at the END
    # - prepend = add the value at the BEGINING
    # - set     = just the value, erase the previous value set by other tagger or source.
    method                 append

    # value:  which value to set on the property
    value                  SHINKEN-DEMO-REGEXP-EXAMPLE  
...

Scroll Title
anchorparameter_cfg
title
NomTypeUnitéDéfautCommentaire
No Format
matched_prop
TexteNom de propriété d'un hôte

host_name

Valeur obligatoire

La propriété comparée à l'expression régulière.

No Format
matched_regexp
Texteregexp python---

Valeur obligatoire

Regexp auquel la propriété doit correspondre.

No Format
property
TexteNom de propriété d'un hôte---

Valeur obligatoire

Nom de la propriété à modifier.

No Format
method
Texte---replace

Valeur obligatoire

Méthode d'édition : 

  • replace : ajoute la valeur si elle est absente.
  • append  : ajoute la valeur à la fin.
  • prepend : ajoute la valeur au début.
  • set : remplace la valeur actuelle ou l'ajoute si absente.
No Format
value
Texte------

Valeur obligatoire

Valeur utilisée par la méthode.

Ecrire une Expression Régulière ( Regexp ) pour la propriété matched_regexp

Une expression régulière est une séquence de caractères qui forme un motif de recherche. Ce motif est principalement utilisé pour rechercher des correspondances dans des textes.

Les caractères simples, comme a, b, 1, 2, etc., recherchent une correspondance exacte.

Par exemple, le motif "bdx" recherchera exactement la séquence "bdx" dans la propriété ou la donnée définie dans "matched_prop". Les valeurs ci-dessous contiennent le motif "bdx", elles correspondent donc au motif défini et le Tagger appliquera la modification :

  • bdx-serveur-mysql
  • serveur-mysql-bdx
  • serveux-bdx-mysql

Certains caractères sont spéciaux et ont une signification particulière dans les expressions régulières. Par exemple :

  • . : Correspond à n'importe quel caractère sauf un retour à la ligne.
  • * : Correspond à zéro ou plusieurs occurrences du caractère précédent.
  • + : Correspond à une ou plusieurs occurrences du caractère précédent.
  • ? : Correspond à zéro ou une occurrence du caractère précédent.
  • [] : Correspond à n'importe quel caractère à l'intérieur des crochets. Par exemple, [abc] cherchera les lettres "a", "b" ou "c".
  • (): Permet de grouper des caractères.
  • | : Correspond à l'un ou l'autre des motifs séparés par le pipe. Par exemple, "(bdx|bordeaux)" correspond à "bdx" ou "bordeaux".
  • ^ : Correspond au début d'une ligne.
  • $ : Correspond à la fin d'une ligne.

Pour chercher un de ces caractères spéciaux dans un texte ( par exemple si le nom de l'hôte contient le signe dollar $ ) il faut le faire précéder d'un antislash, comme ceci : \$

Ces caractères servent à affiner la recherche

Pour plus d'explications sur comment écrire des expressions régulières, il est possible de se référer à la documentation de Python ( voir la page Guide des expressions régulières )

Ecrire une Expression Régulière ( Regexp ) pour la propriété matched_regexp

Une expression régulière est une séquence de caractères qui forme un motif de recherche. Ce motif est principalement utilisé pour rechercher des correspondances dans des textes.

Les caractères simples, comme a, b, 1, 2, etc., recherchent une correspondance exacte.

Par exemple, le motif "bdx" recherchera exactement la séquence "bdx" dans la propriété ou la donnée définie dans "matched_prop". Les valeurs ci-dessous contiennent le motif "bdx", elles correspondent donc au motif défini et le Tagger appliquera la modification :

  • bdx-serveur-mysql
  • serveur-mysql-bdx
  • serveux-bdx-mysql


Certains caractères sont spéciaux et ont une signification particulière dans les expressions régulières. Par exemple :

  • . : Correspond à n'importe quel caractère sauf un retour à la ligne.
  • * : Correspond à zéro ou plusieurs occurrences du caractère précédent.
  • + : Correspond à une ou plusieurs occurrences du caractère précédent.
  • ? : Correspond à zéro ou une occurrence du caractère précédent.
  • [] : Correspond à n'importe quel caractère à l'intérieur des crochets. Par exemple, [abc] cherchera les lettres "a", "b" ou "c".
  • (): Permet de grouper des caractères.
  • | : Correspond à l'un ou l'autre des motifs séparés par le pipe. Par exemple, "(bdx|bordeaux)" correspond à "bdx" ou "bordeaux".
  • ^ : Correspond au début d'une ligne.
  • $ : Correspond à la fin d'une ligne.

Pour chercher un de ces caractères spéciaux dans un texte ( par exemple si le nom de l'hôte contient le signe dollar $ ) il faut le faire précéder d'un antislash, comme ceci : \$

Ces caractères servent à affiner la recherche

Pour plus d'explications sur comment écrire des expressions régulières, il est possible de se référer à la documentation de Python ( voir la page Guide des expressions régulières )

Exemples

Si seuls les éléments dont le nom commence par "bdx" doivent recevoir le modèle d'hôte Bordeaux, le motif précédent ne suffit plus, pour cela il faut également utiliser le symbole ^ :

Code Block
languagejs
themeConfluence
^bdx

Si le nom doit commencer par "bdx" OU "bordeaux" il faut également ajouter les parenthèses :

Code Block
languagejs
themeConfluence
$(bdx|bordeaux)


Exemples de valeurs :

TexteCorrespondance avec le motif
bdx-serveur-1OUI
serveur-mysql1-bdxNON car "bdx" n'est pas au début
bordeaux-mysqlOUI
Bordeaux-mysqlNON car le B est une lettre majuscule

Édition des hôtes

Code Block
languagejs
themeConfluence
# property: which property to edit on the hosts. Default: use   (templates definitions)
property               use

# method: how to edit the host "property". Several methods are available:
# - replace = put the value if not another one is in place
# - append  = add the value at the END
# - prepend = add the value at the BEGINING
# - set     = just the value, erase the previous value set by other tagger or source.
method                 append

# value:  which value to set on the property
value                  Bordeaux
Scroll Title
anchorparameter_cfg
title
NomTypeUnitéDéfautCommentaire
No Format
property
Texte------

Valeur obligatoire

Nom de la propriété à modifier.

Ex : use pour les modèles de l'hôte.

No Format
method
Texte---append

Valeur obligatoire

Méthode d'édition : 

  • replace : ajoute la valeur si elle est absente.
  • append  : ajoute la valeur à la fin.
  • prepend : ajoute la valeur au début.
  • set : remplace la valeur actuelle ou l'ajoute si absente.
No Format
value
Texte------

Valeur obligatoire

Valeur utilisée par la méthode.

Déclarer le Module dans le Tagger

Pour qu'un Tagger utilise les règles définies dans un module, il faut ajouter le nom du module au paramètre modules dans le fichier de configuration du Tagger ( ex : /etc/shinken/taggers/MY-TAGGER.cfg )


Exemple avec un Tagger appelé MY-TAGGER

Exemples

Si seuls les éléments dont le nom commence par "bdx" doivent recevoir le modèle d'hôte Bordeaux, le motif précédent ne suffit plus, pour cela il faut également utiliser le symbole ^ :

Code Block
languagejs
themeConfluence
^bdx

Si le nom doit commencer par "bdx" OU "bordeaux" il faut également ajouter les parenthèses :

Code Block
languagejs
themeConfluence
$(bdx|bordeaux)

Exemples de valeurs :

TexteCorrespondance avec le motifbdx-serveur-1OUIserveur-mysql1-bdxNON car "bdx" n'est pas au débutbordeaux-mysqlOUIBordeaux-mysqlNON car le B est une lettre majuscule

Déclarer le Tagger dans le Synchronizer

L'activation des Taggers se fait dans le fichier de configuration du Synchronizer 

Il faut ajouter le nom du Tagger au paramètre taggers dans le fichier de configuration du démon Synchronizer (/etc/shinken/synchronizers/synchronizer-master.cfg ) .

Exemple : Le Tagger livré par défaut dont le nom est "regexp-tags" :

Code Block
languagejs
themeConfluence
define synchronizertagger {

    [...]tagger_name     MY-TAGGER-example
    order         #======== Taggers ========= 1

    taggers	modules         TAGGER-MODULE-01, TAGGER_01-MODULE-02, MY-MODULE-regexp-tagstag

     [...]description
}

Pour prendre en compte le changement de configuration, il faut redémarrer le Synchronizer :

Code Block
languagetext
themeEmacs
service shinken-synchronizer restart

Affichage des Taggers sur l'interface de Configuration

Les

Taggers apparaissent sur la page Principale de l'Interface de Configuration ( voir la page Page Principale ).

règles apportées par chaque module apparaissent à l'intérieur du Tagger, dans l'onglet Règles :


Panel

Image Added

Excerpt IncludePage PrincipalePage Principalenopaneltrue