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-htmltruefalse
Panel
titleSommaire

Table of Contents
stylenone

Description

Concept

Il est possible Ce module permet de définir sur un tagger Tagger une action qui va utiliser automatiquement le nom pour modifier des propriétés sur les hôtes / clusters qui respectent sa règle de nommage ( une regexp ) sur une propriété.

Typiquement, le cas d'usage classique est de rajouter/modifier des templates d'hôtes/clusters sur les éléments s'ils respectent une règle de nommage sur le nom.

Activation du tagger

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

  • L'activation du tagger s'effectue en ajoutant le nom de ce tagger dans le fichier de configuration du démon Synchronizer.
  • Pour ce faire, ouvrer le fichier de configuration du Synchronizer à l'emplacement /etc/shinken/etc/shinken/synchronizers/synchronizer-master.cfg, et ajouter le nom de votre tagger "regexp-tags".

Exemple: par défaut, nous livrons un tagger dont le nom est "regexp-tags":

Code Block
languagebash
define synchronizer {
    [...]     
    #======== Taggers =========
    taggers	          TAGGER_01, regexp-tags
    [...]
}
Pour prendre en compte le changement de configuration, redémarrer le Synchronizer:
Code Block
service shinken-synchronizer restart

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é. 


L'activation de ce module se fait en 3 étapes :

  1. Définir le module de type sync-regexp-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 Les modules taggers ).
  3. Redémarrer le Synchroniser pour que cette modification soit prise en compte.

Définition du module

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

  • Un exemple de fichier de configuration est disponible ici : 

Définition du tagger

La configuration du tagger se trouve par défaut dans le fichier  /etc/shinken/taggers/regexp-tags.cfg

  • Vous trouverez aussi systématiquement un exemple dans /etc/shinken-user-example/configuration/daemons/synchronizers/taggersmodules/sync-regexp-tagstag/MY-MODULE-regexp-tagstag-exemple.cfg

Exemple de fichier de configuration

Code Block
languagejs
#===============================================================================
# regexp-tags
#===============================================================================

define tagger {
  tagger_name    regexp-tags
  order          1
  modules        sync-regexp-tag
  description    This tagger will tag host based on the host_name
}

Détails des sections composant le fichier de configuration

Il est possible de définir plusieurs instances de tagger dans votre architecture Shinken.

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

    Scroll Title
    title
    Code Block
    languagetext
    themeEmacs
    cp /etc/shinken-user-example/configuration/daemons/synchronizers/modules/sync-regexp-tag/MY-MODULE-regexp-tag-example.cfg 
NomTypeUnitéDéfautCommentaire
Code Block
tagger_name
Texte---regexp-tags

Valeur obligatoire

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

Doit être unique.

Ne doit pas contenir les caractères suivants: < > " '

Code Block
order
Entier------

Valeur obligatoire

L'ordre du tagger dans l'interface de configuration ( Les taggers seront executé dans l'ordre lors de l'import ).

Code Block
modules 
Listenom de modules---

Valeur obligatoire

Liste de nom de modules utilisé par le tagger. Voir ci-dessous pour la configuration des modules.

Le séparateur est le caractère : ,

Code Block
description
Texte------Une description du tagger affiché dans l'interface de configuration

Configuration

La configuration du module se trouve par défaut dans le fichier 
  • /etc/shinken/modules/
sync
  • MY-MODULE-regexp-tag.cfg
  • Vous trouverez aussi systématiquement un exemple dans /etc/shinken-user-example/configuration/daemons/synchronizers/modules/sync-regexp-tag/sync-regexp-tag-exemple.cfg

Exemple de fichier de configuration

  • 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

Cet exemple ajoute 

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


Code Block
languagejs
themeConfluence
Code Block
languagejs
#===============================================================================
# syncip-regexptag-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     syncMY-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  .*shinkendemo^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                  SHINKEN-DEMO-REGEXP-EXAMPLEBordeaux

}  

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 votre l'architecture Shinken.

  • Chaque instance devra avoir un nom unique.


Scroll Title
anchorparameter_cfg
title
NomTypeUnitéDéfaut
Commentaire
Description
code
No Format
module_name



Texte---
sync
--
regexp
-
tagNous vous conseillons de choisir un nom en fonction de l'utilisation du module pour que votre configuration soit simple à maintenir

Valeur obligatoire.

Nom du Module.

  • Doit être unique parmi tous les modules.
code


No Format
module_
type 
type
Texte---sync-regexp-tag

Ne

peut être modifié.

pas modifier.

Définition des hôtes où l'action de modification sera appliquée ( expression régulière )

Regexp definition and objects edition

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.*

	 ^bdx.*  
Scroll Title
anchorparameter_cfg
title
NomTypeUnitéDéfautDescription
No Format
matched_prop
TexteNom de propriété d'un hôte

---

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.



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 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 motifs.
  • | : Correspond à l'un ou l'autre des motifs séparés par le pipe.
    • Par exemple, le motif "(bdx|bordeaux)" cherchera dans un texte la chaîne "bdx" ou "bordeaux".
      • Si au moins une des deux est présente, alors la chaîne correspond au motif.
  • ^ : 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 method                 append

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

	...

value                  Bordeaux
Scroll Title
anchorparameter_cfg
title

Pour chaque règle Regexp, vous devrez définir un nouveau module et l'ajouter dans la configuration du tagger regexp-tags .

Vous pouvez copier l'exemple  /etc/shinken/modules/sync-regexp-tag.cfg dans un nouveau fichier pour le modifier
NomTypeUnitéDéfaut
Commentaire
Description
code
No Format
matched_prop
Code Block
matched_regexp
Texteregexp python---

Valeur obligatoire

Regexp auquel la propriété doit correspondre

Code Block
property
Texte
Nom de propriété d'un hôte

host_name

la propriété que l'on va regarder pour vérifier qu'elle correspond à ce que l'on recherche.
  • Par défaut, la propriété est le host_name ( Nom de l'objet hôte/cluster )
------

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

Comment la modification de la propriété va avoir lieu sur l’élément :

Méthode d'édition : 

  • replace :
si aucune valeur n’était définie dans la propriété à vérifier, le contenu de value sera mis dans la propriété visée, c.a.d. property.
  • append: ajoute le contenu de value à la fin dans la propriété visée, c.a.d. property.
  • prepend: ajoute le contenu de value au début de la propriété visée, c.a.d. property.
  • set: force le contenu de value dans la propriété visée, c.a.d. property.
    • 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---
    Code Block
    property
    TexteNom de propriété d'un hôte
    ---

    Valeur obligatoire

    Quelle propriété modifier

    Code Block
    value
    Texte------

    Valeur obligatoire

    La valeur qui sera ajouter/que prendra la propriété

    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 :

    Code Block
    languagejs
    themeConfluence
    define tagger {
    
        tagger_name     MY-TAGGER
        order           1
    
        modules         TAGGER-MODULE-01, TAGGER-MODULE-02, MY-MODULE-regexp-tag
    
        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 règles apportées par chaque module apparaissent à l'intérieur du Tagger, dans l'onglet Règles :


    Panel

    Image Added