Correzione dei dati di log utilizzando una regola di sostituzione
In IBM® Cloud Logs, puoi utilizzare la regola Sostituisci per modificare la struttura del log, riparare i log formattati in modo non corretto, modificare la severità del log o mascherare le informazioni.
Prima di iniziare
Le regole di analisi sono organizzate all'interno di Gruppi regole. Ogni gruppo ha un nome e una serie di regole con una relazione logica tra loro. I log vengono elaborati in base all'ordine del gruppo di regole (dall'inizio alla fine).
Vengono quindi elaborati in ordine di regole all'interno del gruppo di regole e in base agli operatori logici tra loro (AND/OR). Le regole consentono di elaborare, analizzare e ristrutturare i dati di log per preparare il monitoraggio
e l'analisi. Per ulteriori informazioni, consultare Gestione dei gruppi di regole.
Configurazione di una regola di sostituzione
Completa i seguenti passi:
-
Fai clic sull'icona Data pipeline
> Parsing rules e fai clic su New Rule Group.
-
Nella sezione Dettagli, immettere il Nome gruppo di regole e la Descrizione gruppo di regole.
-
Nella sezione Matcher regole, configura le applicazioni, i sottosistemi e le gravità che definiscono i log su cui applicare le regole incluse nel gruppo di regole.
-
Nella sezione Regole, selezionare Sostituisci
.
-
Immettere un nome.
-
Facoltativamente, immettere una descrizione.
-
Selezionare un campo sorgente. Questo è il campo a cui viene applicato RegEx.
-
Selezionare un campo di destinazione. Questo è il campo che verrà compilato con i risultati dell'applicazione dell'espressione RegEx.
-
Immettere l' Espressione regolare (RegEx).
-
Immettere una stringa di sostituzione che sostituirà il RegExcorrispondente.
-
Attivare / disattivare lo stato su ATTIVO se si desidera che la regola sia abilitata.
-
-
Aggiungere ulteriori gruppi di regole facendo clic su Aggiungi regola e selezionando il tipo di regola desiderato. Attivare AND/OR per selezionare come si desidera che vengano elaborate le regole aggiuntive.
-
Fare clic su Crea gruppo di regole.
Esempio: ripristino di un log JSON formattato in modo non corretto
Un caso di utilizzo comune per una regola di sostituzione consiste nel riparare i log JSON formattati in modo non corretto.
Nel seguente esempio, i log JSON vengono inviati con un prefisso di data che interrompe il formato JSON e li trasforma in log non strutturati.
RegEx identifica la sottostringa e rimuove la stringa non corretta nel log.
Il log originale è:
2020-08-07 {“status”:”OK”, “user”:John Smith”, “ops”:”J1”}
Il RegEx:
.*{
La stringa per sostituire il risultato della valutazione dell'espressione RegEx è:
{
Il log risultante:
{"status":"OK", "user":"John Smith", "ops":"J1"}
Esempio: ricostruzione di un log con campi nidificati
Il seguente esempio mostra come utilizzare una regola di sostituzione per ricreare un log con campi nidificati. I campi nidificati sono un vincolo nelle regole di estrazione e analisi.
Il log originale:
{"ops":"G1","user":"John Smith-2125 Sierra Ventura Dr.-Sunnyvale-CA-94054","status":"305"}
Il RegEx:
(.*user"):"([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)",([^$]*)
Ogni parentesi rappresenta un gruppo di cattura che può essere indirizzato da $n n=1..7.
La stringa di sostituzione:
$1:{"name":"$2","address":"$3","city":"$4","state":"$5","zip":"$6"},$7
Il log risultante;
{
"ops":"G1",
"User":{
"name":"John Smith",
"address":"2125 Sierra Ventura Dr.",
"city":"Sunnyvale",
"state":"CA",
"Zip":"94054"
},
"status":"305"
}
Esempio: trasformazione del campo JSON stringified (escape) in un oggetto
La regola inner_json è una regola di sostituzione speciale che assume un valore di campo in un log JSON che include stringified (escape) JSON e convertirlo in un oggetto.
Nel seguente esempio, il log originale è:
{
"server":"opa",
"IBC":"45ML",
"thread":"1201",
"message":"{\"first_name\":\"John\", \"last_name\":\"Smith\", \"userID\":\"AB12345\", \"duration\":45}"
}
Il messaggio del campo ha un valore stringa che è un JSON legale con escape.
La regola di sostituzione speciale modifica il nome del campo dal nome originale "message" a "inner_json":
Il RegEx:
“message”\s*:\s*”{\s*\\”
Questo RegEx identifica un messaggio di nome campo con l'inizio del JSON di escape.
La stringa di sostituzione è:
“inner_json”:”{\”
Questo esempio sostituisce solo il nome campo e nient'altro.
Il log risultante:
{
"server":"opa",
"inner_json":{
"first_name":"John" ,
"last_name":"Smith" ,
"userID":"AB12345" ,
"duration":45
}
}