Protokolldaten mithilfe einer Ersetzungsregel korrigieren
In IBM® Cloud Logskönnen Sie die Regel Ersetzen verwenden, um die Protokollstruktur zu ändern, falsch formatierte Protokolle zu reparieren, die Protokollwertigkeit zu ändern oder Informationen zu maskieren.
Vorbereitende Schritte
Parserregeln sind in Regelgruppenorganisiert. Jede Gruppe hat einen Namen und eine Gruppe von Regeln mit einer logischen Beziehung zwischen ihnen. Protokolle werden gemäß der Reihenfolge der Regelgruppe (vom Anfang bis zum Ende) verarbeitet.
Sie werden dann nach der Reihenfolge der Regeln innerhalb der Regelgruppe und gemäß den logischen Operatoren zwischen ihnen (AND/OR) verarbeitet. Mithilfe von Regeln können Sie Protokolldaten verarbeiten, analysieren und umstrukturieren,
um die Überwachung und Analyse vorzubereiten. Weitere Informationen finden Sie unter Mit Regelgruppen arbeiten.
Ersetzungsregel konfigurieren
Führen Sie die folgenden Schritte aus:
-
Klicken Sie auf das Symbol Datenpipeline
> Parsing von Regeln und anschließend Neue Regelgruppe.
-
Geben Sie im Abschnitt Details den Regelgruppennamen und die Regelgruppenbeschreibungein.
-
Konfigurieren Sie im Abschnitt Regelabgleichkomponente die Anwendungen, Subsysteme und Wertigkeiten, die die Protokolle definieren, auf die die in der Regelgruppe enthaltenen Regeln angewendet werden sollen.
-
Wählen Sie im Abschnitt Regeln Ersetzen
aus.
-
Geben Sie einen Namen ein.
-
Geben Sie optional eine Beschreibung ein.
-
Wählen Sie ein Quellfeld aus. Dies ist das Feld, auf das der RegEx angewendet wird.
-
Wählen Sie ein Zielfeld aus. Dies ist das Feld, das mit den Ergebnissen der Anwendung des Ausdrucks RegEx gefüllt wird.
-
Geben Sie den regulären Ausdruck (RegEx) ein.
-
Geben Sie eine Ersetzungszeichenfolge ein, die den übereinstimmenden RegExersetzt.
-
Schalten Sie den Status auf AKTIV um, wenn die Regel aktiviert sein soll.
-
-
Fügen Sie weitere Regelgruppen hinzu, indem Sie auf Regel hinzufügen klicken und den gewünschten Regeltyp auswählen. Aktivieren Sie AND/OR, um auszuwählen, wie die zusätzlichen Regeln verarbeitet werden.
-
Klicken Sie auf Regelgruppe erstellen.
Beispiel: Ein falsch formatiertes JSON-Protokoll reparieren
Ein allgemeiner Anwendungsfall für eine Ersetzungsregel ist die Reparatur falsch formatierter JSON-Protokolle.
Im folgenden Beispiel werden die JSON-Protokolle mit einem Datumspräfix gesendet, das das JSON-Format unterbricht und in unstrukturierte Protokolle umwandelt.
RegEx gibt die Unterzeichenfolge an und entfernt die falsche Zeichenfolge aus dem Protokoll.
Das ursprüngliche Protokoll lautet:
2020-08-07 {“status”:”OK”, “user”:John Smith”, “ops”:”J1”}
Die RegEx:
.*{
Die Zeichenfolge zum Ersetzen des Ergebnisses der Auswertung des Ausdrucks RegEx lautet wie folgt:
{
Das resultierende Protokoll:
{"status":"OK", "user":"John Smith", "ops":"J1"}
Beispiel: Protokoll mit verschachtelten Feldern erneut erstellen
Das folgende Beispiel zeigt, wie eine Ersetzungsregel zum erneuten Erstellen eines Protokolls mit verschachtelten Feldern verwendet wird. Verschachtelte Felder sind eine Einschränkung in den Extraktions-und Parserregeln.
Das ursprüngliche Protokoll:
{"ops":"G1","user":"John Smith-2125 Sierra Ventura Dr.-Sunnyvale-CA-94054","status":"305"}
Die RegEx:
(.*user"):"([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)",([^$]*)
Jede der Klammern stellt eine Erfassungsgruppe dar, die von $n n=1..7 adressiert werden kann.
Die Ersetzungszeichenfolge:
$1:{"name":"$2","address":"$3","city":"$4","state":"$5","zip":"$6"},$7
Das resultierende Protokoll;
{
"ops":"G1",
"User":{
"name":"John Smith",
"address":"2125 Sierra Ventura Dr.",
"city":"Sunnyvale",
"state":"CA",
"Zip":"94054"
},
"status":"305"
}
Beispiel: In Zeichenfolgen konvertiertes JSON-Feld (mit Escapezeichen) in ein Objekt umsetzen
Die Regel "inner_json" ist eine spezielle Ersetzungsregel, die einen Feldwert in einem JSON-Protokoll verwendet, das in Zeichenfolgen konvertiert (mit Escapezeichen versehen) ist. JSON und wandeln sie in ein Objekt um.
Im folgenden Beispiel lautet das ursprüngliche Protokoll wie folgt:
{
"server":"opa",
"IBC":"45ML",
"thread":"1201",
"message":"{\"first_name\":\"John\", \"last_name\":\"Smith\", \"userID\":\"AB12345\", \"duration\":45}"
}
Die Feldnachricht hat einen Zeichenfolgewert, bei dem es sich um eine gültige JSON mit Escapezeichen handelt.
Unsere spezielle Ersetzungsregel ändert den Namen des Felds vom ursprünglichen Namen "message" in "inner_json":
Die RegEx:
“message”\s*:\s*”{\s*\\”
Dieser RegEx gibt eine Feldnamennachricht mit dem Anfang der mit Escapezeichen maskierten JSON an.
Die Ersetzungszeichenfolge lautet:
“inner_json”:”{\”
In diesem Beispiel wird nur der Feldname und nichts anderes ersetzt.
Das resultierende Protokoll:
{
"server":"opa",
"inner_json":{
"first_name":"John" ,
"last_name":"Smith" ,
"userID":"AB12345" ,
"duration":45
}
}