Parsefile

Une fonction

Analyser un fichier pour du texte et/ou des valeurs, créer des valeurs différentielles. Jusqu'à 32 valeurs/valeurs de chaîne/valeurs de différence/valeurs de taux/résultats de comparaison/compteurs de correspondance et événements sont possibles par tâche d'analyse

Alarmant

Correspondances de chaîne, Nombre de chaînes, Valeurs, Valeurs de chaîne, Valeurs de différence, Valeurs de débit, Événements, Âge du fichier, Âge du contenu du fichier, Code de réponse

Spécial : Le travail peut passer à l'état Maintenance OK ou Maintenance Major , en fonction des limites d'alarme configurées.

Détail du fichier d'analyse

Paramètres de fichier d'analyse

Paramètre

Description

Méthode

Le fichier à analyser peut être soit un fichier local (par défaut), soit il peut être extrait en premier à l'aide de l'un des protocoles suivants :

HTTP
FTP
SFTP
SCP

Si l'un des protocoles distants est choisi, des paramètres supplémentaires sont affichés pour le chemin source et l'authentification de l'utilisateur. Voir la tâche Fetchfile pour les détails de configuration.

Exemple : récupérez d'abord le fichier d'un serveur Web, avant de l'analyser :

La récupération d'un fichier distant à partir de la tâche Parsefile est la méthode préférée. Une alternative serait de créer une tâche Batch avec une tâche Fetchfile ou Agent Fetchfile et une tâche Parsefile .

Si le système distant fonctionne sous Windows et que SKOOR WinAgent est installé, les fichiers peuvent également être récupérés à l'aide de WinAgent. WinAgent est répertorié dans la liste déroulante des méthodes, dès que les propriétés du nom d' Agent et du mot de passe de l' Agent sont définies sur l'appareil des travaux. Sous Windows 10 , server OpenSSH peut être installé à partir des fonctionnalités optionnelles. Après le démarrage du service respectif, les fichiers peuvent être copiés à l'aide de scp.

Nom de fichier

Le nom de fichier à analyser. Le chemin peut être spécifié par rapport au répertoire d'analyse par défaut sur le collecteur (défini dans le fichier /etc/opt/eranger/eranger- collecteur .cfg, normalement défini sur /var/opt/run/eranger/ collecteur /tmp ) ou absolu . Si le fichier se trouve dans un sous-répertoire du répertoire par défaut configuré, le nom du fichier peut être saisi comme suit :

sous-répertoire/fichier.txt

Âge du fichier

Teste la date et l'heure du dernier accès au fichier. S'il est plus ancien que la valeur donnée, le travail émet un avertissement (Fichier trop ancien). L'âge du fichier peut être entré en minutes ou en secondes, des formats comme "1h 30m" sont également pris en charge.

Âge du contenu du fichier

Teste si le contenu du fichier a changé. S'il n'a pas changé pendant la durée saisie ici, le travail émet un avertissement (Contenu du fichier trop ancien). Le format d'âge du contenu du fichier est le même que pour le paramètre d' âge du fichier .

Transformer → Exécution

Si la transformation automatique fournie par la tâche n'est pas suffisante pour une raison quelconque, le fichier peut être prétraité par l'une des options suivantes avant de l'analyser :

Non utilisé (pas de prétraitement)
Dos2unix (obsolète pour les nouveaux jobs : convertir un fichier récupéré sur un hôte Windows au format UNIX/Linux)
Iconv (convertit le contenu du fichier d'un encodage à un autre, par exemple de l'encodage ISO-8859-15 à l'encodage UTF-8. Si cette option est choisie, des champs de texte supplémentaires De et À apparaissent pour saisir les choix d'encodage souhaités.)
Commande définie par l'utilisateur (un champ de texte supplémentaire apparaît dans lequel on peut entrer un filtre personnalisé. Le filtre transforme STDIN en STDOUT. Exemple : grep -v 'unwanted' | sed 's/wrongtext/goodtext/g' )

Séquence

Voir la section suivante

La liste déroulante Balises permet de saisir des variables prédéfinies dans les champs ci-dessus, par exemple $NAME$ pour le nom du travail.

Transformations de fichiers standards

Si un fichier a été extrait d'un système autre que Linux, certains caractères spéciaux doivent être adaptés pour l'analyse. La liste suivante montre quels cas sont traités automatiquement par le travail :

  • Les caractères de retour chariot Windows sont supprimés (anciennement effectués par l'option de transformation dos2unix)

  • Si le fichier est encodé en UTF-8 avec BOM (Byte Order Mark), le BOM est supprimé

  • Si le fichier est encodé en unicode (big-endian UTF-16 ou little-endian UTF-16)

    • Si aucune transformation n'est définie, le fichier est converti en UTF-8 avant l'analyse

    • Si une transformation est définie, rien n'est fait sur le fichier (il est supposé que la transformation gère le fichier correctement)

En cas d'échec de la transformation, les codes de réponse et d'erreur du travail afficheront les messages suivants :

  • Le code de réponse 11 (Impossible de transformer le fichier) sera toujours affiché et doit être configuré comme limite d'alarme

  • Le code d'erreur 1 (erreur système) ou 2 (erreur interne) peut être affiché en plus

Séquence de fichier d'analyse

Comportement général

  • Si le fichier n'est pas trouvé, le code de réponse est mis à 1 ( Fichier introuvable ) et l'exécution est terminée.

  • Si l' âge du fichier et/ou l'âge du contenu du fichier sont définis, ces vérifications sont effectuées avant l'analyse du fichier.

  • Si le fichier est trop ancien, le code de réponse est défini sur 2 ( Fichier trop ancien ), cependant, le fichier est toujours analysé.

  • Si le contenu du fichier est trop ancien, le code de réponse est défini sur 3 ( Contenu du fichier trop ancien ), mais le fichier est toujours analysé.

  • Si un fichier contient plus de 100 000 lignes, le code de réponse est défini sur 4 ( Fichier trop long ) et l'exécution est terminée. La limite par défaut peut être augmentée ou supprimée en ajoutant la ligne suivante dans le fichier de configuration du SKOOR Engine collecteur :

    parsefile_line_limit = 1000000                     raise limit to a million lines
    parsefile_line_limit = 0                           remove limit altogether


  • Lors de l'ajout de nouvelles valeurs, valeurs de chaîne, valeurs Diff, etc., un maximum de 32 entrées sont possibles dans la séquence d'analyse pour chaque type de valeur. Par exemple, lors de l'ajout de 3 valeurs à l'aide de l'élément Get value , commencez par ajouter Get value avec l'index 1, puis 2, puis 3, avec un nombre d'index croissant. L'interface utilisateur permet uniquement de sélectionner un index maximum en fonction du nombre d'éléments de séquence actuellement configurés afin que la liste déroulante de sélection d'index ne prenne pas trop de place.

Éléments disponibles dans la liste déroulante du filtre de séquence

  • Ensemble

    • Filtrer (inclure)

      • Toutes les lignes du fichier qui ne contiennent pas l'expression sont ignorées, par exemple la saisie de « localhost » (sans les guillemets) ne prendra en compte que les lignes contenant « localhost » ; les autres lignes sont ignorées.

    • Filtrer (exclure)

      • Cela fonctionne dans l'autre sens, c'est-à-dire comme un filtre négatif.

      • Toutes les lignes contenant l'expression sont ignorées pour analyser le reste de la séquence.

    • Définir le délimiteur

      • Le délimiteur de colonne par défaut est un espace blanc (1 espace, plusieurs espaces consécutifs, tabulations). Cela divise efficacement les lignes en mots.

      • Un délimiteur différent peut être choisi ici. Entrez une chaîne de 1 ou plusieurs caractères comme ";" ou "COL". Au cours d'une séquence, le délimiteur peut être défini et réinitialisé plusieurs fois. Pour réinitialiser, laissez le champ de texte vide.

      • Le nombre de colonnes commence à 0 (zéro).

    • Mode Syslog

      • S'il est défini, l'analyse se poursuit avec la première nouvelle ligne du fichier ajoutée depuis la dernière exécution de la tâche.

      • Si le fichier a été pivoté, le fichier pivoté est utilisé à partir de la dernière position EOF afin qu'aucune donnée ne soit perdue.

    • Ignorer la casse

      • Si cette option est définie, la casse est ignorée pour les comparaisons de chaînes.

    • Ignorer introuvable

      • Si une ligne, une expression ou une colonne est introuvable, le code de réponse n'est pas défini sur 7 String not found , mais l'exécution du travail est interrompue.

    • Continuer après introuvable

      • Si cette option est définie, l'analyse se poursuit après qu'une ligne ou une colonne n'a pas été trouvée.

    • Détecter le débordement activé/désactivé

      • Si cette option est activée, tous les paramètres de valeur Diff suivants plus tard dans la séquence ignoreront les valeurs inférieures à la valeur mesurée lors de l'exécution de la tâche précédente (seules les différences positives sont autorisées).

      • Ceci est principalement utilisé pour les compteurs. Le réglage peut être désactivé plus tard dans la séquence.

    • Obtenir l'horodatage (taux)

      • Un horodatage peut être lu à partir d'un fichier pour des calculs exacts à l'aide du paramètre de séquence Get rate value . Par exemple, si le fichier analysé est généré par une application exécutée de manière asynchrone.

      • L'horodatage dans le fichier doit être imprimé en unités de secondes, ms ou µs.

  • Trouver
    Les paramètres suivants se réfèrent aux lignes. La portée du paramètre suivant est la ligne trouvée par le paramètre courant. Si une ligne demandée n'existe pas, le code de réponse est mis à 5 ( Ligne introuvable ) et l'exécution est terminée, sauf si Continuer après introuvable est activé.

    • Aller à la ligne #

      • Le pointeur d'analyse est positionné au début de la ligne correspondante.

    • Aller à la ligne suivante

      • Le pointeur d'analyse est positionné au début de la ligne suivante.

    • Aller à la première ligne avec

      • Le pointeur d'analyse est positionné au début de la première ligne qui évalue la chaîne/expression.

      • Si une ligne avec une telle expression est introuvable et que "Continuer après introuvable" est défini, le pointeur d'analyse est positionné sur le premier caractère de la première ligne du fichier et le reste de la séquence est traité.

    • Aller à la ligne suivante avec

      • Le pointeur d'analyse est positionné au début de la ligne suivante qui évalue la chaîne/expression.

      • Si une ligne avec une telle expression est introuvable et que "Continuer après introuvable" est défini, le pointeur d'analyse est positionné sur le premier caractère de la ligne suivante et le reste de la séquence est traité.

    • Aller à la dernière ligne avec

      • Le pointeur d'analyse est positionné au début de la dernière ligne qui évalue la chaîne/expression.

      • Si une ligne avec une telle expression est introuvable et que "Continuer après introuvable" est défini, le pointeur d'analyse est positionné sur le premier caractère de la première ligne du fichier et le reste de la séquence est traité.

  • Trouver le délimiteur basé
    Les commandes suivantes dépendent de la définition d'un délimiteur. Si aucun délimiteur n'est défini, un espace blanc (espaces ou tabulations) est utilisé comme délimiteur

    • Aller à la colonne #

      • Le pointeur d'analyse est positionné sur le premier caractère de la colonne correspondante (0..n) dans la ligne courante.

      • Si la colonne n'est pas trouvée, le code de réponse est mis à 6 ( Column not found ) et l'exécution est terminée.

      • Si la colonne est introuvable et que Continuer après introuvable est défini, la position du pointeur d'analyse n'est pas modifiée.

      • La portée des commandes de chaîne suivantes par défaut est le fichier entier ; si l'une des commandes de ligne a été appelée précédemment, la portée est la ligne courante.

      • Si le champ est laissé vide, le code d'erreur est mis à 7 ( Paramètre invalide ) et l'exécution est terminée.

    • Aller à la première chaîne

      • Selon la portée, la première occurrence de la chaîne dans tout le fichier / dans la ligne courante qui évalue l'expression est recherchée.

      • S'il est trouvé, le pointeur d'analyse est positionné sur le premier caractère qui évalue l'expression, puis incrémenté de la longueur de l'expression

      • Sinon, l'exécution est terminée et le code de réponse est défini sur 7 ( String not found ), sauf si Ignore not found ou Continue after not found a été défini ci-dessus.

    • Aller à la chaîne suivante

      • Comme ci-dessus, mais la recherche commence à la position actuelle afin que l'analyseur recherche la prochaine occurrence.

    • Aller à la dernière chaîne

      • Comme ci-dessus, mais l'analyseur recherche la dernière occurrence d'une expression.

Les paramètres suivants prennent en charge la gestion des événements en fonction du travail Agent Eventlog et peuvent suivre jusqu'à 4 événements.

  • Événement

    • Définir l'événementX

      • Un événement est défini lorsqu'une ligne correspond à une expression ou à une chaîne donnée.

      • Jusqu'à 32 événements peuvent être configurés et réglés.

    • Réinitialiser l'événementX

      • Un événement est réinitialisé lorsqu'une ligne suivante correspond à une expression donnée.

      • Jusqu'à 32 événements de réinitialisation peuvent être configurés et réglés.

    • Réinitialiser eventX après

      • Un événement est réinitialisé après un délai donné (par exemple 10m = 10 minutes).

      • Jusqu'à 32 temporisations peuvent être configurées et réglées.

      • La condition de réinitialisation est évaluée uniquement lors de l'exécution du travail. Si un événement a été défini et qu'aucune nouvelle chaîne correspondante n'est trouvée lors de la prochaine exécution du travail, l'événement sera réinitialisé si le délai ci-dessus est atteint.

  • Valeurs

    • Obtenir la valeurX

      • À partir de la position actuelle, une valeur numérique est recherchée et attribuée si elle est trouvée

      • Sinon, le code de réponse est défini sur 8 ( Valeur introuvable ) et l'exécution est terminée.

      • Le pointeur d'analyse est défini sur le premier caractère après la valeur trouvée.

        Appuyer sur le bouton Unité fait apparaître la boîte de dialogue suivante :


        Ici on peut préciser

        • le nom de la valeur à retourner (optionnel)

        • son unité (par exemple secondes, facultatif)

        • un diviseur par lequel la valeur doit être divisée (facultatif)

        • Précision de sortie numérique (par exemple 1.000)

    • Obtenir la valeur diffX

      • À partir de la position actuelle, une valeur numérique est recherchée et la différence par rapport à la valeur trouvée lors de la dernière exécution est affectée.

      • Le pointeur d'analyse est défini sur le premier caractère après la valeur trouvée.

    • Obtenir la valeur du tauxX

      • La valeur du taux représente la différence entre la valeur actuelle et la dernière valeur divisée par le temps (secondes) qui s'est écoulé entre les deux mesures :

      • (Val maintenant - Val dernier ) / (t maintenant - t dernier )

      • Habituellement, l'horodatage de l'exécution du travail est utilisé pour ce calcul. Cependant, il peut également être lu à partir du fichier en utilisant l'élément Obtenir l'horodatage (taux) (voir ci-dessus)

      • Si la différence d'horodatage est <= 0, aucune nouvelle valeur de débit n'est générée.

    • Obtenir la valeur de chaîneX

      • Cela permet de recevoir une valeur de chaîne à partir d'un fichier. Utilisez-le uniquement pour les chaînes qui ne changent pas souvent, c'est-à-dire lorsque la chaîne est l'une des rares chaînes connues pour faire partie du texte analysé.

      • La chaîne peut être mappée à une valeur numérique à l'aide des champs de configuration accessibles en cliquant sur le bouton Unité .

    • Comparer chaîneX

      • L'expression (qui peut être une simple chaîne, mais peut aussi être une expression régulière) est évaluée et 1 ( Found ) ou 0 ( Not Found ) est assigné comme valeur de retour.

      • Le nom de la valeur de retour ci-dessus et le texte affiché à côté de la valeur de retour peuvent être influencés en cliquant sur le bouton Enum à droite de ce paramètre. Cela ouvre la boîte de dialogue suivante :


        qui affichera ce qui suit pour une comparaison réussie dans la section Valeurs :
        Vérifier l'état : 1 (l'état est OK )
        au lieu de la valeur par défaut :
        Comparer result1 : 1 (Trouvé)

        Cela permet de mapper la valeur de retour à un message spécifique.

      • Les caractères spéciaux ^ ou $ peuvent être utilisés pour rechercher des expressions au début ou à la fin d'une ligne. Par exemple, la saisie de « ^AAA » (sans les guillemets) renverra Found si la chaîne « AAA » est au début de la ligne, cependant, elle renverra Not found si la ligne contient mais commence par autre chose que « AAA ». De même, saisir "AAA$" ne trouvera la chaîne que si elle se trouve à la fin de la ligne.

      • Si un ensemble de combinaisons chaîne/valeur au format "1=AAA, 2=BBB" ou "1=AAA,2=BBB,0=*" est entré et qu'une chaîne de l'ensemble est trouvée après la position actuelle sur le ligne actuelle, le nombre approprié est affecté comme valeur de sortie (le deuxième exemple renvoie 0 pour les chaînes ne figurant pas dans l'ensemble). Cela permet d'avoir plus de valeurs de retour que la valeur par défaut de 0 ou 1. De plus, ces valeurs de retour peuvent ensuite être mappées aux messages de sortie à l'aide du champ Enum .

      • Les caractères spéciaux qui font généralement partie d'une expression régulière, par exemple "(", doivent être échappés avec une barre oblique inverse pour être correctement mis en correspondance.

      • Le pointeur d'analyse est défini sur le premier caractère après l'expression évaluée qui n'est pas un espace, une tabulation ou une barre verticale (| ou ¦) ou sur la colonne suivante si un délimiteur a été défini.

    • Compter les correspondances de chaîne X

      • Si un paramètre de ligne a été émis dans la séquence ci-dessus, toutes les occurrences d'une chaîne dans la ligne actuelle sont comptées, sinon toutes les occurrences de la chaîne dans l'ensemble du fichier sont comptées.

      • Le pointeur d'analyse n'est pas déplacé.

    • Texte du message d'information

      • Le texte depuis l'emplacement actuel du pointeur d'analyse jusqu'à la fin de la ligne est copié dans le message d'information. S'il n'y a pas de texte, le code de réponse est mis à 9 ( Texte pour info introuvable ) et l'exécution est terminée.

      • Le pointeur d'analyse n'est pas déplacé.

Valeurs de fichier d'analyse et limites d'alarme

Le travail de fichier d'analyse peut entrer dans les états de maintenance Maintenance Ok ou Maintenance Major , selon les autres limites d'alarme configurées. Par exemple, si la limite d'alarme suivante est configurée :

Le travail entrera dans l'état Maintenance OK si la comparaison de texte correspond à une certaine chaîne ou expression et s'il est autrement dans l'état Ok . Cela peut être utilisé pour mettre le travail et son périphérique parent (la maintenance est propagée vers le haut d'un travail à son périphérique) en mode maintenance en fonction de ce qui est trouvé lors de l'analyse d'un fichier contenant des informations sur l'état de maintenance, par exemple à partir d'autres systèmes de surveillance comme Nagios. Toutes les autres limites d'alarme ci-dessous peuvent également être utilisées dans la limite d'alarme de maintenance.

Valeur / Limite d'alarme

Description

Événement1-X

Vérifie si un événement a été déclenché en fonction du paramètre Set Event sequence ci-dessus.

Valeur de retour1-X

Valeur numérique définie par l'utilisateur basée sur le paramètre Obtenir la séquence de valeurs ci-dessus.

Valeur de taux1-X

Valeur de taux numérique définie par l'utilisateur basée sur le paramètre Obtenir la séquence de valeurs de taux ci-dessus.

Valeur différentielle1-X

Valeur de différence numérique définie par l'utilisateur basée sur le paramètre Obtenir la séquence de valeurs de différence ci-dessus.

Valeur de chaîne1-X

Valeur de chaîne définie par l'utilisateur basée sur le paramètre Get string value sequence ci-dessus.

Comparer result1-X

Valeur définie par l'utilisateur basée sur le paramètre de séquence de valeurs de chaîne de comparaison ci-dessus.

Compteur de correspondance1-X

Valeur définie par l'utilisateur basée sur le paramètre de séquence de correspondances de chaîne de nombre ci-dessus.

Code de réponse

0 Pas d'erreur
-1 Erreur générale
1 Fichier introuvable
2 Fichier trop ancien
3 Contenu du fichier trop ancien
4 Fichier trop long
5 Ligne introuvable
6 Colonne introuvable
7 Chaîne introuvable
8 Valeur introuvable
9 Texte pour info introuvable
10 Échec de la récupération du fichier
11 Échec de la transformation du fichier

Code d'erreur

Code d'erreur de tâche générique (voir section Codes d'erreur de tâche )

Exemples de fichiers d'analyse

Exemple 1 - Parse un fichier file.txt qui a le contenu suivant pour lire les 3 valeurs dans les 3 dernières lignes :

11;OK;33;44.9888;MK;Duration (average): 203.6533s
Open cases:
10
8
1

La configuration de la tâche se présente comme suit :

La définition d' unité du premier élément Get value est :

Les 2 autres définitions d'unité sont similaires avec respectivement les noms Minor et Major .

Sortie 1

Exemple 2 - Analyser le même fichier.txt et extraire les valeurs de sa première ligne en fonction des colonnes

La définition Enum de l'élément Compare string 1 indique :

Texte entier : 0=Le statut est bon,1=Le statut n'est pas très bon,2=Le statut est inconnu

La définition d' unité pour Get value 1 indique :

Notez l'augmentation de Precision , pour pouvoir lire des valeurs numériques à virgule flottante.

Sortie 2

Exemple 3 - Recherche d'une ligne contenant le nom du server à l'aide de balises variables. Restez sur cette ligne et obtenez les valeurs MeasurementValue1 et CPU_Usage

Le contenu du fichier est :

Timestamp=Fri Oct 31 09:55:20 CET 2017
ServerName=myserver01;MeasurementValue1=1.11;CPU_Usage=10%;EnumValue1=OK;
ServerName=myserver02;MeasurementValue1=1.22;CPU_Usage=22%;EnumValue1=BAD;

Le nom de l'appareil est myserver01 .

Les définitions d'unité sont :

pi=v2">

L'utilisation des balises SKOOR Engine permet de copier des travaux sur différents appareils et de les faire fonctionner en utilisant le nom d'appareil correct.

Sortie 3

Exemple 4 - Lire un horodatage à partir d'un fichier généré régulièrement et lire la valeur du débit pour obtenir le nombre de paquets entrants et sortants sur une interface réseau

Le fichier est généré régulièrement avec le contenu suivant à partir d'un travail d'exécution avec le contenu de script Inline suivant :

date +%s%N | cut -c1-13
netstat -I=eth0

La première ligne imprime l'horodatage (secondes depuis le 1.1.1970) avec une précision de msec, la deuxième ligne imprime les statistiques de réception/transmission sur l'interface réseau eth0. Le fichier généré est :

1512726065120
Kernel Interface table
Iface       MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500   0  5761332      0      0      0  2932100      0      0      0 BMRU

Les valeurs de débit (paquets entrants et sortants) sont indépendantes des intervalles d'exécution de la tâche d'exécution et de la tâche d'analyse de fichier. Habituellement, on placerait la tâche d'exécution et la tâche d'analyse sous une tâche Batch et leur attribuerait un intervalle d'exécution de No repeat , et seule la tâche Batch aurait un intervalle d'exécution.

La tâche d'analyse de fichier se présente comme suit :

Les définitions d'unité sont :

Sortie 4

Les valeurs sont imprimées après la deuxième exécution du travail (la valeur du taux nécessite une comparaison avec la mesure précédente) :

Exemple 5 - Générer des événements à partir de contenu analysé

Lire un fichier généré via une tâche externe et rechercher certaines chaînes. Génère un événement1 lorsque la chaîne Error est trouvée. Réinitialisez l'événement après un certain temps. Générez également un événement2 si la chaîne Process mysqld terminated est trouvée. Réinitialisez le deuxième événement uniquement si la chaîne Process mysqld started est trouvée plus bas dans le fichier ou lors de la prochaine exécution du travail.

Dans cet exemple, le premier élément de la séquence d'analyse définit le paramètre de mode Syslog . Cela garantit que seules les nouvelles données du fichier sont analysées. Les anciennes parties du fichier qui ont été analysées lors de la dernière exécution du travail ne sont plus prises en compte pour les exécutions de travail suivantes. Si la première exécution du travail trouve la chaîne Error dans le fichier, elle définit Event1. Si aucune nouvelle chaîne d' erreur n'est trouvée au cours des 10 prochaines exécutions de tâche (l'intervalle de tâche est défini sur 1 minute), l'événement est réinitialisé.

Le mécanisme d'événement permet au travail de revenir à un état OK après un certain temps tout en ayant toujours la possibilité de déclencher un e-mail d'alarme lorsqu'un événement est défini.

Les définitions Enum sont :

Les limites d'alarme sont configurées comme suit :

Sortie 5