Visualización de datos de series temporales mediante la función de tendencia Link 🔗
Link se utiliza para agrupar los registros de log por campos específicos. Las distintas estadísticas que puede extraer de estos grupos se pueden visualizar mediante la visualización del gráfico de burbujas. La visualización del gráfico de burbujas ahora se ha mejorado para soportar el campo Tiempo como eje.
En los siguientes pasos se explica cómo utilizar la función de tendencia para analizar la duración del trabajo para las solicitudes simultáneas de Oracle E-Business Suite (EBS).
Tenga en cuenta el siguiente log de ejemplo en la ruta de archivo /u01/oracle/appl_top/req/l7474445.req:
Human Resources: Version : 12.2
Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
AME_MIGRATIONB: Approvals Management Post Upgrade Process
+---------------------------------------------------------------------------+
Current system time is 24-JUL-2018 01:04:29
+---------------------------------------------------------------------------+
**Starts**24-JUL-2018 01:04:30
**Ends**24-JUL-2018 01:04:30
Migration of item class usages successful
+---------------------------------------------------------------------------+
Start of log messages from FND_FILE
+---------------------------------------------------------------------------+
+---------------------------------------------------------------------------+
End of log messages from FND_FILE
+---------------------------------------------------------------------------+
+---------------------------------------------------------------------------+
No completion options were requested.
Output file size:
0
Deleting empty output file.
+---------------------------------------------------------------------------+
Concurrent request completed successfully
Current system time is 24-JUL-2018 01:04:32
+---------------------------------------------------------------------------+
El origen definido por Oracle logs de solicitudes simultáneas de EBS - Mejorados extrae el campo ID de solicitud de la ruta de archivo. Por ejemplo, los datos numéricos 7474445 son el ID de solicitud extraído de la ruta de archivo del log de ejemplo anterior. El origen también extrae los metadatos asociados para cada ID de solicitud.
Seleccione el origen y cambie a la visualización de Link:
En el panel Campos, haga clic en Origen de log > Seleccione el origen de log Logs de solicitud simultánea de EBS - Mejorado > Cambie a la visualización Enlazar > Arrastre y suelte el campo ID de solicitud en el panel Agrupar por para obtener la lista de solicitudes:
Extraiga la hora de inicio y de finalización de la solicitud:
Cada solicitud tiene una hora de inicio y una hora de finalización impresas en el archivo. Si la hora de finalización está ausente, la hora a la que se actualiza el archivo se considera la hora de finalización. El origen de log está configurado para capturar estos valores como campos Hora de inicio de evento y Hora de finalización de evento.
Edite la consulta para extraer estos campos:
'Log Source' = 'EBS Concurrent Request Logs - Enhanced'
| link 'Request ID'
| stats earliest('Event Start Time') as 'Request Start Time',
latest('Event End Time') as 'Request End Time'
earliest es una función del comando stats. De esta forma se ordenan los registros de cada ID de solicitud por hora y se devuelve la hora de inicio de evento más antigua. Del mismo modo, con latest se devuelve la última hora de finalización del evento.
Ahora puede ver los nuevos campos en la tabla de registros:
Hora de inicio de solicitud y Hora de finalización de solicitud se detectan automáticamente como registros de hora y tienen formato en la zona horaria local. Cuando se recopilan los archivos, el agente utiliza la zona horaria de la base de datos de EBS para interpretar los registros de hora.
Nota
Para asegurarse de que la zona horaria de la base de datos se muestra como se esperaba en el directorio raíz de configuración de Oracle Infrastructure Monitoring y para evitar la discrepancia en los valores, proporcione la zona horaria durante la carga.
Duración de la solicitud de recursos informáticos:
Ahora que tenemos las horas de inicio y finalización de cada solicitud, podemos calcular la duración como la diferencia entre estos dos campos.
Cambie la consulta como corresponda:
'Log Source' = 'EBS Concurrent Request Logs - Enhanced'
| link 'Request ID'
| stats earliest('Event Start Time') as 'Request Start Time',
latest('Event End Time') as 'Request End Time'
| eval 'Time Taken' = 'Request End Time' - 'Request Start Time'
Tiempo usado es un nuevo campo creado para cada grupo de ID de solicitud. Podría contener la diferencia entre la hora de inicio y de finalización de la solicitud.
Oracle Logging Analytics detecta automáticamente el tiempo empleado como un campo de duración, ya que se produce por la diferencia entre dos campos de registro de hora. Por lo tanto, adopta automáticamente el formato legible por el hombre.
Tendencia del tiempo que tardan las solicitudes simultáneas de EBS:
El campo Tiempo empleado ahora se puede analizar para las tendencias. Haga clic en el icono Analizar > Seleccione los campos Hora de inicio de solicitud y Tiempo usado en el cuadro de diálogo Analizar > Haga clic en Aceptar.
De esta forma se cambiaría automáticamente la consulta a:
'Log Source' = 'EBS Concurrent Request Logs - Enhanced'
| link 'Request ID'
| stats earliest('Event Start Time') as 'Request Start Time',
latest('Event End Time') as 'Request End Time'
| eval 'Time Taken' = 'Request End Time' - 'Request Start Time'
| classify topcount = 300 'Request Start Time', 'Time Taken'
El comando Classify toma dos campos, agrupa los resultados y marca las anomalías cuando corresponde. Los resultados se muestran en el gráfico de burbujas.
Cuando se selecciona Tiempo para un eje, el gráfico de burbujas cambia automáticamente a la opción Tendencia. Para modificar las opciones del gráfico, haga clic en el icono Opciones de gráfico y cambie los parámetros necesarios.
En el gráfico de burbujas resultante, la hora de inicio de solicitud se traza en el eje X y los clusters de tiempo empleado se trazan en el eje Y:
La hora se muestra en la zona horaria local. El tamaño de las burbujas indica el número de solicitudes.
En el gráfico de burbujas anterior, la duración de la solicitud de más de cuatro minutos se observa el 21 de julio de 2018. La mayoría de las solicitudes han finalizado en menos de dos minutos.
Puede hacer clic en una o más burbujas para aumentar detalle y ver las solicitudes específicas.
Análisis de los logs de acceso de Oracle WebLogic Server 🔗
Tenga en cuenta el ejemplo de un juego de datos que consta de logs de acceso de Oracle WebLogic Server desde el origen de log FMW WLS Server Access Logs. Los registros de log contienen datos sobre el acceso de los usuarios a Oracle WebLogic Server durante un período de tiempo específico. Estos registros de log individuales se pueden analizar para obtener información significativa sobre las estadísticas de uso, la popularidad de las URL, los usuarios más activos y más datos de este tipo. En los logs, descubra cómo obtener los siguientes resultados analizando los registros de log con la selección de campos específicos para cada resultado:
Mostrar las URL principales por número de aciertos
Mostrar las anomalías por número de aciertos
Mostrar las anomalías por duración de acceso
Identificar las URL por tamaño de carga
Identificar las URL por tamaño de descarga
Analizar la correlación entre el número de aciertos y el tamaño de descarga
Determinar las páginas más visitadas
Identificar los usuarios principales
Identificar los usuarios principales y sus páginas favoritas
Identificar la página de entrada que controla el máximo de visitas
Identificar la ruta de entrada y salida para la mayoría de los usuarios
Nota
Utilice el comando rename para cambiar el nombre del campo por uno que sea más relevante para el caso de uso.
El comando classify permite analizar los grupos y muestra el resultado como un gráfico de burbujas. Para ver simplemente el resultado de la ejecución de una consulta en formato tabular, elimine el comando classify de la consulta y vuelva a ejecutarlo.
Haga clic en la burbuja anómala del gráfico para ver los detalles de los grupos anómalos. Para volver al resultado original después de investigar la burbuja, haga clic en el icono Deshacer.
Al ejecutar el comando link, se muestra la duración del grupo en un formato legible en el gráfico de burbujas, por ejemplo, en minutos o segundos. Sin embargo, si desea ejecutar un comando where después del comando link para buscar transacciones que hayan tardado más de la cantidad especificada de segundos (por ejemplo, 200 segundos), la unidad que debe utilizar es milisegundos.
Para recuperar el juego de datos, seleccione un rango de fechas adecuado, especifique el origen de log y ejecute la consulta:
'Log Source' = 'FMW WLS Server Access Logs'
Seleccione Enlazar en el panel Visualizar. Se mostrará la tabla de grupos 'FMW WLS Server Access Logs' y el gráfico de burbujas.
Para mostrar las URL principales por número de aciertos, agrupe los registros de log por el valor de la URL en el registro de log, obtenga el recuento total de la URL en cada grupo, cambie el nombre de los campos por defecto de la tabla de grupos a los valores adecuados y muestre el resultado en formato tabular. Con este análisis, puede determinar las URL más utilizadas.
Arrastre y suelte el campo URI en Agrupar por y elimine el campo Origen de log de Agrupar por.
Una vez ejecutada la consulta, en la línea de comandos, cambie los nombres de los campos Recuento por Número de aciertos, Hora de inicio to Primer acceso, Hora de finalización to Último acceso, así como Duración de grupo por Duración de acceso.
Elimine el comando classify de la línea de comandos y envíe la consulta.
La consulta será la siguiente:
'Log Source' = 'FMW WLS Server Access Logs' | link URI | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration'
Al ejecutar la consulta, puede determinar las URL principales por número de aciertos en la tabla. El nombre de las columnas se cambia según lo especificado en el comando rename.
Para mostrar las anomalías por número de aciertos, agrupe los registros de log por el valor de la URL en el registro de log, cambie el nombre de los campos por defecto de la tabla de grupos a los valores adecuados y analice los grupos para el número de aciertos. Con este análisis, puede separar el patrón inusual en el acceso a las URL.
Haga clic en Analizar, seleccione Número de aciertos y haga clic en Aceptar.
La consulta debe cambiar a lo siguiente:
'Log Source' = 'FMW WLS Server Access Logs' | link URI | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration' | classify topcount = 300 'Number of Hits'
Esta consulta dispara el análisis de la columna 'Número de aciertos' y crea burbujas que representan los rangos que se suelen ver. La mayoría de los valores se tratan como base. Por ejemplo, una burbuja grande se puede convertir en la línea base, o un gran número de burbujas más pequeñas agrupadas pueden formar la línea base. Las burbujas que estén más lejos de la base se marcan como anomalías.
Por lo tanto, de esta forma se muestran las URL anómalas agrupadas en burbujas separadas en el gráfico de burbujas. Para ver el porcentaje de URL en cada rango de número de aciertos, pase el cursor sobre las burbujas.
Para mostrar las anomalías por duración de acceso, agrupe los registros de log por el valor de la URL en el registro de log, cambie el nombre de los campos por defecto de la tabla de grupos a valores adecuados y analice los grupos para obtener la duración de acceso de la URL. Con este análisis, puede separar el patrón inusual en el tiempo dedicado a acceder a las URL. Como continuación al paso 2:
Haga clic en Analizar, seleccione Duración de acceso y haga clic en Aceptar.
La duración del acceso indica la duración durante la que se ha accedido a cada URL. Se calcula como la diferencia entre el último registro de hora y el primer registro de hora del archivo log para cada URL.
Para identificar las URL por tamaño de carga, agrupe los registros de log por el valor de la URL en el registro de log, cambie el nombre de los campos por defecto de la tabla de grupos a los valores adecuados y analice los grupos para el tamaño de los datos cargados. Con este análisis, puede identificar las URL que tengan un tamaño inusual de los datos cargados. Como continuación al paso 3:
Arrastre y suelte el campo Tamaño de contenido en en la sección Valor.
Cambie el nombre del campo Tamaño de contenido en a Bytes cargados modificando la consulta en la línea de comandos y ejecute la consulta.
Haga clic en Analizar, seleccione Bytes cargados y haga clic en Aceptar.
La consulta será la siguiente:
'Log Source' = 'FMW WLS Server Access Logs' | link URI | stats avg('Content Size In') as 'Bytes Uploaded' | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration' | classify topcount = 300 'Bytes Uploaded'
En el gráfico Analizar se muestran los grupos de URL por los bytes cargados.
Para correlacionar los datos de Bytes cargados en el rango de tiempo, puede ocultar o mostrar gráficos de forma selectiva en Opciones de gráfico de histograma. Explore las otras opciones de visualización además del gráfico de barras.
Para identificar las URL por tamaño de descarga, agrupe los registros de log por el valor de la URL en el registro de log, cambie el nombre de los campos por defecto de la tabla de grupos a los valores adecuados y analice los grupos para el tamaño de los datos descargados. Con este análisis, puede identificar las URL que tengan un tamaño inusual de datos descargados. Como continuación al paso 4:
Arrastre y suelte el campo Content Size Out en la sección Valor y elimine Content Size In de la sección Valor.
Cambie el nombre del campo Content Size Out a Tamaño de descarga modificando la consulta en la línea de comandos y ejecute la consulta.
Haga clic en Analizar, seleccione Tamaño de descarga y haga clic en Aceptar.
La consulta será la siguiente:
'Log Source' = 'FMW WLS Server Access Logs' | link URI | stats avg('Content Size Out') as 'Download Size' | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration' | classify topcount = 300 'Download Size'
En el gráfico Analizar se muestran los grupos de URL por tamaño de descarga.
Para correlacionar los datos de Tamaño de descarga en el rango de tiempo, puede ocultar o mostrar gráficos de forma selectiva en Opciones de gráfico de histograma. Explore las otras opciones de visualización además del gráfico de barras.
Para analizar la correlación entre el número de aciertos y el tamaño de descarga, agrupe los registros de log por el valor de la URL en el registro de log, cambie el nombre de los campos por defecto de la tabla de grupos a los valores adecuados y analice los grupos para obtener el tamaño de los datos descargados y el número de aciertos. Con este análisis, puede identificar las URL que tengan patrones inusuales de tamaño de datos descargados y el número de aciertos. Como continuación al paso 5:
Haga clic en Analizar, seleccione los campos Número de aciertos, Tamaño de descarga y haga clic en Aceptar.
Elimine topcount=300 de la consulta para ver todas las burbujas y ejecute la consulta.
La consulta será la siguiente:
'Log Source' = 'FMW WLS Server Access Logs' | link URI | stats avg('Content Size Out') as 'Download Size' | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration' | classify 'Download Size', 'Number of Hits'
En el gráfico de burbujas, el campo Número de aciertos se traza en el eje X y Tamaño de descarga en el eje Y.
Las burbujas se pueden interpretar de la siguiente manera:
Se ha accedido al 73,8% de las URL de una a siete veces.
El tamaño medio de descarga para el 73,8% de las URL está entre 32.345 y 34.000. Este rango reducido implica que un gran número de direcciones URL tienen un comportamiento muy uniforme con referencia al tamaño de descarga.
Dado que el 73,8% es la gran mayoría, el resto de los puntos están marcados como anomalías.
Con datos reales, es habitual que el sistema agrupe archivos .css, .js y de imagen por separado de otras URL, ya que tienden a tener diferentes comportamientos de descarga.
Para determinar las páginas más visitadas, agrupe los registros de log por el valor de la URL en el registro de log, cambie el nombre de los campos por defecto de la tabla de grupos a los valores adecuados y analice los grupos para el número de visitantes únicos. Con este análisis, puede identificar las URL más visitadas por los visitantes únicos. Como continuación al paso 6:
Arrastre y suelte el campo Nombre de usuario en la sección Valor.
Haga clic en la flecha hacia abajo junto al nombre del campo, cambie la función de Único a Recuento distinto. Consulte las otras funciones que puede seleccionar para un campo numérico:
Cambie el nombre del campo Nombre de usuario a Número de usuarios únicos, elimine el comando classify modificando la consulta en la línea de comandos y ejecute la consulta. La consulta será la siguiente:
'Log Source' = 'FMW WLS Server Access Logs' | link URI | stats avg('Content Size In') as 'Bytes Uploaded', avg('Content Size Out') as 'Download Size', distinctcount('User Name') as 'Number of Unique Users' | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration'
Haga clic en Analizar, seleccione el campo Número de usuarios únicos y haga clic en Aceptar.
En la tabla se muestran las URL y el número correspondiente de usuarios únicos, lo que nos ayuda a identificar las URL más visitadas por los usuarios únicos. En la tabla, también puede determinar el número de aciertos que tiene cada URL.
El análisis muestra que más del 99 % de las URL tienen 0 o 1 usuario único. Este sería el caso de las URL que no necesitan una conexión o a las que rara vez se accede. Al profundizar en cualquiera de las burbujas más pequeñas, apuntará a las páginas específicas, cuántos aciertos suelen tener y cuántos visitantes únicos.
Para identificar los usuarios principales, agrupe los registros de log por el valor del nombre de usuario en el registro de log, cambie el nombre de los campos por defecto de la tabla de grupos a los valores adecuados y analice los grupos para el número de aciertos. Con este análisis, puede identificar los usuarios más activos.
Edite la línea de comandos para eliminar todos los filtros: 'Log Source' = 'FMW WLS Server Access Logs' | link URI
Arrastre y suelte el campo Nombre de usuario en Agrupar por, elimine URI y ejecute la consulta.
Elimine el comando classify, cambie el nombre de los campos por defecto en la línea de comandos y ejecute la siguiente consulta:
'Log Source' = 'FMW WLS Server Access Logs' | link 'User Name' | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration'
La tabla se ordena por el número de aciertos del usuario.
Para ver el comportamiento del usuario por acceso, haga clic en Analizar, seleccione el campo Número de aciertos y haga clic en Aceptar.
Haga clic en las anomalías para identificar los usuarios que han registrado un número mayor o menor de aciertos en comparación con los demás usuarios.
Para identificar los usuarios principales y sus páginas favoritas, agrupe los registros de log por el valor del nombre de usuario en el registro de log, cambie el nombre de los campos por defecto de la tabla de grupos a los valores adecuados y analice los grupos para el número de páginas únicas. Con este análisis, puede identificar los usuarios menos activos y los más activos, así como sus páginas favoritas. Como continuación al paso 8:
Arrastre y suelte el campo URI en la sección Valor. Cambie la función de Único a Recuento distinto.
Cambie el nombre del campo URI a Número de páginas únicas modificando la consulta en la línea de comandos y ejecute la consulta.
Haga clic en Analizar, seleccione el campo Número de páginas únicas y haga clic en Aceptar.
Para identificar la página de entrada que controla el máximo de visitas, agrupe los registros de log por el valor del nombre de usuario en el registro de log, cambie el nombre de los campos por defecto de la tabla de grupos a los valores adecuados y analice los grupos para encontrar los valores de las URL de entrada y el número de aciertos para las URL. Con este análisis, puede identificar las páginas a las que los usuarios acceden primero. Como continuación al paso 9:
Para obtener las URL de entrada, cambie la función del campo URI de Recuento distinto a Primero.
Cambie el nombre del campo URI a URL de entrada modificando la consulta en la línea de comandos y ejecute la consulta.
Haga clic en Analizar, seleccione los campos Número de aciertos y URL de entrada, seleccione el topcount como 20 y haga clic en Aceptar.
'Log Source' = 'FMW WLS Server Access Logs' | link 'User Name' | stats earliest(URI) as 'Entry URL' | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration' | classify topcount = 20 'Number of Hits', 'Entry URL'
De esta forma se muestra la primera URL utilizada por los usuarios en relación con el número de aciertos. Por ejemplo, /login es la URL que más utilizan los usuarios.
Para identificar la ruta de entrada y salida para la mayoría de los usuarios, agrupe los registros de log por el valor del nombre de usuario en el registro de log, cambie el nombre de los campos por defecto de la tabla de grupos a los valores adecuados y analice los grupos para los valores de las URL de entrada y las URL de salida. Con este análisis, puede identificar
Las rutas más comunes que siguen los usuarios para transitar por el sitio web
Las páginas de productos más populares desde las que los usuarios salen del sitio web
Las URL de salida más comunes, como las páginas de finalización de compra del producto o la puerta de enlace de pago
Las URL de salida inusuales y la causa raíz de las salidas inesperadas
Como continuación al paso 10:
Arrastre y suelte el campo URI en la sección Valor.
Para obtener la página de salida, cambie la función del campo URI de Único a Más reciente.
Edite la línea de comandos y cambie el nombre del campo latest(URI) a URL de salida y envíe la consulta.
Haga clic en Analizar, seleccione los campos URL de entrada y URL de salida, seleccione el topcount como 20 y haga clic en Aceptar.
'Log Source' = 'FMW WLS Server Access Logs' | link 'User Name' | stats earliest(URI) as 'Entry URL', latest(URI) as 'Exit URL' | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration' | classify topcount = 20 'Entry URL', 'Exit URL'
Aumente el tamaño del gráfico mediante Analizar opciones de gráfico.
En este gráfico de rectángulos se muestra la relación entre las URL de entrada y salida de un sitio. Esto sería muy útil para los sitios minoristas en los que los proveedores de servicios desearían identificar las URL de entrada que llevan a los clientes a las páginas de finalización de compra, y las URL de producto que están causando que los usuarios no vayan a la finalización de compra.
Generación de gráficos con campos virtuales 🔗
Para crear un nuevo campo virtual, puede utilizar el comando eval en la función link. La consulta eval en la línea de comandos generará un gráfico de líneas para el campo virtual y activará el seguimiento a lo largo del tiempo.
Para crear un nuevo campo virtual, puede utilizar el comando eval en la función link. La consulta eval en la línea de comandos generará un gráfico de líneas para el campo virtual y activará el seguimiento a lo largo del tiempo.
Ejemplos:
Tenga en cuenta el caso en el que los registros de log del origen de log SAR CPU Logs se agrupan por el nombre de host y la CPU. Para determinar la carga experimentada por la CPU del servidor a lo largo del tiempo, el comando eval crea un campo virtual Load % y genera el gráfico de líneas.
'Log Source' = 'SAR CPU Logs' | rename Instance as CPU | link 'Host Name (Server)', CPU | stats avg('CPU Idle Time (%)') as 'CPU Idle Time (%)' | eval 'Load %' = 100 - 'CPU Idle Time (%)'
Para ver el gráfico de líneas:
Haga clic en el separador Histograma.
Haga clic en la flecha abajo junto al icono Opciones de gráfico (). Haga clic en Mostrar/Ocultar gráficos. Seleccione % de carga.
Haga clic en la flecha abajo junto al icono Opciones de gráfico (). Haga clic en Opciones de gráfico. En la lista Tipo de gráfico, seleccione Línea sin marcador. Haga clic en Cerrar.
Tenga en cuenta el caso en el que los registros de log del origen de log OMC WLS Server Access Logs se agrupan por el URI. Para determinar el tamaño de los datos a los que se accede a lo largo del tiempo en megabytes, el comando eval crea un campo virtual Tamaño de contenido (MB), calcula el tamaño de contenido en MB según el valor del campo Tamaño de contenido y genera el gráfico de líneas.
'Log Source' = 'WLS Server Access Logs' | link URI | stats avg('Content Size') as 'Content Size Bytes' | eval 'Content Size (MB)' = 'Content Size Bytes' / 1024
Para ver el gráfico de líneas:
Haga clic en el separador Histograma.
Haga clic en la flecha abajo junto al icono Opciones de gráfico (). Haga clic en Mostrar/Ocultar gráficos. Seleccione Tamaño de contenido (MB) y Registros de log de acceso.
Haga clic en la flecha abajo junto al icono Opciones de gráfico (). Haga clic en Opciones de gráfico. En la lista Tipo de gráfico, seleccione Línea sin marcador. Haga clic en Cerrar.
El enlace soporta Sentencia SQL como campo para el análisis. Sentencia SQL contiene el SQL que se ejecuta y que capturan los orígenes de log como Database Audit XML Logs y Oracle Unified DB Audit Log Source Stored in Database 12.1.
Puede utilizar link 'SQL Statement' para agrupar sentencias SQL y analizar su comportamiento e identificar anomalías.
Ejemplo:
Tenga en cuenta la siguiente consulta que enlaza los registros de log en función del campo Sentencia SQL:
'Log Source' in ('Database Audit Logs', 'Database Audit XML Logs')
| rename 'Host Name (Server)' as 'DB Server', 'User Name (Originating)' as 'OS User', 'User Name' as 'DB User'
| link 'SQL Statement'
| rename Count as 'Number of Runs', 'Start Time' as 'First Run', 'End Time' as 'Last Run', 'Group Duration' as Age
| addfields [ Object = dual | stats count as 'dual Table Access' ],
[ Object like 'all_%' | stats count as 'ALL_ Table Access' ],
[ Object like 'dba_%' | stats count as 'DBA_ Table Access' ],
[ Object like 'user_%' | stats count as 'USER_ Table Access' ],
[ Object like 'v$%' | stats count as 'VDollar Table Access' ],
[ Object = null | stats count as 'No Table Access' ],
[ Action = '2' | stats count as 'Insert Count' ],
[ Action = '3' | stats count as 'Select Count' ],
[ Action = '6' | stats count as 'Update Count' ],
[ Action = '7' | stats count as 'Delete Count' ],
[ Type = '8' | stats count as 'Connect Count' ],
[ 'Status Code' = 1 | stats count as Failures ]
| eval 'Object Type' = if('dual Table Access' > 0, Dual,
'ALL_ Table Access' > 0, System,
'DBA_ Table Access' > 0, System,
'USER_ Table Access' > 0, System,
'VDollar Table Access' > 0, System,
'No Table Access' > 0, 'No Table', Other)
| eval 'SQL Type' = if('Insert Count' > 0, Insert,
'Select Count' > 0, Select,
'Update Count' > 0, Update,
'Delete Count' > 0, Delete,
'Connect Count' > 0, Connect, Other)
| stats distinctcount(Object) as Objects, distinctcount('Database ID') as 'Number of DBs',
distinctcount(Session) as 'Number of Sessions'
| fields -'dual Table Access', -'No Table Access', -'ALL_ Table Access',
-'USER_ Table Access', -'DBA_ Table Access', -'VDollar Table Access', -'Insert Count',
-'Select Count', -'Update Count', -'Delete Count', -'Connect Count', -'SQL Type', -'Object Type'
| classify Age
| classify 'Number of Sessions'
| classify 'Number of DBs'
| classify 'Number of Runs', 'Object Type'
| classify 'Object Type', 'SQL Type'
Nota
addfields es una función disponible con visualización de enlaces para agregar campos virtuales a la consulta. Toma una consulta y canaliza la salida a un comando stats. El campo virtual resultante está disponible en la tabla, así como en el gráfico de series temporales.
Para obtener la sintaxis y otros detalles del comando addfields, consulte addfields.
Al ejecutar la consulta anterior, se pueden observar los siguientes resultados:
Según el comando classify, se generan los gráficos de burbujas para Age, Number of Sessions, Number of DBs, Number of Runs, Object Type y Object Type, SQL Type.
En los gráficos de burbujas, los registros de log se agrupan según el número de sentencias SQL incluidas en cada juego de parámetros. Los parámetros Object Type y SQL Type se determinan mediante el comando eval de la consulta.
En los gráficos del histograma Línea con área se muestran la aparición de campos como dual Table Access, No Table Access, ALL_ Table Access, USER_ Table Access, DBA_ Table Access, VDollar Table Access, Insert Count, Select Count, Update Count, Delete Count, Connect Count y Log Records en relación con el tiempo.
En la ficha de gráfico de histograma, haga clic en la flecha hacia abajo junto al icono Opciones de gráfico ().
Seleccione esta opción para mostrar los gráficos de todos los campos.
En Tipo de gráfico, seleccione Línea con área.
Ajuste el ancho para mostrar dos gráficos por línea.
En la tabla de grupos se muestran los grupos identificados por enlace según el campo Sentencia SQL. Puede observar que, para cada SQL, en la tabla se muestra el número de veces que se ha ejecutado el SQL, la hora de inicio, la hora de finalización y la duración del grupo. Haga clic en cada grupo y consulte los registros de log para obtener más información. También puede ver los grupos en la visualización del cluster para realizar un análisis más detallado.
Análisis del tiempo transcurrido entre pasos de una transacción 🔗
La función de enlace le permite analizar sesiones de usuario, extraer los diversos parámetros de tiempo mediante la agrupación y deducir datos sobre el tiempo de transacción para ayudarle a obtener estadísticas de negocio.
Tenga en cuenta este juego de datos sin ordenar tomado de un archivo log de acceso. Los siguientes campos indican la información sobre una sesión de usuario y las acciones que realiza el usuario:
Las acciones como Login, addtocart, productlisting y purchase se registran en un orden aleatorio de T1 a T9 y se han producido en dos sesiones con el ID de sesión 1 y 5.
Para realizar un análisis de tiempo similar de los logs de acceso, extraiga Session ID de los logs en un campo. Extraiga los pasos intermedios de la sesión de los logs de acceso aplicando una expresión regular para obtener la URL de los logs.
En un contexto genérico, las sesiones de este ejemplo representan cualquier transacción de usuario, mientras que las acciones representan los pasos intermedios que realiza el usuario para completar una transacción.
Para analizar estos datos no ordenados y extraer la información necesaria, se puede ejecutar la siguiente consulta de ejemplo:
'Upload Name' = logadmin
| link 'Session ID'
| rename 'Group Duration' as 'Session Duration'
| addfields
[ Action = addtocart | stats earliest(Time) as 'First Add To Cart Time' ],
[ Action = purchase | stats latest(Time) as 'Last Purchase Time' ]
| eval 'Time Taken for Purchase (Secs)' = ('Last Purchase Time' - 'First Add To Cart Time') / 1000
| fields -'First Add To Cart Time',
-'Last Purchase Time'
| classify 'Time Taken for Purchase (Secs)'
link 'Session ID' agrupa los registros de logs de acceso por ID de sesión, creando dos grupos:
addfields se ejecuta en cada uno de estos grupos. El primer comando addfields selecciona los registros donde Action = addtocart. El resultado de esta consulta es el siguiente para ambos grupos:
latest(Time) selecciona el último registro y extrae el campo especificado, que es Time:
'Last Purchase Time' = T9 for Group = 1
'Last Purchase Time' = T8 for Group = 5
En este punto, ambos grupos tienen definidos los valores para First Add to Cart Time y Last Purchase Time. Se trata de registros de hora. eval resta uno de otro para obtener el tiempo transcurrido.
En efecto, puede obtener el tiempo que se tarda en agregar al carrito en el paso Comprar de cada sesión. Ahora se puede utilizar en classify para analizar la varianza de este tiempo transcurrido entre sesiones.
Para obtener la sintaxis y otros detalles del comando addfields, consulte addfields.
Generación de gráficos para varios campos y sus valores 🔗
Puede utilizar el comando addfields en la consulta para especificar varios campos para generar gráficos independientes. Ahora, también puede utilizar la opción Agregar/editar gráficos del histograma en la interfaz de usuario para realizar la misma operación que el comando addfields.
Normalmente, desea comparar los gráficos de un único campo con varios valores, por ejemplo, los valores del campo Gravedad, como Error, Crítico, Alerta y Advertencia. La opción Agregar gráfico permite generar varios gráficos para compararlos en paralelo especificando el campo y sus valores en el cuadro de diálogo.
También puede escribir y actualizar la consulta con el comando. La opción Agregar gráfico permite realizar la operación más rápido que crear la consulta con el comando addfields.
En la interfaz de usuario de link, vaya al separador Registros de log > del menú Opciones de gráfico, haga clic en Agregar/editar gráficos para actualizar automáticamente la consulta con el comando addfields.
Se abre el cuadro de diálogo Agregar/editar gráficos.
Junto a Subconsulta, seleccione el campo en el menú, por ejemplo, Severity.
Seleccione el operador relevante.
Haga clic en el icono de edición para seleccionar uno o más valores, por ejemplo, alert. Los campos calculados no están soportados.
Opcionalmente, seleccione la función Estadísticas.
Junto a Estadísticas, seleccione la función que desea realizar en el campo y el campo de función en el menú desplegable.
A excepción de la función count, todas las demás funciones requieren que se especifique el campo de función.
Haga clic en Agregar gráfico para ver la consulta resultante. Haga clic en el icono de Editar para editar la consulta.
Repita los pasos 2 a 4 para agregar más gráficos, por ejemplo, para generar gráficos para los valores error, critical y warning del campo Severity.
Haga clic en Actualizar.
Haga clic en el menú Opciones de gráfico y asegúrese de que los nuevos gráficos que ha generado se incluyan y seleccionen en la opción Mostrar/Ocultar. También puede seleccionar el tipo de gráfico, el tamaño del gráfico, la altura, el ancho y otros atributos. Consulte Gráfico de histograma.
Ahora puede ver los gráficos personalizados de los campos de selección y sus valores de selección en el separador Registros de log y compararlos visualmente.
Agregación de segundo nivel mediante el comando eventstats en Link 🔗
Link se utiliza para agrupar los registros de log con una o más claves únicas. Por ejemplo, puede agrupar todos los registros de log que pertenecen a una transacción mediante el ID de transacción único. Las estadísticas se pueden generar en cada grupo mediante el comando stats. eventstats es un nuevo comando que puede agregar aún más estas estadísticas. En los siguientes ejemplos se muestran los casos de uso de eventstats.
Tenga en cuenta los siguientes ejemplos de juego de datos de registros de acceso:
Nombre de host (servidor): host que ha servido esta solicitud, por ejemplo, chicago_dc1.
URI: URL de la solicitud, por ejemplo, /index.html.
Content Size Out: número de bytes descargados, por ejemplo, 100.
Agrupación simple:
* | link 'Host Name (Server)', URI
| stats sum('Content Size Out') as 'Bytes Downloaded'
Con la consulta anterior se agrupan los registros de log mediante la combinación distinta de los campos Nombre de host (servidor) y URI. El campo Content Size Out de cada registro se suma por grupo en el nuevo campo Bytes descargados.
Suma global mediante evenstats 🔗
Los bytes descargados en el ejemplo anterior son para cada combinación de servidor y URL. Un caso de uso sencillo de eventstats es calcular el total de datos descargados en todos los servidores y direcciones URL:
* | link 'Host Name (Server)', URI
| stats sum('Content Size Out') as 'Bytes Downloaded'
| eventstats sum('Bytes Downloaded') as 'Total Bytes Downloaded'
En el ejemplo anterior, eventstats agrega valores para cada grupo para producir una única acumulación global. Ahora se puede transferir a classify o eval, así como utilizarlo en la cláusula where.
Varios comandos eventstats:
Se pueden agrupar o encadenar varios comandos eventstats como en el siguiente ejemplo:
.. | eventstats sum('Content Size In') as 'Bytes Uploaded', sum('Content Size Out') as 'Bytes Downloaded'
| eventstats avg('Duraton') as 'Global Average Duration'
Agrupación con eventstats 🔗
El comando eventstats también tiene un modo group by. Observe la siguiente consulta:
* | link 'Host Name (Server)', URI
| stats sum('Content Size Out') as 'Bytes Downloaded'
| eventstats sum('Bytes Downloaded') as 'Total Bytes Downloaded' by URI
En lugar de calcular un único valor, eventstats ahora calcula un valor por URI único:
El comando eventstats también puede funcionar en un campo producido por un comando eval. Por ejemplo, en lugar de la URL, podemos producir los totales en el centro de datos:
* | link 'Host Name (Server)', URI
| stats sum('Content Size Out') as 'Bytes Downloaded'
| eval offset = indexof('Host Name (Server)', _)
| eval Datacenter = substr('Host Name (Server)', 0, offset)
| eventstats sum('Bytes Downloaded') as 'Total Bytes Downloaded' by Datacenter
| fields -offset
La agrupación se puede realizar mediante una o más propiedades. Las propiedades son las claves de grupo o los valores de cadena que generan stats o eval.
Porcentajes de cálculo para comparación de grupos 🔗
Una aplicación muy importante para el comando eventstats es producir un valor global, así como identificar el porcentaje alto o el porcentaje bajo de contribución de los distintos grupos:
* | link 'Host Name (Server)', URI
| stats sum('Content Size Out') as 'Bytes Downloaded'
| eval offset = indexof('Host Name (Server)', _)
| eval Datacenter = substr('Host Name (Server)', 0, offset)
| eventstats sum('Bytes Downloaded') as 'Total Bytes Downloaded' by Datacenter
| eval 'Download Contribution %' = 100 / ('Total Bytes Downloaded' / 'Bytes Downloaded')
| fields -offset
Esta consulta permite ver qué URL provocan el mayor volumen de tráfico de descarga en comparación con las otras URL del mismo centro de datos. El campo % de contribución de descarga se puede utilizar para filtrar los grupos mediante:
la cláusula where
el comando sort para la clasificación
el comando classify para la detección de anomalías
Uso de funciones de navegación de enlaces para identificar eventos en una base de datos 🔗
Utilice Link para crear datos estructurados a partir de registros log y mostrar los datos como una tabla ordenada. Las funciones estadísticas se pueden aplicar a las columnas de la tabla mediante el comando stats para crear columnas derivadas. Estas columnas derivadas se pueden agregar más mediante el comando eventstats.
Funciones de navegación
Las funciones de navegación son útiles para recuperar los valores de una columna específica de una fila específica. Producen resultados diferentes según el comando de ordenación anterior.
Las siguientes funciones de navegación se pueden utilizar con el comando eventstats en el enlace:
Función
Descripción
rownum
Permite crear una columna de número de fila
first()
Permite obtener el primer valor para el campo especificado
last()
Permite obtener el último valor para el campo especificado
nthval()
Permite obtener el valor de columna para la fila especificada
lag()
Permite obtener el valor de columna para la fila anterior
lead()
Permite obtener el valor de columna para la siguiente fila
Para obtener más información sobre las funciones, consulte eventstats.
Obtención de contexto para un evento
Oracle Log Analytics proporciona etiquetas listas para usar para logs de alertas de base de datos. La etiqueta Abnormal Termination indica una incidencia grave que provoca el cierre de la base de datos. Una clasificación típica implica analizar la secuencia de eventos que ocurrieron antes de dicho cierre. También es útil conocer los eventos después de un cierre.
En las siguientes secciones se explican los pasos para clasificar mediante algunas de las funciones eventstats para logs de alertas de base de datos.
Enlace de eventos en logs de alertas de base de datos
Ejecute la siguiente consulta para enlazar los eventos de una base de datos seleccionada:
'Log Source' = 'Database Alert Logs' and Label != null and Entity = MyDB
| rename Entity as Database
| link span = 1minute Time, Database, Label
| sort Database, 'Start Time'
De esta forma se crea una fila única para cada etiqueta en la base de datos. Dado que hemos incluido la columna Hora, habría varias filas para la misma etiqueta si se repiten en momentos diferentes.
El comando sort ordena la tabla por el orden de Etiqueta, con el más antiguo en la primera fila.
Adición del número de fila
Ejecute la siguiente consulta para agregar un número a cada fila:
'Log Source' = 'Database Alert Logs' and Label != null and Entity = MyDB
| rename Entity as Database
| link span = 1minute Time, Database, Label
| sort Database, 'Start Time'
| eventstats rownum as 'Row Number' by Database
Si la consulta tenía más de una base de datos, el número de fila se restablecería para cada base de datos, debido a la cláusula by Database.
Identificación de la fila con evento de fallo de base de datos
La etiqueta Abnormal Termination indica que la base de datos se ha bloqueado. Identifique dichas filas con la siguiente consulta:
'Log Source' = 'Database Alert Logs' and Label != null and Entity = MyDB
| rename Entity as Database
| link span = 1minute Time, Database, Label
| sort Database, 'Start Time'
| eventstats rownum as 'Row Number' by Database
| addfields
[ * | where Label = 'Abnormal Termination'
| eventstats last('Row Number') as 'Crash Row'
]
addfields se utiliza para identificar un subjuego de los registros de log. En este caso, con addfields se buscan varias filas de la tabla. Las filas coincidentes se transfieren a eventstats y last('Row Number') selecciona el número de fila de la última fila coincidente. Ahora se rellena como un nuevo campo Fila de bloqueo. Tenga en cuenta que Fila de bloqueo tendrá un valor solo para aquellas filas que coincidan con la condición especificada en addfields.
Fila de bloqueo solo se rellena para filas específicas. Utilice otro comando eventstats para rellenar todas las filas con el valor:
'Log Source' = 'Database Alert Logs' and Label != null and Entity = MyDB
| rename Entity as Database
| link span = 1minute Time, Database, Label
| sort Database, 'Start Time'
| eventstats rownum as 'Row Number' by Database
| addfields
[ * | where Label = 'Abnormal Termination'
| eventstats last('Row Number') as 'Crash Row'
]
| eventstats max('Crash Row') as 'Event Row' by Database
De esta forma se crea la columna Fila de eventos en cada fila y contiene la fila con el último bloqueo de la base de datos.
Identificación de eventos cercanos a un bloqueo de la base de datos
En la tabla sigue habiendo varios eventos, por ejemplo, cientos. Para identificar algunos eventos antes de la fila de evento y pocos eventos después de la fila de evento, cambie la consulta para filtrar las filas:
'Log Source' = 'Database Alert Logs' and Label != null and Entity = MyDB
| rename Entity as Database
| link span = 1minute Time, Database, Label
| sort Database, 'Start Time'
| eventstats rownum as 'Row Number' by Database
| addfields
[ * | where Label = 'Abnormal Termination'
| eventstats last('Row Number') as 'Crash Row'
]
| eventstats max('Crash Row') as 'Event Row' by Database
| eval 'Start Row' = 'Event Row' - 3
| eval 'End Row' = 'Event Row' + 2
| where 'Row Number' >= 'Start Row' and 'Row Number' <= 'End Row'
En la tabla ahora se muestran los eventos ocurridos antes de la terminación anormal. También podemos ver los eventos que ocurridos después de la terminación anormal.
Eventos anteriores y siguientes
lag() se puede utilizar para obtener el evento anterior. Se puede transferir un número de fila opcional para obtener una fila anterior específica. lead() se puede utilizar de forma similar para obtener la siguiente fila:
'Log Source' = 'Database Alert Logs' and Label != null and Entity = MyDB
| rename Entity as Database
| link span = 1minute Time, Database, Label
| sort Database, 'Start Time'
| addfields
[ *
| where Label != null
| eventstats lag(Label) as 'Previous Event',lead(Label) as 'Next Event'
]
Además, nthVal() puede obtener el valor de una fila específica.
Uso de los símbolos de moneda en el análisis de log 🔗
Puede utilizar la función unit en el comando eval para marcar un campo como que contiene la moneda. A continuación, puede utilizar ese valor de campo en el análisis y mostrar el símbolo de moneda correspondiente en la tabla de visualizaciones y grupos.
Primero puede especificar la unidad de moneda con el formato definido en eval. Después de eso, la tabla de enlaces y los gráficos mostrarán los símbolos de moneda correctos.
En el siguiente ejemplo, el valor del campo Price se utiliza para calcular los valores de los nuevos campos Price (USD), Price (GBP), Price (JPY), Price (CNY) y Price (INR) y marcarlos como que contienen la moneda. Los mismos nuevos campos se utilizan para el análisis en la obtención del precio medio regional de la gasolina durante un período de varios años.
'Log Source' = 'Gasoline Prices'
| eval 'Price (USD)' = unit(Price, currency_usd)
| eval 'Price (GBP)' = unit(Price * 0.72, currency_gbp)
| eval 'Price (JPY)' = unit(Price * 110.6, currency_jpy)
| eval 'Price (CNY)' = unit(Price * 6.47, currency_cny)
| eval 'Price (INR)' = unit(Price * 74.79, currency_inr)
| link Time, Type, Region
| stats avg('Price (USD)') as 'Cost (USD)',
avg('Price (GBP)') as 'Cost (GBP)',
avg('Price (JPY)') as 'Cost (JPY)',
avg('Price (CNY)') as 'Cost (CNY)',
avg('Price (INR)') as 'Cost (INR)'
| classify 'Start Time', 'Cost (USD)', Region, Type as 'Gas Price Analysis'
En la siguiente imagen, los grupos se identifican en función de la región, el tiempo y el tipo de gasolina. La banda de precios promedio de la gasolina se utiliza para trazar las burbujas a lo largo del eje Y.
En la siguiente imagen, la tabla de grupos muestra el precio promedio de la gasolina en varias monedas. Los gráficos muestran la variación del costo en varios años para cada valor de moneda.
Análisis de series temporales con el comando timestats 🔗
Puede analizar la tendencia de un campo mediante el comando timestats. El comando timestats, cuando se utiliza después del comando link, proporciona análisis de series temporales adicionales y una visualización enriquecida.
Considere el ejemplo de logs de esquema unificado de flujo de VCN de OCI. El campo Acción de los logs de esquema unificado de flujo de VCN de OCI indica si se ha aceptado o rechazado una solicitud de red concreta. Utilice el comando timestats para analizar la tendencia de este campo. Consulte timestats.
Esto muestra que hay dos valores distintos para el período de tiempo seleccionado:
En el caso anterior, solo hay una fila disponible para cada acción única porque el comportamiento predeterminado es agrupar por el campo determinado. El primer paso consiste en asegurarse de que hay varias filas para cada valor en función del periodo de tiempo. Para ello, puede agregar Tiempo como otro campo al comando link.
'Log Source' = 'OCI VCN Flow Unified Schema Logs' | link span=1day Time, Action
El parámetro span es opcional. Si no se proporciona, se calcula un valor por defecto adecuado para el período de tiempo seleccionado. Ahora puede ver que la misma acción para un día diferente aparece en una fila independiente.
Ahora utilice el comando timestats. En este caso, queremos la hora de inicio en el eje X y el valor Recuento en el eje Y. Dado que timestats siempre requiere una función, utilice la función sum() para sumar el número de registros con el valor de acción determinado, para cada intervalo.
'Log Source' = 'OCI VCN Flow Unified Schema Logs'
| link span=1day Time, Action
| timestats name="Trend of Action" sum(Count) as Records by Action
Puede agrupar valores de series temporales similares mediante el comando timecluster después del comando link. La agrupación en clusters es útil cuando hay un gran número de series temporales que analizar o cuando desea identificar diferentes comportamientos en los valores de las series temporales.
Los logs de esquema unificado de flujo de VCN de OCI registran la información de tráfico de red para una VNIC de OCI. Para identificar cuántos datos transfieren diferentes IP públicas, se puede componer una consulta mediante los campos IP pública y Agotamiento de tamaño de contenido.
Esto muestra que hay más de 25k IP públicas únicas en el sistema.
La tabla tiene una fila por cada IP pública única. Debe dividirse para tener una fila para cada período. Para ello, agregue el campo Time al comando link:
'Log Source' = 'OCI VCN Flow Unified Schema Logs'
| eval 'Content Size Out (bytes)' = unit('Content Size Out', byte)
| link Time, 'Public IP'
Muestra varias filas para cada valor de IP pública.
Si se utiliza el comando timestats para trazar la serie temporal, devuelve solo las 100 IP públicas principales. No se pueden trazar las IP 25k en un gráfico.
Por lo tanto, en lugar de timestats, utilice timecluster para obtener los ejemplos representativos.
'Log Source' = 'OCI VCN Flow Unified Schema Logs'
| eval 'Content Size Out (bytes)' = unit('Content Size Out', byte)
| link Time, 'Public IP'
| timecluster avg('Content Size Out (bytes)') as 'Network Transfer' by 'Public IP'
Cada línea representa uno o más valores de IP pública que tienen valores similares para la transferencia de red.
Pase el mouse por encima de cualquier punto para ver más detalles: