Arreglo de datos de registro utilizando una regla de sustitución

En IBM® Cloud Logs, puede utilizar la regla Sustituir para cambiar la estructura del registro, reparar registros con formato incorrecto, cambiar la gravedad del registro o enmascarar información.

Antes de empezar

Las reglas de análisis se organizan dentro de Grupos de reglas. Cada grupo tiene un nombre y un conjunto de reglas con una relación lógica entre ellos. Los registros se procesan según el orden del grupo de reglas (desde el principio hasta el final). A continuación, se procesan mediante el orden de las reglas dentro del grupo de reglas y de acuerdo con los operadores lógicos entre ellas (AND/OR). Las reglas le ayudan a procesar, analizar y reestructurar datos de registro para prepararse para la supervisión y el análisis. Para obtener más información, consulte Trabajar con grupos de reglas.

Configuración de una regla de sustitución

Complete los pasossiguientes:

  1. Pulse el icono Conducto de datos icono Conducto de datos > Reglas de análisis y pulse Nuevo grupo de reglas.

  2. En la sección Detalles, especifique el Nombre de grupo de reglas y la Descripción de grupo de reglas.

  3. En la sección Buscador de coincidencias de reglas, configure las aplicaciones, subsistemas y gravedades que definen los registros en los que aplicar las reglas que se incluyen en el grupo de reglas.

  4. En la sección Reglas, seleccione Sustituir icono Sustituir regla de análisis.

    1. Especifique un nombre.

    2. Puede especificar una descripción opcional.

    3. Seleccione un campo fuente. Es el campo en el que se aplica RegEx.

    4. Seleccione un campo de destino. Este es el campo que se rellenará con los resultados de la aplicación de la expresión RegEx.

    5. Especifique la Expresión regular (RegEx).

    6. Especifique una serie de sustitución que sustituirá la RegExcoincidente.

    7. Conmute el estado a ACTIVE si desea que la regla esté habilitada.

  5. Añada grupos de reglas adicionales pulsando Añadir regla y seleccionando el tipo de regla deseado. Conmute AND/OR para seleccionar cómo desea que se procesen las reglas adicionales.

  6. Haga clic en Crear grupo de reglas.

Ejemplo: reparación de un registro JSON con formato incorrecto

Un caso de uso común para una regla de sustitución es reparar registros JSON con formato incorrecto.

En el ejemplo siguiente, los registros JSON se envían con un prefijo de fecha que rompe el formato JSON y los convierte en registros no estructurados.

RegEx identifica la subserie y elimina la serie incorrecta del registro.

El registro original es:

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

El RegEx:

.*{

La serie para sustituir el resultado de evaluar la expresión RegEx es:

{

El registro resultante:

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

Ejemplo: volver a crear un registro con campos anidados

El ejemplo siguiente muestra cómo utilizar una regla de sustitución para volver a crear un registro con campos anidados. Los campos anidados son una restricción en las reglas de extracción y análisis.

El registro original:

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

El RegEx:

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

Cada uno de los paréntesis representa un grupo de captura que $n n=1..7 puede abordar.

La serie de sustitución:

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

El registro resultante;

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

Ejemplo: Transformación de un campo JSON de serie (con escape) en un objeto

La regla inner_json es una regla de sustitución especial que toma un valor de campo en un registro JSON que incluye stringified (escape) JSON y transformarlo en un objeto.

En el ejemplo siguiente, el registro original es:

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

El mensaje de campo tiene un valor de serie que es un JSON legal con escape.

Nuestra regla de sustitución especial cambia el nombre del campo del nombre original "message" a "inner_json":

El RegEx:

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

Este RegEx identifica un mensaje de nombre de campo con el principio del JSON con escape.

La serie de sustitución es:

“inner_json”:”{\”

Este ejemplo sustituye sólo el nombre de campo y nada más.

El registro resultante:

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