Versions Compared

Key

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

Qu'est ce qu'un cluster ?

Son rôle principal est de permettre d'avoir dans un seul indicateur l'état agrégé d'autres états. Cet indicateur propose une vue unique pour des utilisateurs jouant différents rôles.

Rôles typiques:

  • Service delivery Management
  • Business Management
  • Engineering
  • IT support

Prenons l'exemple d'un rôle de service delivery pour une application ERP . Il est principalement constitué de:

  • 2 databases, en haute disponibilité, donc avec une seule base active, le service est considéré comme rendu
  • 2 web servers, en partage de charge, donc avec un web server actif, le service est considéré comme rendu
  • 2 load balancers, encore en haute disponibilité

Ces composants (Hôtes dans cet exemple) seront la base de ce service ERP .

Avec des règles métier, vous pouvez avoir une vue agrégée de l'indicateur représentant l'état du service ERP !

Shinken Enterprise vérifie chaque composant un par un pour l'analyse de problème source.

Accéder à la configuration du Cluster

L'accès à la configuration des Clusters se fait par le menu "Elements", disponible dans la barre de navigation.

Ce lien donne accès à la liste des Clusters, permettant d'en créer de nouveaux ainsi que de les modifier.

Panel

Logique de notification

Un Cluster a la même logique de notification que les hôtes.

Lors de la création/édition d'un Cluster, les notifications peuvent être configurées via l'onglet Notifications de la même manière que pour un hôte.

 

TODO: Lien vers une page de Doc qui explique comment configurer les notifications (si elle existe).

Définition minimaliste d'un Cluster

TODO: Expliquer les regles de bases (selection host, et services, sans regex ni rien)

Un Cluster va voir son état dépendre de ceux de ces éléments. Ces éléments peuvent être des Hôtes, des Checks, ou un mélange des deux. La définition des éléments du Cluster se fait par l'intermédiaire de la bp_rule.

La manière la plus simple de définir un Cluster est de lister un à un les Hôtes/Checks et de spécifier avec des opérateurs de logique booléenne le comportement du Cluster.

Deux opérateurs de bases sont disponibles pour définir l'agrégation des états: & et |

Panel

Image Added

L'opérateur & semblable au ET classique renvoie le pire état des 2 éléments.

Par exemple, si un

hôte

hôte hote_

a

est OK et qu'un

hôte

hôte hote_b

est

 est Critique,

Code Block
hote_a & hote_b

renverra Critique.

 

L'opérateur | semblable au OU classique renvoie le meilleur état des 2 éléments.

Par exemple, si un hôte hote_a est OK et qu'un

hôte

hôte hote_b

est

 est Critique,

Code Block
hote_a | hote_b

renverra OK.

 

Dans un cluster, on peut séléctionner 2 types d'éléments: des hôtes et des services.

L'état d'un hôte se récupère avec seulement le nom de l'hôte, et l'état d'un service se récupère avec le nom de l'hôte, puis le nom du service, séparé par un virgule.

Par exemple

Code Block
hote_a,service_a

 

Aussi, il est possible de configurer la priorité des opérateurs booléens avec des parenthèses.

 

Exemple de configuration d'une règle pour un cluster ERP

Code Block
(srv-oracle-1 | srv-oracle-2) & (srv-http-1 | srv-http-2) & (srv-loadbalancer-1 | srv-loadbalancer-2)
PanelImage Removed

Utiliser les négations

On peut également vouloir vérifier qu'un hôte ou un service renvoie un statut Critique. Cela peut être utile dans le cas de configuration avec des éléments actifs et passifs par exemple.

Le caractère ! permet de prendre l'inverse de l'état de l'élément. Ainsi, on peut définir des règles comme la suivante:

 

Code Block
(srv-oracle-1 & !srv-oracle-2)

 

Le cluster sera donc en statut OK si l'hôte srv-oracle-1 est OK et l'hôte src-oracle-2 est Critical.

Groupement d'expressions

Parfois, on ne souhaite/peut pas spécifier précisément les hôtes contenus dans une règle. On peut dans les bp_rule grouper les éléments selon différents critères. On peut par exemple récupérer tous les hôtes appartenant à un certain groupe d'hôte, ayant un certain modèle d'hôte accrochés, ou encore récupérer les hôtes dont le nom remplit certains critères. Ces groupements sont disponibles également pour le checks.

Pour cela, il est possible d'utiliser des expressions groupées suivant cette syntaxe :

Code Block
flag:expression


Le flag est un simple caractère qualifiant le type d'expansion.
Les types supportés sont décrits dans les tables ci-dessous.

 

Flags pour les hôtes

FlagSignificationExempleEquivalence
gHôtes appartenant au groupe d'hôtesg:webweb-srv1 & web-srv2 & ...
rHôtes dont le nom matche la regexr:^webweb-srv1 & web-srv2 & ...
tHôtes ayant le modèle d'hôtet:httpweb-srv1 & web-srv2 & ...
trHôtes ayant le modèle d'hôte qui matche la regextr:^httpweb-srv1 & web-srv2 & ...

 

Flags pour les checks

FlagSignificationExempleEquivalence
rChecks dont le nom match la regexr:^HTTPS?web-srv1,HTTP & db-srv2,
HTTPS & ...
tChecks ayant le modèle de checkt:httpweb-srv1,HTTP & db-srv2,
HTTPS & ...
trChecks ayant le modèle de check qui marche la regextr:^httpweb-srv1,HTTP & db-srv2,
HTTPS & ...

 

Exemple d'expressions combinées


Si vous souhaitez créer une règle incluant tous les web servers composant l'application frontend.

Code Block
t:http,r:HTTPS?

qui est équivalent à:

Code Block
web-srv1,HTTP & web-srv3,HTTPS


Vous devriez donc combiner l'expansion d'expression avec :

Code Block
t:http,t:HTTPS? & db-srv1,MySQL


qui est équivalent à:

Code Block
(web-srv1,HTTP & web-srv3,HTTPS) & db-srv1,MySQL

Ensembles d'éléments

On voudrait également pouvoir sélectionner les éléments qui remplissent plusieurs critères différents. C'est possible en définissant des ensembles.

Les ensembles sont définis en enveloppant une expression de crochets. Dans les ensembles, les opérations booléennes & et | utilisées n'ont pas le même sens, et sont équivalentes à des opérations sur des ensembles. Le tableau ci-dessous récapitule les significations des différents opérateurs dans les ensembles.

OpérateurSens de l'opération
|Union
&Intersection
&!Exclusion (privé de)


Les ensembles peuvent être imbriqués pour permettre des définir des priorités d'évaluation.
Les opérateurs sont évalués dans l'ordre des sous parties, puis de gauche à droite.


 Ainsi, l'expression 

Code Block
[ t:linux | tr:windows.* &! [t:linux & tr:windows.* ]]

regroupe les hôtes ayant le modèle linux, ou un modèle commençant par windows, mais pas les deux.

 

TODO:

  • Est ce que la syntaxe des opérateurs & et | est changée par && et || ?

La règle Xof

Dans certains cas, un cluster de N éléments nécessite d'avoir au moins X d'entre eux en état OK pour être considéré comme OK.

Pour spécifier ce type de comportement, il suffit d'utiliser l'opérateur "X of:".

 

La syntaxe de cet opérateur est la suivante:

Code Block
Xof: expression

 

L'expression X of: peut être configurée avec différentes valeurs en fonction du besoin. Les valeurs supportées pour sont les suivantes:

  • Un nombre entier positif, soit "au moins X hôtes doivent être up"
  • Un pourcentage positif, soit "au moins X% d'hôtes doivent être up"
    On peut combiner des expression groupées telles que "95% de mes web front ends doivent être up"..
  • Un nombre entier négatif, soit "au plus X hôtes doivent être down"
  • Un pourcentage négatif, soit "au plus X% d'hôtes doivent être down"
    On peut combiner des expression groupées telles que "5% de mes web front ends doivent être down"

(srv-oracle-1 | srv-oracle-2) & (srv-loadbalancer-1 | srv-loadbalancer-2) & 95% of: g:frontend

Xof: expression
Code Block
(srv-oracle-1 | srv-oracle-2) & (srv-loadbalancer-1 | srv-loadbalancer-2) & 95% of: g:frontend

 

L'expression passée à l'opérateur Xof peut également être un ensemble. On peut par exemple avoir une règle du type:

Code Block
Xof: expression

Voici un exemple avec 3 http web servers, et au moins 2 d'entre eux en état OK : 

(srv-oracle-1 | srv-oracle-2) & (2 of: srv-http-1 & srv-http-2 & srv-http-3) & (srv-loadbalancer-1 | srv-loadbalancer-2)

Code Block
Xof: expression

Gérer un état dégradé

 

La règle X,Y,Zof

TODO: Rediger avec des vraies phrases en francais

X,Y,Zof:

Ordre d'évaluation:

  • Critique
  • Warning + Critique
  • OK
  • Par defaut met en OK pour un cluster de services, met en ? pour un cluster d'hotes

La règle Xof configurable

90% of: [ t:linux | tr:windows.* &! [t:linux & tr:windows.* ]]
Note
titleValeur négative pour X

Les valeurs négatives sont interprétées pour l'évaluation comme MAX - X.

Cette possibilité est utile dans le cas ou X est un entier et qu'on ne connait pas le nombre d'éléments du Cluster. On pourrait par exemple vouloir dire qu'a plus X éléments doivent être en Critical.

Cependant, dans le cas d'un pourcentage, écrire -20%of est seulement une manière moins lisible d'écrire 80%of, puisque les 2 expressions auront le même résultat.

Gérer un état dégradé

L'opérateur Xof permet de gérer un état du cluster en se basant sur les états OK et Critical des éléments. Il renvoie également un status OK ou Critique selon son seuil (valeur du paramètre X).
Mais, on pourrait avoir envie de voir notre cluster mis en Warning selon l'état des éléments du cluster.

Les opérateurs X,Y,Zof et Xof configurable permettent d'avoir un niveau d'information plus précis sur l'état du cluster.

L'opérateur X,Y,Zof

L'opérateur X,Y,Zof agit de manière similaire à l'opérateur Xof.

 

Il dispose de 3 paramètres X,Y et Z qui agissent comme suivant:

  • X: Nombre minimal de statuts OK pour que l'opérateur renvoie OK
  • Y: Nombre minimal de statuts Warning pour que l'opérateur renvoie Warning
  • Z: Nombre minimal de statuts Critical pour que l'opérateur renvoie Critical

L'évaluation de la règle Xof se fait dans l'ordre suivant:

  • Est il possible que l'état soit Critique ? (comparaison avec Z)
  • Est-il possible que l'état soit Warning ? (comparaisons avec Y + Z)
  • Est-il possible que l'état soit OK ? (comparaison avec X)
  • Si aucun cas n'est possible, l'état est OK.

 

 

 

Note
titleEvaluation du cas Warning

L'évaluation du cas Warning prend en compte le nombre d'éléments en Warning auquel on ajoute le nombre d'éléments en Critical.

La règle X,Y,Zof renvoie Warning si moins de Z éléments sont en Critique et Y + Z < (Nombre d'éléments en Warning + Nombre d'éléments en Critique)

 

 

 

Pour illustrer, prenons l'exemple d'une business rule agissant sur 5 services A,B,C,D et E:            X,Y,Zof: A|B|C|D|E

Exemple 1

ABCDE
WarningOKOKOKOK

Différentes valeurs des paramètres et résultat de l'opérateur:

  • 4of:           →  OK
  • 5,1,1of:     →  Warning
  • 5,2,1of:     →  OK

Exemple 2

ABCDE
WarningWarningOKOKOK

Différentes valeurs des paramètres et résultat de l'opérateur:

  • 4of:          → Warning
  • 3of:          → OK
  • 4,1,1of:    → Warning

Example 3

ABCDE
CriticalCriticalOKOKOK

Différentes valeurs des paramètres et résultat de l'opérateur:

  • 4of:            → Critical
  • 3of:            → OK
  • 4,1,1of:      → Critical

Example 4

ABCDE
WarningCriticalOKOKOK

Différentes valeurs des paramètres et résultat de l'opérateur:

  • 4of:        → Critical
  • 4,1,1of:  → Critical

Example 5

ABCDE
WarningWarningCriticalOKOK

Différentes valeurs des paramètres et résultat de l'opérateur:

  • 2of:           → OK
  • 4,1,1of:     → Critical

Example 6

ABCDE
WarningCriticalCriticalOKOK

Différentes valeurs des paramètres et résultat de l'opérateur:

  • 2of:            → OK
  • 2,4,4of:      → OK
  • 4,1,1of:      → Critical
  • 4,1,2of:      → Critical
  • 4,1,3of:      → Warning

Configuration classiques

Par exemple, pour un nombre MAX d'éléments:

  • Setup ON/OFF: MAXof <=> MAX,MAX,MAXof
  • Warning dès qu'un problème apparaît, Critical si tous les éléments sont en critique: MAX,1,MAXof
  • Pire état possible: MAX,1,1

L'opérateur Xof configurable

TODO: Fonctionnalité pas encore implémentée

 

L'opérateur X,Y,Zof permet d'avoir un contrôle plus fin sur le status du cluster mais son comportement est fixe et ne peut pas être changé. L'opérateur Xof configurable permet de définir le comportement du Cluster précisément.

L'utilisateur peut définir plusieurs comportements sont forme de propositions successives qui seront évalués dans l'ordre fourni.

La syntaxe de cette commande est la suivante:

    proposition1|proposition2|proposition3|default->return_state of: elements

    avec les propositions de la forme:    Xstatus->return_status


Les différentes propositions sont évaluées dans l'ordre dans lequel elles apparaissent. Si une proposition est valide, l'état spécifie est renvoyé et l'évaluation s'arrête. Si aucune proposition n'est valide, l'état spécifié dans default est renvoyé. Si aucune valeur par défaut n'est spécifiée, la valeur renvoyée est Unknown.

Les statuts à fournir pour les règles sont les suivants:

  • OK
  • Warning
  • Critical
  • Unknown

 

Exemples

On se place dans le cas d'un cluster à 10 éléments, A, B, C, D, E, F, G, H, I et J.

Business rule:              1Critical->Warning|2Critical->Critical|15%Warning->Warning|20%Warning->Critical|95%OK→OK|default→Warning of: A|B|C|D|E|F|G|H|I|J

ABCDEFGHIJRésultat de la bp_ruleCondition qui déclenche le résultat
OKWarningCriticalWarningOKWarningOKWarningCriticalWarningCritical

 

1Critical->Critical
OKWarningOKWarningOKWarningOKWarningWarningWarningCritical

 

20%Warning-Critical
OKOKOKOKOKOKWarningOKOKOKWarningdefault->Warning
TODO: Expliquer comment marche le Xof configurable