Correction des données de journal à l'aide d'une règle de remplacement

Dans IBM® Cloud Logs, vous pouvez utiliser la règle Remplacer pour modifier la structure du journal, réparer les journaux incorrectement formatés, modifier la gravité du journal ou masquer les informations.

Avant de commencer

Les règles d'analyse syntaxique sont organisées dans des groupes de règles. Chaque groupe a un nom et un ensemble de règles avec une relation logique entre eux. Les journaux sont traités selon l'ordre du groupe de règles (du début à la fin). Ils sont ensuite traités par l'ordre des règles au sein du groupe de règles et en fonction des opérateurs logiques qui les séparent (AND/OR). Les règles vous aident à traiter, analyser et restructurer les données de journal afin de préparer la surveillance et l'analyse. Pour plus d'informations, voir Utilisation de groupes de règles.

Configuration d'une règle de remplacement

Procédez comme suit :

  1. Cliquez sur l'icône Pipeline de données icône Pipeline de données > Règles d'analyse syntaxique et cliquez sur Nouveau groupe de règles.

  2. Dans la section Détails, entrez le Nom du groupe de règles et la Description du groupe de règles.

  3. Dans la section Rule Matcher, configurez les applications, les sous-systèmes et les niveaux de gravité qui définissent les journaux sur lesquels appliquer les règles incluses dans le groupe de règles.

  4. Dans la section Règles, sélectionnez Remplacer icône Remplacer la règle d'analyse syntaxique.

    1. Entrez un nom.

    2. Si vous le souhaitez, entrez une description.

    3. Sélectionnez un champ source. Il s'agit de la zone sur laquelle l' RegEx est appliquée.

    4. Sélectionnez un champ de destination. Il s'agit de la zone qui sera remplie avec les résultats de l'application de l'expression RegEx.

    5. Entrez l' expression régulière (RegEx).

    6. Entrez une chaîne de remplacement qui remplacera l' RegExcorrespondante.

    7. Basculez le statut sur ACTIF si vous souhaitez que la règle soit activée.

  5. Ajoutez des groupes de règles supplémentaires en cliquant sur Ajouter une règle et en sélectionnant le type de règle souhaité. Activez AND/OR pour sélectionner la façon dont vous souhaitez que les règles supplémentaires soient traitées.

  6. Cliquez sur Créer un groupe de règles.

Exemple: Réparation d'un journal JSON incorrectement formaté

Un cas d'utilisation courant pour une règle de remplacement consiste à réparer des journaux JSON incorrectement formatés.

Dans l'exemple suivant, les journaux JSON sont envoyés avec un préfixe de date qui rompt le format JSON et les transforme en journaux non structurés.

RegEx identifie la sous-chaîne et supprime la chaîne incorrecte dans le journal.

Le journal d'origine est:

2020-08-07 {“status”:”OK”, “user”:John Smith”, “ops”:”J1”}

Le RegEx:

.*{

La chaîne qui remplace le résultat de l'évaluation de l'expression RegEx est la suivante:

{

Le journal résultant:

{"status":"OK", "user":"John Smith", "ops":"J1"}

Exemple: régénération d'un journal avec des zones imbriquées

L'exemple suivant montre comment utiliser une règle de remplacement pour régénérer un journal avec des zones imbriquées. Les zones imbriquées sont une contrainte dans les règles d'extraction et d'analyse.

Le journal d'origine:

{"ops":"G1","user":"John Smith-2125 Sierra Ventura Dr.-Sunnyvale-CA-94054","status":"305"}

Le RegEx:

(.*user"):"([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)",([^$]*)

Chacune des parenthèses représente un groupe de capture qui peut être traité par $n n=1..7.

Chaîne de remplacement:

$1:{"name":"$2","address":"$3","city":"$4","state":"$5","zip":"$6"},$7

Le journal résultant ;

{
   "ops":"G1",
   "User":{
      "name":"John Smith",
      "address":"2125 Sierra Ventura Dr.",
      "city":"Sunnyvale",
      "state":"CA",
      "Zip":"94054"
   },
   "status":"305"
}

Exemple: transformation d'une zone JSON sous forme de chaîne (avec caractères d'échappement) en objet

La règle inner_json est une règle de remplacement spéciale qui prend une valeur de zone dans un journal JSON qui inclut des caractères d'échappement (stringified) JSON, et transformez-le en objet.

Dans l'exemple suivant, le journal d'origine est:

{
 "server":"opa",
 "IBC":"45ML",
 "thread":"1201",
 "message":"{\"first_name\":\"John\", \"last_name\":\"Smith\", \"userID\":\"AB12345\", \"duration\":45}"
}

Le message de zone a une valeur de chaîne qui est un JSON légal avec caractères d'échappement.

Notre règle de remplacement spéciale modifie le nom de la zone du nom d'origine "message" en "inner_json":

Le RegEx:

“message”\s*:\s*”{\s*\\”

Cette RegEx identifie un message de nom de zone avec le début du code JSON avec caractères d'échappement.

La chaîne de remplacement est:

“inner_json”:”{\”

Cet exemple remplace uniquement le nom de zone et rien d'autre.

Le journal résultant:

{
   "server":"opa",
   "inner_json":{
     "first_name":"John" ,
     "last_name":"Smith" ,
     "userID":"AB12345" ,
     "duration":45
  }
}