Parsefile
Fonction | Analyse un fichier pour en extraire du Texte et/ou des valeurs, construire des valeurs différentielles. Jusqu'à 32 valeurs / valeurs de chaîne / valeurs différentielles / valeurs de taux / résultats de comparaison / compteurs de correspondance et événements sont possibles par tâche d'analyse. |
---|---|
Alarme | Correspondances de chaînes, comptage de chaînes, valeurs, valeurs de chaînes, valeurs différentielles, valeurs de taux, événements, âge du fichier, âge du contenu du fichier, code de réponse. Spécial : La tâche peut entrer dans l'état Maintenance OK ou Maintenance Major, en fonction des limites d'alarme configurées. |
Détails du fichier d'analyse
Paramètres du fichier de parsage
Paramètre | Description de la méthode |
---|---|
Méthode d'analyse | Le fichier à analyser peut être un fichier local (par défaut) ou il peut être récupéré en premier lieu à l'aide de l'un des protocoles suivants : HTTP Si l'un des protocoles distants est choisi, des paramètres supplémentaires sont affichés pour le chemin d'accès à la source et l'authentification de l'utilisateur. Pour plus d'informations sur la configuration, voir la section sur la tâche Fetchfile. Exemple : récupérer d'abord un fichier sur 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 autre solution consiste à créer un travail par lots avec un travail Fetchfile ou un travail Fetchfile Agent et un travail 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 le menu déroulant de la méthode, dès que les propriétés Nom d'utilisateur de l'agent et Mot de passe de l'agent sont définies sur le périphérique des jobs. Sur Windows 10, le serveur OpenSSH peut être installé à partir des fonctionnalités optionnelles. Après avoir démarré le service correspondant, les fichiers peuvent être copiés à l'aide de scp. |
Nom de fichier | Le nom de fichier à analyser. Le chemin peut être spécifié relativement au répertoire parse par défaut sur le collecteur (défini dans le fichier /etc/opt/eranger/eranger-collector.cfg, normalement défini sur /var/opt/run/eranger/collector/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. Si la date et l'heure sont antérieures à la valeur indiquée, la tâche émet un Warning (File too old). L'âge du fichier peut être saisi en minutes ou en secondes. Les formats tels que "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 été modifié au cours de la période saisie ici, la tâche émet un Warning (File content too old). Le format de l'âge du contenu du fichier est le même que celui du paramètre Âge du fichier. |
Transformation → 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 d'être analysé : Non utilisé (pas de prétraitement) |
Séquence | Voir la section suivante |
La liste déroulante Tags permet de saisir des variables prédéfinies dans les champs ci-dessus, par exemple $NAME$ pour le nom du travail.
Transformations de fichiers standard
Si un fichier provient d'un système autre que Linux, certains caractères spéciaux doivent être adaptés pour l'analyse. La liste suivante indique les cas qui sont gérés automatiquement par le travail :
Les caractères de retour à la ligne de Windows sont supprimés (ce qui était fait auparavant 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 d'être analysé.
Si une transformation est définie, rien n'est fait au fichier (il est supposé que la transformation traite le fichier correctement)
En cas d'échec de la transformation, les codes de réponse et d'erreur de la tâche afficheront les messages suivants :
Le code de réponse 11 (Échec de la transformation du 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 Parsefile
Comportement général
Si le fichier n'est pas trouvé, le code de réponse est fixé à 1(Fichier non trouvé) 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 2(Fichier trop ancien), mais le fichier est quand même analysé.
Si le contenu du fichier est trop ancien, le code de réponse est 3(Contenu du fichier trop ancien), mais le fichier est quand même analysé.
Si un fichier contient plus de 100 000 lignes, le code de réponse est 4(Fichier trop long) et l'exécution est interrompue. La limite par défaut peut être augmentée ou supprimée en ajoutant la ligne suivante dans le fichier de configuration de SKOOR Engine /opt/eranger/etc/eranger-collector.cfg:
parsefile_line_limit = 1000000 raise limit to a million lines parsefile_line_limit = 0 remove limit altogether
Lors de l'ajout de nouvelles valeurs, de valeurs de chaîne, de valeurs Diff, etc., un maximum de 32 entrées est possible dans la séquence d'analyse pour chaque type de valeur. Par exemple, lorsque vous ajoutez 3 valeurs à l'aide de l'élément Get value, commencez par ajouter Get value avec l'index 1, puis 2, puis 3, en augmentant le nombre d'index. L'interface utilisateur ne permet de sélectionner qu'un index maximum basé sur le 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
Configurer
Filtre (inclure)
Toutes les lignes du fichier qui ne contiennent pas l'expression sont ignorées. Par exemple, si vous saisissez "localhost" (sans guillemets), seules les lignes contenant "localhost" seront prises en compte ; les autres lignes seront ignorées.
Filtrer (exclure)
Cette fonction fonctionne dans l'autre sens, c'est-à-dire comme un filtre négatif.
Toutes les lignes contenant l'expression sont ignorées pour l'analyse du reste de la séquence.
Définir le délimiteur
Le délimiteur de colonne par défaut est l'espace blanc (1 espace, plusieurs espaces consécutifs, tabulations). Cela permet de diviser les lignes en mots.
Un autre délimiteur peut être choisi ici. Saisissez 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 le réinitialiser, laissez le champ de texte vide.
Le décompte des colonnes commence à 0 (zéro).
Mode Syslog
Si cette option est activée, l'analyse se poursuit avec la première nouvelle ligne du fichier ajoutée depuis la dernière exécution du travail.
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 activée, la casse est ignorée pour les comparaisons de chaînes de caractères.
Ignorer l'introuvable
Si une ligne, une expression ou une colonne n'est pas trouvée, le code de réponse n'est pas fixé à 7 Chaîne non trouvée, mais l'exécution du travail est interrompue.
Continuer après l'absence de résultat
Si cette option est activée, l'analyse est poursuivie après qu'une ligne ou une colonne n'a pas été trouvée.
Détecter le dépassement activé/désactivé
Si cette option est activée, tous les paramètres de valeur Diff qui suivent dans la séquence ignoreront les valeurs inférieures à la valeur mesurée lors de l'exécution du travail précédent (seules les différences positives sont autorisées).
Cette fonction est principalement utilisée pour les compteurs. Ce paramètre peut être désactivé plus tard dans la séquence.
Obtenir un horodatage (taux)
Un horodatage peut être lu à partir d'un fichier pour des calculs exacts en utilisant le paramètre de séquence Get rate value (Obtenir la valeur du taux). 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.
Recherche
Les paramètres suivants se réfèrent à des lignes. La portée du paramètre suivant est la ligne trouvée par le paramètre actuel. Si la ligne demandée n'existe pas, le code de réponse est 5(Ligne non trouvée) et l'exécution est interrompue, sauf si l'option Continuer après non trouvée est activée.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 placé au début de la première ligne qui évalue la chaîne/expression.
Si une ligne contenant une telle expression ne peut être trouvée et que l'option "Continue after not found" est activée, 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é.
Passer à 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 contenant une telle expression ne peut être trouvée et que l'option "Continue after not found" est activée, 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 placé au début de la dernière ligne qui évalue la chaîne/l'expression.
Si une ligne contenant une telle expression ne peut être trouvée et que l'option "Continue after not found" est activée, 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é.
Recherche basée sur le délimiteur
Les commandes suivantes dépendent de la définition d'un délimiteur. Si aucun délimiteur n'est défini, les espaces blancs (espaces ou tabulations) sont utilisés comme délimiteurs.Aller à la colonne #
Le pointeur d'analyse est positionné sur le premier caractère de la colonne correspondante (0..n) dans la ligne en cours.
Si la colonne n'est pas trouvée, le code de réponse est 6(Colonne non trouvée) et l'exécution est terminée.
Si la colonne n'est pas trouvée et que l'option Continue after not found est activée, la position du pointeur d'analyse n'est pas modifiée.
La portée des commandes de chaîne suivantes est par défaut le fichier entier ; si l'une des commandes de ligne a été appelée précédemment, la portée est la ligne actuelle.
Si le champ est vide, le code d'erreur est 7(paramètre non valide) et l'exécution est interrompue.
Aller à la première chaîne
En fonction de la portée, la première occurrence de la chaîne dans l'ensemble du fichier / dans la ligne actuelle 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 interrompue et le code de réponse est fixé à 7(Chaîne non trouvée), sauf si l'option Ignorer non trouvée ou Continuer après non trouvée a été définie ci-dessus.
Aller à la chaîne suivante
Même chose que ci-dessus, mais la recherche commence à la position actuelle, de sorte que l'analyseur syntaxique recherche l'occurrence suivante.
Aller à la dernière chaîne
Comme ci-dessus, mais l'analyseur syntaxique recherche la dernière occurrence d'une expression.
Les paramètres suivants permettent de gérer les événements conformément à la tâche Eventlog de l'agent et peuvent suivre jusqu'à 4 événements.
Événement
Set eventX
Un événement est déclenché lorsqu'une ligne correspond à une expression ou à une chaîne donnée.
Il est possible de configurer et de définir jusqu'à 32 événements.
Réinitialiser l'événementX
Un événement est réinitialisé lorsqu'une ligne suivante correspond à une expression donnée.
Il est possible de configurer et de définir jusqu'à 32 événements de réinitialisation.
Réinitialisation de l'événementX après
Un événement est réinitialisé après un délai donné (par exemple 10m = 10 minutes).
Jusqu'à 32 délais peuvent être configurés et définis.
La condition de réinitialisation n'est évaluée qu'au moment 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 l'exécution du travail suivant, l'événement sera réinitialisé si le délai d'attente 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
Dans le cas contraire, le code de réponse est fixé à 8(valeur non trouvée) et l'exécution est terminée.
Le pointeur d'analyse est placé sur le premier caractère après la valeur trouvée.
En appuyant sur le bouton Unité, la boîte de dialogue suivante s'affiche :
On peut y spécifierle nom de la valeur à renvoyer (facultatif)
son unité (par exemple, les secondes, facultatif)
un diviseur par lequel la valeur doit être divisée (facultatif)
la précision de la 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 avec la valeur trouvée lors de la dernière exécution est attribuée.
Le pointeur d'analyse est placé 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 :
(Valnow -Vallast) / (tnow - tlast)
En général, l'horodatage de l'exécution du travail est utilisé pour ce calcul. Il peut toutefois être lu dans le fichier à l'aide de l'élément Get timestamp (rate) (voir ci-dessus).
Si la différence d'horodatage est <= 0, aucune nouvelle valeur de taux n'est générée.
Obtenir une valeur de chaîneX
Cette option permet de recevoir une valeur de chaîne de caractères à partir d'un fichier. N'utilisez cette fonction que pour les chaînes qui ne changent pas souvent, c'est-à-dire lorsque la chaîne fait partie d'un ensemble de chaînes connues pour faire partie du texte analysé.
La chaîne peut être convertie en 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 de caractères, mais aussi une expression régulière) est évaluée et la valeur de retour est soit 1(Trouvé), soit 0(Non trouvé).
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 résultat1 : 1 (Trouvé)
Cela permet de faire correspondre 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 guillemets) renvoie le message Trouvé si la chaîne "AAA" se trouve au début de la ligne, mais elle renvoie le message Non trouvé si la ligne contient mais commence par autre chose que "AAA". De même, la saisie de "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 saisi et qu'une chaîne de l'ensemble est trouvée après la position actuelle sur la ligne actuelle, le nombre approprié est attribué comme valeur de sortie (le deuxième exemple renvoie 0 pour les chaînes qui ne font pas partie de l'ensemble). Cela permet d'avoir plus de valeurs de retour que les valeurs par défaut de 0 ou 1. En outre, ces valeurs de retour peuvent ensuite être associées à des 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 par une barre oblique inverse pour être correctement pris en compte.
Le pointeur d'analyse est placé sur le premier caractère après l'expression évaluée qui n'est pas un blanc, 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înesX
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 courante sont comptées, sinon toutes les occurrences de la chaîne dans le fichier entier sont comptées.
Le pointeur d'analyse n'est pas déplacé.
Texte du message d'information
Le texte compris entre l'emplacement actuel du pointeur d'analyse et 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 fixé à 9(Texte pour info introuvable) et l'exécution est terminée.
Le pointeur d'analyse n'est pas déplacé.
Valeurs du fichier d'analyse et seuils d'alarme
La tâche d'analyse syntaxique peut entrer dans les états de maintenance Maintenance OK ou Maintenance Major, en fonction des autres limites d'alarme configurées. Par exemple, si la limite d'alarme suivante est configurée :
Le texte entrera dans l'état Maintenance OK si la comparaison de texte correspond à une certaine chaîne ou expression et s'il est sinon dans l'état Ok. Ceci 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 qui contient des informations sur l'état de maintenance, par exemple à partir d'autres systèmes de surveillance tels que 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 de l'alarme |
---|---|
Événement1-X | Vérifie si un événement a été déclenché sur la base du paramètre Set Event sequence ci-dessus. |
Valeur de retour1-X | Valeur numérique définie par l'utilisateur en fonction du paramètre de séquence Get value ci-dessus. |
Taux valeur1-X | Valeur numérique définie par l'utilisateur en fonction du paramètre de séquence Get rate value ci-dessus. |
Diff value1-X | Valeur numérique de diff définie par l'utilisateur et basée sur le paramètre de séquence Get diff value ci-dessus. |
String value1-X | Valeur de chaîne définie par l'utilisateur en fonction du paramètre de séquence " Get string value" ci-dessus. |
Compare result1-X | Valeur définie par l'utilisateur en fonction du paramètre de séquence Compare string value ci-dessus. |
Match counter1-X | Valeur définie par l'utilisateur en fonction du paramètre de séquence Count string matches ci-dessus. |
Code de réponse | 0 Pas d'erreur |
Code d'erreur | Code d'erreur générique du travail (voir la section Codes d'erreur du travail) |
Exemples de fichiers d'analyse
Exemple 1 - Analyser un fichier file.txt dont le contenu est le suivant pour lire les 3 valeurs des 3 dernières lignes :
11;OK;33;44.9888;MK;Duration (average): 203.6533s Open cases: 10 8 1
La configuration du travail se présente comme suit :
La définition de l'unité du premier élément de la valeur Get est :
Les deux autres définitions d'unité sont similaires et portent respectivement les noms Minor et Major.
Sortie 1
Exemple 2 - Analyse du même fichier .txt et extraction des valeurs de sa première ligne en fonction des colonnes
La définition Enum de l'élément Compare string 1 est la suivante :
Texte entier : 0=l'état est bon,1=l'état est moins bon,2=l'état est inconnu
La définition de l'unité pour obtenir la valeur 1 se lit comme suit :
Remarquez la précision accrue, afin de pouvoir lire les valeurs numériques en virgule flottante.
Sortie 2
Exemple 3 - Recherchez une ligne contenant le nom du serveur à l'aide des balises variables. Restez sur cette ligne et obtenez les valeurs MeasurementValue1 et CPU_Usage.
Le contenu du fichier est le suivant :
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 des unités sont les suivantes
L'utilisation des balises SKOOR Engine permet de copier des tâches sur différents périphériques tout en les faisant fonctionner avec le nom de périphérique correct.
Sortie 3
Exemple 4 - Lecture d'un horodatage à partir d'un fichier généré régulièrement et lecture de la valeur du taux 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 job Execute 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 1.1.1970) avec une précision en msec, la deuxième ligne imprime les statistiques de réception/transmission sur l'interface réseau eth0. Le fichier généré est le suivant :
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 des tâches execute et parsefile. Habituellement, on place les tâches execute et parsefile sous une tâche Batch et on leur attribue un intervalle d'exécution de No repetition, et seule la tâche Batch a un intervalle d'exécution.
Le job parsefile se présente comme suit :
Les définitions des unités sont les suivantes
Sortie 4
Les valeurs sont imprimées après la deuxième exécution du travail (la valeur du taux doit être comparée à la mesure précédente) :
Exemple 5 - Générer des événements à partir du contenu analysé
Lisez un fichier généré par un travail externe et recherchez certaines chaînes de caractères. Générer un événement1 lorsque la chaîne Error est trouvée. Réinitialisez l'événement après un certain temps. Générer également un événement2 si la chaîne Process mysqld terminated est trouvée. Réinitialiser le second événement uniquement si la chaîne Process mysqld started est trouvée plus loin 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 Syslog mode. 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 suivantes. Si le premier job exécuté trouve la chaîne Error dans le fichier, il active l'événement 1. Si aucune nouvelle chaîne Error n'est trouvée au cours des 10 exécutions de tâches suivantes (l'intervalle entre les tâches est fixé à 1 minute), l'événement est réinitialisé.
Le mécanisme d'événement permet au travail de revenir à l'état OK après un certain temps, tout en conservant la possibilité de déclencher une alarme par courrier électronique lorsqu'un événement est défini.
Les définitions de l'énumération sont les suivantes :
Les limites d'alarme sont configurées comme suit :