Al crear un analizador, se define cómo extraer las entradas de log de un archivo log y también cómo extraer los campos de una entrada de log.
Abra el menú de navegación y haga clic en Observación y gestión. En Logging Analytics, haga clic en Administración. Se abre la página Visión general de administración.
Los recursos de administración se muestran en el panel de navegación de la izquierda en Recursos. Haga clic en Analizadores.
En la página Analizadores, haga clic en Crear.
Seleccione entre Tipo de registro, Tipo JSON, Tipo XML o Tipo delimitado de las opciones.
Se muestra la página Crear analizador.
En el caso de Tipo de expresión regular, la página Crear analizador se abre en el modo Guiado, por defecto. Continúe en este modo si desea que Logging Analytics genere la expresión regular para analizar los logs después de seleccionar los campos. Si desea escribir una expresión regular para el análisis, cambie al modo Avanzado.
Nota
También puede crear un analizador utilizando un analizador definido por Oracle como plantilla. Seleccione un analizador definido por Oracle en la página Analizadores, haga clic en Duplicar y modifique los valores de los campos según sus requisitos.
Oracle Logging Analytics proporciona muchos analizadores definidos por Oracle para orígenes de log, como logs de volcado de Java Hotspot, varios sistemas, como Linux, Siebel, PeopleSoft, etc., así como para tipos de entidad, como Oracle Database, Oracle WebLogic Server y Oracle Enterprise Manager Cloud Control. Puede acceder a la lista completa de analizadores y orígenes de log soportados desde la interfaz de usuario de Oracle Logging Analytics.
Para realizar otras acciones en el analizador, en la página Analizadores, seleccione el Tipo de creación del analizador y reduzca la búsqueda del analizador seleccionando el Tipo de analizador en la sección Filtros. Después de identificar el analizador, haga clic en el icono Actions en la fila del analizador:
Ver detalles: se muestra la página de detalles del analizador. Consulte los detalles del analizador y edítelos, si es necesario.
Editar: se muestra el cuadro de diálogo Editar analizador. Puede modificar las propiedades del analizador aquí.
Duplicar: haga clic en esto si desea crear un duplicado del analizador existente, después del cual puede modificar el duplicado para personalizarlo.
Exportar definición: si utiliza Oracle Logging Analytics en varias regiones, puede exportar y volver a importar el contenido de la configuración del analizador. También puede utilizarlo si desea almacenar una copia de sus definiciones fuera de Oracle Logging Analytics. Consulte Importación y exportación de contenido de configuración.
Suprimir: puede que tenga que suprimir algunos de los analizadores antiguos o no utilizados. Para suprimir el analizador, confirme en el cuadro de diálogo Suprimir entidad. Puede suprimir un analizador solo si no tiene orígenes dependientes.
Consejo de accesibilidad: para utilizar el teclado para seleccionar el contenido para la extracción de campos de los logs, utilice las teclas ALT+arrow.
Creación de un analizador de tipo de expresión regular 🔗
La página Crear analizador se abre en el modo Guiado, por defecto. Continúe en este modo si desea que Logging Analytics genere la expresión regular para analizar los logs después de seleccionar los campos. Para el modo guiado, consulte Vídeo: Uso del generador de analizadores RegEx. Si desea escribir una expresión regular para el análisis, cambie al modo Avanzado y continúe con los siguientes pasos:
En el campo Nombre, introduzca el nombre del analizador. Por ejemplo, introduzca Custom Audit Logs.
Opcionalmente, proporcione una descripción adecuada al analizador para facilitar la identificación.
En el campo Contenido de log de ejemplo, pegue el contenido de un archivo log que desea analizar, como el siguiente:
Jun 20 2020 15:19:29 hostabc rpc.gssd: ERROR: can't open clnt5aa9: No such file or directory
Jul 29 2020 11:26:28 hostabc kernel: FS-Cache: Loaded
Jul 29 2020 11:26:28 hostxyz kernel: FS-Cache: Netfs 'nfs' registered for caching
Aug 8 2020 03:20:01 slc08uvu rsyslogd-2068: could not load module '/lib64/rsyslog/lmnsd_gtls.so', rsyslog error -2078
[try http://www.rsyslog.com/e/2068 ]
Aug 8 2020 03:20:36 0064:ff9b:0000:0000:0000:0000:1234:5678 rsyslogd-2066: could not load module '/lib64/rsyslog/lmnsd_gtls.so', dlopen: /lib64/rsyslog/lmnsd_gtls.so: cannot open shared object file: Too many open files
[try http://www.rsyslog.com/e/2066 ]
Sep 13 2020 03:36:06 hostnam sendmail: uAD3a6o5009542: from=root, size=263, class=0, nrcpts=1, msgid=<201611130336.uAD3a6o5009542@hostname.example.com>, relay=root@localhost
Sep 13 2020 03:36:06 hostnam sendmail: uAD3a6o5009542: to=root, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30263, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (uAD3a6KW009543 Message accepted for delivery)
Sep 20 2020 08:11:03 hostnam sendmail: STARTTLS=client, relay=userv0022.example.com, version=TLSv1/SSLv3, verify=FAIL, cipher=DHE-RSA-AES256-GCM-SHA384, bits=256/256]]>
Se trata de una entrada de log de varias líneas porque la entrada 4 y 5 abarcan varias líneas.
En el campo Analizar expresión regular, introduzca la expresión regular para analizar los campos. Cada par de paréntesis indica la cláusula de expresión regular que se va a extraer a un único campo.
La expresión de análisis es única para cada tipo de log y depende del formato de las entradas de log reales. En este ejemplo, introduzca:
La entrada de log puede tener una sola línea o varias líneas. Si ha elegido varias líneas, introduzca la expresión de inicio del registro de log.
Debe definir la expresión regular para que sea la regla mínima necesaria para identificar correctamente el inicio de una nueva entrada de log. En el ejemplo, la expresión de inicio puede ser:
(\w+)\s+(\d+)\s+(\d+)\s+
Esto indica que el inicio de una nueva entrada de log se produce siempre que una nueva línea empieza por el texto que coincide con esta expresión de inicio de entrada.
Si lo desea, también puede introducir la expresión final. Utilice Expresión End para indicar el final del registro de log. Cuando se escribe un registro de log en el archivo durante un largo período de tiempo y desea asegurarse de que se recopila toda la entrada de log, utilice la expresión regular end. El agente espera hasta que el patrón de expresión regular final coincida para recopilar el registro de log. Se aplican las mismas reglas de formato para la expresión final que la expresión de inicio de entrada.
Seleccione la casilla de control Gestionar el archivo entero como un registro de log único si es necesario. Esta opción permite analizar y almacenar todo un archivo log como una sola entrada de log. Esto resulta especialmente útil al analizar orígenes de log como logs de volcado de Java Hotspot, lista RPM de logs de paquetes, etc. Si la entrada del log tiene mucho texto que desea que se pueda buscar, puede que desee considerar la posibilidad de activar la casilla de control Active la búsqueda de texto raw en este contenido. Esta opción permite buscar los registros de log con el campo Texto raw. Cuando está activada, puede ver el contenido del log original con el texto raw.
En el separador Campos, seleccione el campo correspondiente para almacenar cada valor capturado de la expresión regular.
Para crear un nuevo campo, haga clic en el icono . Se abre el cuadro de diálogo Crear campo definido por el usuario. Introduzca los valores para Nombre, Tipo de datos, Descripción y utilice la casilla de control Campo de varios valores según corresponda para sus logs. Para obtener información sobre los valores que se deben introducir, consulte Crear un campo. Para eliminar el campo seleccionado en la fila, haga clic en el icono .
Para cada valor capturado, seleccione el campo en el que desea almacenar los datos. El primer campo capturado en el ejemplo se puede introducir de la siguiente manera:
Nombre del campo: Mes (abreviatura)
Tipo de datos de campo: STRING
Descripción del campo: componente Mes de la hora de entrada del log como nombre abreviado, como Ene.
Expresión de campo: (\w{3})
En el ejemplo de log anterior, tendría que asignar los campos en el siguiente orden:
Mes (abreviatura)
Día
Año (4 dígitos)
Nombre de host (servidor)
Servicio
Mensaje
En el separador Funciones, haga clic en Agregar función para agregar opcionalmente una función para procesar previamente las entradas del log. Consulte Procesamiento previo de las entradas de log.
Haga clic en el separador Prueba de analizador para ver cómo el analizador recién creado extrae valores del contenido del log.
Puede ver las entradas del log desde el contenido de ejemplo que ha proporcionado anteriormente. Utilice esta opción para determinar si el analizador que ha definido funciona correctamente.
Si la expresión regular falla para una entrada de log, el estado de coincidencia muestra la parte de la expresión que ha funcionado en verde y la parte que ha fallado en rojo. Esto le ayuda a identificar qué parte de la expresión regular se debe corregir.
Puede ver la lista de eventos que han fallado en la prueba del analizador y los detalles del fallo. También puede ver el recuento de pasos que puede dar una idea del costo de la expresión regular. Lo ideal es que este valor sea lo más bajo posible. Cualquier valor menor de 1.000 puede ser aceptable, pero a veces es necesaria una expresión regular más cara. Si la expresión regular realiza demasiados pasos, puede provocar un mayor uso de CPU en el host del agente y un menor procesamiento de los logs. Esto retrasará la disponibilidad de las entradas de log en el explorador de logs. En casos extremos en los que la expresión regular es demasiado costosa, omitiremos el análisis de la entrada de log y cualquier otra entrada recopilada en el mismo período de recopilación.
Haga clic en Guardar para guardar el nuevo analizador que acaba de crear.
Para cancelar la creación del analizador, haga clic en Cancelar. Al hacer clic en Cancelar, perderá cualquier progreso realizado en la creación del analizador de tipo Expresión regular.
Hora y fecha del análisis mediante la macro TIMEDATE
Oracle Logging Analytics también permite analizar la hora y la fecha disponibles en los archivos de log mediante la macro TIMEDATE.
Por lo tanto, para los logs que utilizan el formato de expresión TIMEDATE, la expresión de análisis anterior se debe escribir como:
{TIMEDATE}\s+([^\s]+)\s+([^:]+):\s+(.*)
En ese caso, la expresión de inicio de entrada es {TIMEDATE}\s+.
Si algunas entradas de log no tienen un año asignado en el log, Oracle Logging Analytics intenta identificar el año según la información disponible, como la zona horaria del host, la hora de última modificación del archivo, etc. La carga bajo demanda permite al usuario proporcionar información para resolver fechas ambiguas. Además, puede utilizar la configuración de sustitución de zona horaria al realizar la ingesta de los logs mediante la carga bajo demanda o Management Agent. Consulte Carga de logs a demanda y Configuración de la recopilación continua de logs desde los hosts.
Si la fecha y la hora no se especifican en el analizador para un archivo log que se analiza como un único registro de log, se tiene en cuenta la hora de última modificación del archivo log al recopilar logs mediante el agente de gestión. Si durante la recopilación, no se pueden establecer la hora y la fecha de una entrada de log, las entradas de log se almacenarán con la fecha y la hora en que se haya realizado la ingesta de los logs en Oracle Logging Analytics.
Creación de un analizador de tipo JSON 🔗
Nota
Si cada una de las entradas de log no contiene los datos de log contextuales/de cabecera, puede enriquecer las entradas de log con los datos de log de cabecera relevantes. Puede preprocesar las entradas de log y enriquecer el contenido con información de cabecera especificando una función de detalle de cabecera siguiendo estos pasos:
En primer lugar, cree un analizador de contenido de cabecera proporcionando el contenido de log de ejemplo mediante el que se puede identificar la ruta de acceso de JSON para recoger la información de cabecera.
Defina un segundo analizador para analizar el cuerpo restante de la entrada de log.
Para el analizador de cuerpo, agregue una instancia de función Detalle de cabecera y seleccione el analizador de cabecera definido en el paso 1.
Agregue el analizador de cuerpo definido en el paso 2 a un origen de log y asocie el origen de log a una entidad para iniciar la recopilación de logs.
Según el contenido del log de ejemplo, los campos se seleccionan y se muestran en el separador Campos, como en el siguiente ejemplo:
En el separador Campos, para la ruta de JSON específica, seleccione el nombre del campo de los campos definidos disponibles.
Para crear un nuevo campo, haga clic en el icono . Se abre el cuadro de diálogo Crear campo definido por el usuario. Introduzca los valores para Nombre, Tipo de datos, Descripción y utilice la casilla de control Campo de varios valores según corresponda para sus logs. Para obtener información sobre los valores que se deben introducir, consulte Crear un campo. Para eliminar el campo seleccionado en la fila, haga clic en el icono .
La ruta raíz por defecto seleccionada es $. Si desea cambiar la ruta raíz de JSON, amplíe la sección Opciones avanzadas y seleccione la ruta de acceso de JSON de entrada de log en el menú.
En el separador Funciones, haga clic en Agregar función para agregar opcionalmente una función para procesar previamente las entradas del log con la función de analizador de cabecera. Consulte Procesamiento previo de las entradas de log.
Después de seleccionar los campos, vaya al separador Prueba de analizador para ver el estado de coincidencia y los campos seleccionados del contenido del log de ejemplo.
Haga clic en Guardar para guardar el nuevo analizador que acaba de crear.
Para cancelar la creación de un analizador de tipo JSON y cambiar a la creación de un analizador de tipo expresión regular, en Tipo, seleccione Expresión regular.
Manejo de varias unidades JSON en un único analizador JSON 🔗
Si hay varias entradas de log de JSON con el nodo raíz $ para el mismo origen, agregue todos los logs de JSON de ejemplo al contenido de ejemplo de un analizador y asigne la unión de los campos incluidos en todos los ejemplos.
Por ejemplo, puede tener un analizador de JSON y un origen con ese analizador. Tenga en cuenta que este log puede tener dos unidades. Coloque ambas entradas de log de ejemplo (unidades) en el campo Contenido de ejemplo de la siguiente manera:
A continuación, en la lista de campos del analizador, puede ver las claves key_A, key_B, key_C, key_D, key_E, key_F, key_G y key_H que desea asignar.
Puede asignar estas claves a los campos como se indica a continuación:
Clave
Campo
key_A
Hora
key_B
IP de host (cliente)
key_C
Mensaje
key_D
Mensaje
key_E
Severity
key_F
Usuario
key_G
Componente
key_H
Servicio
En el ejemplo anterior, las claves JSON key_C y key_D aparecen en diferentes logs. Se consideran mutuamente excluyentes. Normalmente, key_C y key_D no aparecen juntos en una unidad de log. En tal caso, ambos se pueden asignar a un único campo Mensaje. Cualquiera que sea la clave que coincida, se almacena en el campo Mensaje.
Si key_C y key_D no se excluyen mutuamente y, en una tercera unidad de entrada de log, tanto key_C como key_D aparecen juntos, el primero que coincida se almacena en el campo Mensaje.
Creación de un analizador de tipo XML 🔗
En el campo Analizador, introduzca el nombre del analizador. Por ejemplo, introduzca Custom Database Audit Log.
Seleccione el tipo de analizador como XML.
Opcionalmente, proporcione una descripción adecuada al analizador para facilitar la identificación.
En el campo Contenido de log de ejemplo, pegue el contenido de un archivo log que desea analizar, como el siguiente ExampleA:
<AuditRecord><Audit_Type>1</Audit_Type><Session_ld>201073</Session_ld><Statementid>13</Statementid><Entryld>6</Entryld>
<Extended_Timestamp>2016-09-09T01:26:07.832814Z</Extended_Timestamp><DB_User>SYSTEM</DB_User><OS_User>UserA</OS_User><Userhost>host1</Userhost>
<OS_Process>25839</OS_Process><Terminal>pts/4</Terminal><Instance_Number>0</Instance_Number><Object_Schema>HR</Object_Schema>
<Object_Name>EMPLOYEES</Object_Name><Action>17</Action>
<Returncode>0</Returncode><Sen>§703187</Sen><AuthPrivileges>--------¥-----</AuthPrivileges>
<Grantee>SUMON</Grantee>
<Priv_Used>244</Priv_Used><DBID>2791516383</DBID><Sql_Text>GRANT SELECT ON hr.employees TO sumon</Sql_Text></AuditRecord>
Según el contenido del log de ejemplo, Oracle Logging Analytics identifica automáticamente la lista de elementos XML que representan los registros log.
Opcionalmente, active la casilla de control Ignorar espacio de nombres para ignorar el espacio de nombres en la ruta XML.
Opcionalmente, active la casilla de control Activar reconocimiento de posición para detectar varios valores de un elemento en una ruta XML, como en el caso de la matriz de elementos. Por ejemplo, para el siguiente ejemplo de contenido de log ExampleB:
Si el reconocimiento de posición no está activado, estaría restringido a la ruta XML /ListOfTrackingFields/TrackingField/Name, que detectaría solo el primer valor de Name. Si activa el reconocimiento de posición, se detectan los siguientes 5 valores de Name en el elemento TrackingField: NameA, NameB, NameC, NameD, NameE, si se han configurado todas las rutas XML correspondientes.
En el menú Ruta de acceso de XML de entrada de log, seleccione el elemento XML adecuado para los registros de log de interés. Para el contenido del log de ejemplo anterior ExampleA, seleccione /AuditRecord.
Según la selección de la ruta XML, los campos se seleccionan y se muestran en el separador Campos. En el contenido del log de ejemplo anterior, los elementos resaltados califican para los campos. Para la ruta XML de ejemplo /AuditRecord, la ruta XML del campo sería /AuditRecord/<highlighted_element>, por ejemplo, /AuditRecord/Audit_Type.
En el separador Campos, para la ruta XML específica, seleccione el nombre del campo de los campos definidos disponibles.
Para crear un nuevo campo, haga clic en el icono . Se abre el cuadro de diálogo Crear campo definido por el usuario. Introduzca los valores para Nombre, Tipo de datos, Descripción y utilice la casilla de control Campo de varios valores según corresponda para sus logs. Para obtener información sobre los valores que se deben introducir, consulte Crear un campo. Para eliminar el campo seleccionado en la fila, haga clic en el icono .
Después de seleccionar los campos, vaya al separador Prueba de analizador para ver el estado de coincidencia.
Haga clic en Guardar para guardar el nuevo analizador que acaba de crear.
Para cancelar la creación de un analizador de tipo XML y cambiar a la creación de un analizador de tipo expresión regular, en Tipo, seleccione Expresión regular.
Crear analizador de tipo delimitado 🔗
Introduzca el nombre del analizador. Por ejemplo, introduzca Comma Separated Custom App Log.
Opcionalmente, proporcione una descripción adecuada al analizador para facilitar la identificación.
Seleccione el tipo de analizador como Delimitado.
En Delimitador, seleccione el tipo de delimitador utilizado en los logs para separar los campos, por ejemplo, coma, punto y coma, espacio o separador. En caso de que sea diferente de las opciones mostradas, seleccione Otro y especifique el carácter delimitador en el espacio proporcionado.
Tenga en cuenta el siguiente ejemplo de contenido de log:
En el ejemplo anterior, la coma (,) es el delimitador.
Asegúrese de que el carácter de delimitador que especifique sea diferente del calificador que seleccione a continuación.
Opcionalmente, seleccione el calificador que se utiliza para ajustar el texto de un campo en los logs. Seleccione Oferta doble o Oferta única.
El calificador de texto se utiliza cuando los delimitadores están incluidos en los datos del campo. Considere un escenario en el que field1 tiene el valor host,local que contiene un carácter delimitador (,) y no se utiliza un calificador de texto. A continuación, los datos que se producen después del delimitador (local) se considerarán como el valor del siguiente campo.
En el contenido del log de ejemplo del paso anterior, la comilla doble (") es el calificador.
Nota
Para los valores de los campos de la cadena de tipo de dato, el carácter de espacio antes y después del cualificador también se considerará parte de la cadena. Asegúrese de que el cualificador esté situado justo al lado del delimitador para que el valor de cadena coincida. Por ejemplo, en ,"host,local",, se elimina el carácter de espacio después del primer delimitador. Además, se elimina el carácter de espacio antes del último delimitador. Por lo tanto, el valor efectivo del campo de cadena coincidente es host,local, como se puede ver en el resultado de la prueba del analizador más adelante.
Opcionalmente, en Cabecera, pegue la línea de cabecera del log que, a continuación, se puede asignar a la columna de cabecera en el separador Campos. Por ejemplo:
name, hostname, pid, level, msg, time
Al especificar una cabecera, se filtran las líneas de log de los logs reales que coincidan exactamente con la cabecera.
En el campo Contenido de log de ejemplo, pegue el contenido de un archivo log que desea analizar, como el siguiente:
Según el contenido del log de ejemplo, los campos se seleccionan y se muestran en el separador Campos, como en el siguiente ejemplo:
En el separador Campos, para la columna de cabecera, seleccione el nombre del campo de los campos definidos disponibles. Sin embargo, puede asignar de forma selectiva solo las columnas de cabecera preferidas y no es necesario asignar un campo para cada columna de cabecera.
Para crear un nuevo campo, haga clic en el icono . Se abre el cuadro de diálogo Crear campo definido por el usuario. Introduzca los valores para Nombre, Tipo de datos, Descripción y utilice la casilla de control Campo de varios valores según corresponda para sus logs. Para obtener información sobre los valores que se deben introducir, consulte Crear un campo. Para eliminar el campo seleccionado en la fila, haga clic en el icono .
Después de seleccionar los campos, vaya al separador Prueba de analizador para ver el estado de coincidencia y los campos seleccionados del contenido del log de ejemplo.
Haga clic en Crear analizador para guardar el nuevo analizador que acaba de crear.
Para anular la creación de un analizador de tipo Delimitado y cambiar a crear un tipo diferente de analizador, selecciónelo en Tipo.
Asignación del campo base a un analizador 🔗
Si el contenido del log original se ajusta con información adicional, puede asignar el campo base que contiene el contenido del log original a un analizador y extraer los campos de ese registro de log original.
Consideremos que el contenido del log original es el siguiente:
####<Feb 01, 2021 10:28:27 AM PST> <Info> <Diagnostics> <soaapps.example.com> <excstg_soa> <[ACTIVE] ExecuteThread: '34' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <kernel_version> <123456> <[severity-value:64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] > <BEA-320145> <Size based data retirement operation completed on archive HarvestedDataArchive. Retired 9,720 records in 11,242 ms.>
Cuando se envía el mismo contenido de log desde OCI Logging a través de Connector Hub a Oracle Logging Analytics, se agrega un envoltorio de JSON al contenido del log original. Por ejemplo:
En el ejemplo anterior, el contenido del log original está presente en el campo base msg.
Tenga en cuenta que en el ejemplo descrito, el contenido del log tiene un envoltorio JSON. Sin embargo, puede seguir estos pasos incluso si el contenido y los envoltorios del log original están en cualquier formato de analizador soportado y los logs se ingieren en cualquier método soportado.
Para extraer los campos del contenido del log original, siga estos pasos:
Según el tipo de contenido de log original, identifique o cree un analizador para recoger los campos relevantes del contenido de log original. Consulte Creación de un analizador.
Este analizador se utilizará como analizador asignado dentro del analizador de envoltorio que creará a continuación.
Según el tipo de contenido de envoltorio, cree el analizador para él siguiendo los pasos de Creación de un analizador.
Este analizador se denominará analizador de envoltorio en los pasos siguientes.
Para el analizador de envoltorio, proporcione un contenido de log de ejemplo que tenga un envoltorio sobre el contenido de log original.
En el caso del analizador de JSON, la ruta raíz por defecto seleccionada es $. Si desea cambiar la ruta raíz de JSON, amplíe la sección Opciones avanzadas y seleccione la ruta de acceso de JSON de entrada de log en el menú.
En el separador Campos, correspondiente al campo base que tiene el contenido de log original, haga clic en el menú Acciones y seleccione Asignar campos a través de un analizador. Se abre el cuadro de diálogo donde puede seleccionar el analizador.
En el ejemplo anterior, la fila para la que se debe agregar un analizador asignado es $.data.msg.
En un analizador de envoltorio, solo puede asignar un campo base a un analizador asignado.
En el cuadro de diálogo Asignar campos a través de un analizador, seleccione el analizador mediante el que se deben extraer los campos del campo base. Haga clic en Asignar campos.
La ficha Campos ahora muestra que el campo base está asignado al analizador asignado seleccionado y a la lista de campos extraídos.
Es posible que el analizador asignado que seleccione también tenga un analizador asignado incluido en él. Oracle Logging Analytics admite dos niveles de analizadores asignados anidados, por ejemplo, Wrapper-parser contiene mapped-parser-1 contiene mapped-parser-2.
Una vez seleccionados los campos restantes, en el separador Prueba de analizador, ejecute la prueba del analizador para verificar el estado de coincidencia y los campos seleccionados del contenido del log de ejemplo.
Procesamiento previo de las entradas de log 🔗
Oracle Logging Analytics proporciona las siguientes funciones, que le permiten preprocesar entradas de log y enriquecer las entradas de log resultantes:
Para realizar el procesamiento previo de las entradas del log al crear un analizador, haga clic en el separador Funciones y, a continuación, haga clic en el botón Agregar función.
En el cuadro de diálogo Agregar función resultante, introduzca un nombre para la función, seleccione la función necesaria y especifique los valores de campo relevantes.
Para probar el resultado de aplicar la función en el contenido del log de ejemplo, haga clic en Probar. Se muestra un resultado comparativo que ayuda a determinar la corrección de los valores de campo.
Función Detalle de cabecera 🔗
Esta función permite enriquecer las entradas de log con los campos de la cabecera de los archivos log. Esta función resulta especialmente útil para los logs que contengan un bloque de cuerpo como cabecera y, a continuación, las entradas del cuerpo.
Esta función enriquece cada entrada de cuerpo de log con los campos de la entrada de log de cabecera. Archivos de rastreo de base de datos es uno de los ejemplos de dichos logs.
Para capturar la cabecera y sus campos correspondientes para enriquecer las entradas de log del cuerpo basadas en tiempo, en el momento de la creación del analizador, seleccione el analizador de contenido de cabecera correspondiente en el cuadro de diálogo Agregar función.
Ejemplos de analizador de contenido de cabecera de expresión regular:
En estos tipos de logs, la cabecera aparece principalmente en algún lugar al principio del archivo log, seguida de otras entradas. Consulte lo siguiente:
Trace file /scratch/emga/DB1212/diag/rdbms/lxr1212/lxr1212_1/trace/lxr1212_1_ora_5071.trc
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing options
ORACLE_HOME = /scratch/emga/DB1212/dbh
System name: Linux
Node name: slc00drj
Release: 2.6.18-308.4.1.0.1.el5xen
Version: #1 SMP Tue Apr 17 16:41:30 EDT 2012
Machine: x86_64
VM name: Xen Version: 3.4 (PVM)
Instance name: lxr1212_1
Redo thread mounted by this instance: 1
Oracle process number: 35
Unix process pid: 5071, image: oracle@slc00drj (TNS V1-V3)
*** 2020-10-12 21:12:06.169
*** SESSION ID:(355.19953) 2020-10-12 21:12:06.169
*** CLIENT ID:() 2020-10-12 21:12:06.169
*** SERVICE NAME:(SYS$USERS) 2020-10-12 21:12:06.169
*** MODULE NAME:(sqlplus@slc00drj (TNS V1-V3)) 2020-10-12 21:12:06.169
*** CLIENT DRIVER:() 2020-10-12 21:12:06.169
*** ACTION NAME:() 2020-10-12 21:12:06.169
2020-10-12 21:12:06.169: [ GPNP]clsgpnp_dbmsGetItem_profile: [at clsgpnp_dbms.c:345] Result: (0) CLSGPNP_OK. (:GPNP00401:)got ASM-Profile.Mode='legacy'
*** CLIENT DRIVER:(SQL*PLUS) 2020-10-12 21:12:06.290
SERVER COMPONENT id=UTLRP_BGN: timestamp=2020-10-12 21:12:06
*** 2020-10-12 21:12:10.078
SERVER COMPONENT id=UTLRP_END: timestamp=2020-10-12 21:12:10
*** 2020-10-12 21:12:39.209
KJHA:2phase clscrs_flag:840 instSid:
KJHA:2phase ctx 2 clscrs_flag:840 instSid:lxr1212_1
KJHA:2phase clscrs_flag:840 dbname:
KJHA:2phase ctx 2 clscrs_flag:840 dbname:lxr1212
KJHA:2phase WARNING!!! Instance:lxr1212_1 of kspins type:1 does not support 2 phase CRS
*** 2020-10-12 21:12:39.222
Stopping background process SMCO
*** 2020-10-12 21:12:40.220
ksimdel: READY status 5
*** 2020-10-12 21:12:47.628
...
KJHA:2phase WARNING!!! Instance:lxr1212_1 of kspins type:1 does not support 2 phase CRS
Para el ejemplo anterior, con la función Detalle de cabecera, Oracle Logging Analytics enriquece las entradas de log del cuerpo basadas en tiempo con los campos del contenido de cabecera.
Observe el siguiente ejemplo de log:
Server: prodsrv123
Application: OrderAppA
2020-08-01 23:02:43 INFO DataLifecycle Starting backup process
2020-08-01 23:02:43 ERROR OrderModule Order failed due to transaction timeout
2020-08-01 23:02:43 INFO DataLifecycle Backup process completed. Status=success
2020-08-01 23:02:43 WARN OrderModule Order completed with warnings: inventory on backorder
En el ejemplo anterior, tenemos cuatro entradas de log que se deben capturar en Oracle Logging Analytics. El nombre del servidor y el nombre de la aplicación solo aparecen al principio del archivo log. Para incluir el nombre del servidor y el nombre de la aplicación en cada entrada de log:
Defina un analizador para la cabecera, que analizará los campos de servidor y aplicación: Server:\s*(\S+).*?Application:\s*(\S+)
Defina un segundo analizador para analizar el cuerpo restante del log: {TIMEDATE}\s(\S+)\s(\S+)\s(.*)
Para el analizador de cuerpo, agregue una instancia de función Detalle de cabecera y seleccione el analizador de cabecera definido en el paso 1.
Agregue el analizador de cuerpo definido en el paso 2 a un origen de log y asocie el origen de log a una entidad para iniciar la recopilación de logs.
A continuación, podrá obtener cuatro entradas de log con el nombre del servidor y el nombre de la aplicación agregados a cada entrada.
Ejemplos de analizador de contenido de cabecera de JSON:
A continuación se muestran ejemplos de varios casos para Header-Detail. Las entradas del log de detalles se enriquecen con campos de las entradas del log de cabecera. Los campos resaltados en la entrada del log de detalles enriquecidos son los campos copiados de la entrada del log de cabecera.
Ruta de acceso de JSON: cabecera = $, detalles = $.data
Entrada de log de cabecera: {"id":"id_ERROR1","compartmentName":"comp_name_ERROR1","eventName":"GetBucket_ERROR1"}
Entrada de log de detalles: {"compartmentName":"comp_name_ERROR1","eventName":"GetBucket_ERROR1", "id": "id_data_ERROR1", "childblock0":{"src":"127.0.0.1"},"childblocks":[{"childblock":{"srchost1":"host1_ERROR1"}},{"childblock":{"srchost2":"host2_ERROR1"}}],"hdr":{"time_ms":"2021-05-21T04:27:18.89714589Z","error":"hdr_ERROR1"}}
El campo id está disponible tanto en la cabecera como en los detalles. En este caso, se selecciona el campo de los detalles.
Ruta de acceso de JSON: cabecera = $.metadata, detalles = $.datapoints[*]
En este ejemplo, el primer bloque tiene cabecera y detalles, pero el segundo bloque solo tiene una entrada de log de detalles.
Entrada de log Header1: {"region":"phx1","resourceId":"ocid1.stream.oc1.phx.1"}
Entrada de log Header2: {"displayName":"Get Messages 1","unit":"count1"}
Entrada de log de detalles: {"region":"phx1","resourceId":"ocid1.stream.oc1.phx.1", displayName":"Get Messages 1","unit":"count1", "timestamp":1652942170000,"value":1.1,"count":11}
Entrada de log de detalles: {"region":"phx1","resourceId":"ocid1.stream.oc1.phx.1", displayName":"Get Messages 1","unit":"count1", "timestamp":1652942171001,"value":1.2,"count":12}
Ruta de acceso de JSON: Header1 = $.hdr1, Header2 = $.hdr2, Detalles = $.body
En este caso, la entrada de log de cabecera se asocia a la entrada de log de detalles si ambos están en el mismo bloque.
Entrada de log de cabecera: {"id":"data_id_ERROR1","error":"hdr1_error1"}
Entrada de log de detalles: {"id":"data_id_ERROR2","error":"body_ERROR2"}
Entrada de log de cabecera: {"module":"mod3","error":"hdr2_error3"}
Entrada de log de detalles: {"module":"mod3", "id":"data_id_ERROR4","error":"body_ERROR4"}
Tenga en cuenta que en la segunda entrada del log Details, el valor de error se selecciona de los detalles cuando el mismo elemento está disponible en la cabecera, así como en los detalles.
Ruta de acceso de JSON: cabecera = $, Details1 = $.JDBC, Details2 = $.THREADS
En este caso, la entrada de log de cabecera única está asociada a varias entradas de log de detalles:
Entrada de log de cabecera (aplicada a las entradas de log de detalles siguientes): { "time": "2024-09-10T00:20:00", "instance": "GBOSBMXR1PR", "name": "gbosbmxr1pr_server_2" }
Entrada de log de detalles: { "name":"XXAlsGoldXADS", "Status": "Running", "Url": "jdbc:oracle:thin:@PSOAPR1" }
Entrada de log de detalles: { "name": "[HOGGING][ACTIVE] ExecuteThread 56 ", "WORKMGR": "OneWayJTACoordinatorWM", "CATEGORY": "Internal", "APPNAME": "None" }
Función Buscar/Reemplazar 🔗
Esta función permite extraer texto de una línea de log y agregarlo a otras líneas de log de forma condicional en función de los patrones especificados. Por ejemplo, puede utilizar esta capacidad para agregar los registros de hora que falten a logs de consulta lentos y generales de MySQL.
La función find-replace tiene los siguientes atributos:
Expresión regular Catch: la expresión regular que coincide con cada línea de log y el texto de grupo con nombre de expresión regular coincidente se guarda en la memoria para utilizarse en la expresión de sustitución.
Si la expresión catch coincide con una línea completa, la expresión replace no se aplicará a la siguiente línea de log. Esto sirve para evitar tener la misma línea dos veces en los casos en los que desea anteponer una línea que falta.
Una línea que coincida con la expresión catch no se procesará para la expresión find. Por lo tanto, no se puede realizar una operación de búsqueda y sustitución en la misma línea de log.
Puede especificar varios grupos con nombres diferentes.
Expresión regular Find: esta expresión regular especifica el texto que se va a sustituir por el texto que coincide con grupos con nombre en la expresión Catch en las líneas de log.
El patrón que debe coincidir se debe agrupar.
La expresión find no se ejecuta en las líneas que coinciden con la expresión catch. Por lo tanto, no se puede realizar una operación de búsqueda y sustitución en la misma línea de log.
La expresión find puede tener varios grupos. El texto que coincide en cada grupo se sustituirá por el texto creado por la expresión replace.
Sustituir expresión regular: esta notación personalizada indica el texto para sustituir los grupos encontrados en la expresión Find. Los nombres de grupo se deben incluir entre paréntesis.
El nombre del grupo debe estar entre paréntesis.
Puede incluir el texto estático.
El texto creado por la expresión de sustitución reemplazará el texto que coincide en todos los grupos de la expresión find.
Haga clic en el icono Ayuda junto a los campos Expresión regular Catch, Expresión regular Find y Sustituir expresión regular para ver la descripción del campo, la expresión de ejemplo, el contenido de ejemplo y la acción realizada. Para agregar más expresiones Catch, haga clic en Agregar expresión en Expresión regular Catch.
Ejemplos:
El objetivo de este ejemplo es obtener el registro de hora de la línea de log que contiene el texto # Time: y agregarlo a las líneas de log que aparecen con # User@Host que no tienen registro de hora.
Los valores de los atributos Expresión regular Catch, Expresión regular Find y Sustituir expresión regular pueden ser:
El valor Expresión regular Catch para que coincida con la línea de registro de registro de hora y guárdelo en la memoria con el nombre timestr es ^(?<timestr>^# Time:.*).
El valor Expresión regular Find para buscar las líneas a las que se debe anteponer la línea de registro de registro de hora es (^)# User@Host:.*.
El valor Sustituir expresión regular para sustituir el inicio de las líneas de log que tienen el registro de hora que falta en ellas es (timestr).
Después de agregar la función find-replace, observará el siguiente cambio en las líneas del log:
En el resultado anterior del ejemplo, puede observar que la función find-replace ha insertado el registro de hora antes de la entrada User@host en cada línea de log que haya encontrado al preprocesar el log.
El objetivo de este ejemplo es capturar varios parámetros y sustituirlos en varias ubicaciones de los datos de log.
Tenga en cuenta los siguientes datos de log:
160203 21:23:54 Child process "proc1", owner foo, SUCCESS, parent init
160203 21:23:54 Child process "proc2" -
160203 21:23:54 Child process "proc3" -
En las líneas de log anteriores, la segunda y la tercera líneas no contienen los datos de usuario. Por lo tanto, la función find-replace debe seleccionar los valores de la primera línea del log y sustituir los valores de la segunda y la tercera línea.
Los valores de los atributos Expresión regular Catch, Expresión regular Find y Sustituir expresión regular pueden ser:
El valor Expresión regular Catch para obtener la información de los usuarios foo e init de la primera línea del log y guardarla en la memoria con los parámetros user1 y user2 es ^.*?owner\s+(?<user1>\w+)\s*,\s*.*?parent\s+(?<user2>\w+).*.
El valor Expresión regular Find para buscar las líneas que tienen el carácter de guion (-) es .*?(-).*.
El valor de Sustituir expresión regular es , owner (user1), UNKNOWN, parent (user2).
Después de agregar la función find-replace, observará el siguiente cambio en las líneas del log:
160203 21:23:54 Child process "proc1", owner foo, SUCCESS, parent init
160203 21:23:54 Child process "proc2", owner foo, UNKNOWN, parent init
160203 21:23:54 Child process "proc3", owner foo, UNKNOWN, parent init
En el resultado anterior del ejemplo, puede observar que la función find-replace ha insertado la información user1 y user2 en lugar de la entrada de carácter de guion (-) en cada línea de registro que haya encontrado al preprocesar el log.
Función Desfase de tiempo 🔗
En algunos de los registros log faltará el registro de hora, otros solo tendrán el desfase de tiempo y otros no tendrán ninguno de estos elementos. Oracle Logging Analytics extrae la información necesaria y asigna el registro de hora a cada registro de log.
Estos son algunos de los escenarios y las soluciones correspondientes para asignar el registro de hora mediante la función de desfase de tiempo:
Contenido de log de ejemplo
Escenario
Solución
Process started May 5, 2020 12:34:53 AM0.0 host1 debug services started
0.5 host1 debug cache populated
1.4 host1 info connected to cluster
2.7 host1 error cache failure
Process started May 6, 2020 12:36:54 AM0.1 host1 debug services started
0.4 host1 debug cache populated
2.1 host1 info connected to cluster
3.4 host1 error cache failure
El archivo log tiene registro de hora en los logs iniciales y tiene desfases más adelante.
Seleccione el registro de hora de los registros de log iniciales y asígnelo a los registros de log posteriores ajustados con desfases de tiempo.
El archivo log tiene logs iniciales con desfases de tiempo y no tiene logs de registro de hora anteriores.
Seleccione el registro de hora de los registros de log posteriores y asígnelo a los registros de log anteriores ajustados con desfases de tiempo.
Cuando el desfase de tiempo se restablece en ese período, es decir, se produce un desfase de tiempo menor en un registro de log, se corrige considerando como referencia el registro de hora del registro de log anterior.
0.0 host1 debug services started
0.5 host1 debug cache populated
1.4 host1 info connected to cluster
2.7 host1 error cache failure
El archivo log tiene registros de log solo con desfases de tiempo y sin registro de hora.
registro de hora de la hora de última modificación del archivo: después de haber recorrido todos los registros del log, el registro de hora se calcula restando el desplazamiento de tiempo calculado a la hora de última modificación del archivo.
registro de hora de nombre_archivo: cuando esta opción está seleccionada en la interfaz de usuario, el registro de hora se selecciona del nombre del archivo con el formato especificado por la expresión de registro de hora.
Los desfases de tiempo de las entradas del log serán relativos al registro de hora coincidente anteriormente. Nos referimos a este registro de hora como registro de hora base en este documento.
Utilice la función de desfase de tiempo del analizador para extraer el registro de hora y el desfase de registro de hora de los registros log. En el cuadro de diálogo Agregar función:
¿Dónde encontrar el registro de hora?: para especificar de dónde se debe seleccionar el registro de hora, seleccione entre Nombre de archivo, Hora de última modificación de archivo y Entrada de log. Por defecto, se selecciona Nombre de archivo.
Si no se especifica, la búsqueda del registro de hora se realiza en el siguiente orden:
Pase por los registros de log y busque una coincidencia con el analizador de registro de hora, que especificará en el siguiente paso.
Seleccione la hora de última modificación como registro de hora.
Si hora de última modificación no está disponible para el archivo, seleccione la hora del sistema como registro de hora.
Busque una coincidencia con la expresión de registro de hora en el nombre de archivo, que especificará en el siguiente paso.
En función de la selección del origen del registro de hora, especifique los siguientes valores:
Si ha seleccionado Nombre de archivo en el paso 1:
Expresión Timestamp: especifique la expresión regular para buscar el registro de hora en el nombre de archivo. Por defecto, utiliza la directiva {TIMEDATE}.
Nombre de archivo de muestra: especifique el nombre de archivo de un log de ejemplo que se puede utilizar para probar la configuración anterior.
Si ha seleccionado Última modificación de archivo en el paso 1, seleccione la Última modificación de archivo de muestra.
Si ha seleccionado Entrada de log en el paso 1, seleccione el analizador en el menú Analizador de registro de hora para especificar el formato de registro de hora.
Expresión de desfase de registro de hora: especifique la expresión regular para extraer el desfase de tiempo en segundos y milisegundos para asignar el registro de hora a un registro de log. Solo están soportados los grupos sec y msec. Por ejemplo, (?<sec>\d+)\.(?<msec>\d+).
Tenga en cuenta el siguiente registro de log de ejemplo:
15.225 hostA debug services started
La expresión de desplazamiento de ejemplo selecciona 15 segundos y 225 milisegundos como desplazamiento de tiempo del registro de log.
Después de las selecciones realizadas en los pasos anteriores, el contenido del log se muestra en el campo Log de ejemplo.
Haga clic en Probar para probar la configuración.
Puede ver la comparación entre el contenido del log original y el tiempo calculado según sus especificaciones.
Para guardar la función de desfase de tiempo anterior, haga clic en Agregar.