Un Tagger basé sur des expressions régulières s'applique les éléments suivants issus de l'import des sources :
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.
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 ( voir la page Tagger basé sur des expressions régulières ).
L'activation d'un Tagger se fait en trois étapes :
La configuration des Taggers doit être placée dans le dossier /etc/shinken/taggers/.
Le Tagger basé sur des expressions complexes livré par Shinken : /etc/shinken/taggers/regexp-tags.cfg.
Un exemple de fichier de configuration est disponible : /etc/shinken-user-example/configuration/daemons/synchronizers/taggers/regexp-tags/regexp-tags.cfg
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 :
service shinken-synchronizer restart |
Il est possible de définir plusieurs instances de Taggers dans l'architecture Shinken.
Chaque instance devra avoir un nom unique.
|
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
#===============================================================================
# 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 :
service shinken-synchronizer restart |
# 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.
|
...
#======== 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
...
|
|
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 :
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.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 )
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 ^ :
^bdx |
Si le nom doit commencer par "bdx" OU "bordeaux" il faut également ajouter les parenthèses :
$(bdx|bordeaux) |
Exemples de valeurs :
| Texte | Correspondance avec le motif |
|---|---|
| bdx-serveur-1 | OUI |
| serveur-mysql1-bdx | NON car "bdx" n'est pas au début |
| bordeaux-mysql | OUI |
| Bordeaux-mysql | NON car le B est une lettre majuscule |
L'activation des Taggers se fait dans le fichier de configuration du Synchronizer
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" :
define synchronizer {
[...]
#======== Taggers =========
taggers TAGGER_01, regexp-tags
[...]
} |
Pour prendre en compte le changement de configuration, il faut redémarrer le Synchronizer :
service shinken-synchronizer restart |
Les Taggers apparaissent sur la page Principale de l'Interface de Configuration ( voir la page Page Principale ).