Creación de un programa para ejecutar automáticamente una consulta de búsqueda guardada
Después de crear una búsqueda guardada, puede programar la ejecución de la consulta en la búsqueda guardada periódicamente y redirigir el resultado de la ejecución de la consulta al servicio Monitoring.
Los siguientes pasos se muestran con el servicio Monitoring como destino para supervisar la tarea programada. El servicio Monitoring almacena las métricas emitidas por Oracle Logging Analytics.
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 Reglas de detección.
Se abre la página Reglas de detección. Haga clic en Crear regla.
Se abre el cuadro de diálogo Crear regla de detección.
Haga clic en Regla de detección de búsquedas programada.
Especifique un nombre de regla para la tarea programada.
Especifique la búsqueda guardada para la que desea crear un programa. En primer lugar, seleccione el compartimento en el que se guarda la búsqueda guardada.
A continuación, en el menú, seleccione la búsqueda guardada.
Muestra los detalles de la búsqueda guardada, como la consulta y su descripción.
Seleccione el servicio de destino donde se publican los resultados de la ejecución de la consulta, por ejemplo, Monitoring.
En el servicio Monitoring se almacenan las métricas para el resultado de la ejecución de la consulta en un programa.
Seleccione Compartimento de métricas, el compartimento en el que se creará la métrica. Por defecto, Oracle Logging Analytics selecciona un compartimento.
Seleccione Espacio de nombre de métrica, el espacio de nombre de métrica en el que desea colocar la nueva métrica. El ámbito de las opciones disponibles para seleccionar el espacio de nombre se define mediante la selección del compartimento de métricas en el paso anterior. Si las opciones no están disponibles, también puede introducir un nuevo valor para el espacio de nombre.
Nota
Al especificar un nuevo valor para el espacio de nombres, seleccione un nombre que no empiece por oracle_ y oci_. Son prefijos reservados. Consulte Publicación de métricas personalizadas.
Si lo desea, seleccione Grupo de recursos, el grupo al que pertenece la métrica. Un grupo de recursos es una cadena personalizada con una métrica personalizada.
Introduzca Nombre de métrica, el nombre de la métrica, utilizada en el explorador del servicio Monitoring para ver las métricas. Solo se puede especificar una métrica.
Para facilitar la identificación en el explorador de métricas, se recomienda incluir el nombre de la búsqueda guardada en el nombre de la métrica, por ejemplo, <nombremibúsquedaguardada><nombre_métrica>.
Especifique Intervalo, la ventana de agregación. Puede optimizar el programa para que se ejecute en los minutos, horas, días o semanas seleccionados. Además, al seleccionar agregaciones más grandes, por ejemplo Días, puede especificar la agregación más detallada dentro del rango, por ejemplo, la hora del día en la que se debe ejecutar la consulta.
Si las políticas de IAM necesarias aún no se han definido, se muestra una notificación que enumera las políticas para:
Crear un grupo dinámico
Aplicar las políticas al grupo dinámico para permitir que se ejecuten las tareas programadas
Anote las políticas mostradas y créelas.
Haga clic en Crear regla de detección.
La consulta está programada ahora para ejecutarse en un intervalo normal y las métricas resultantes se emiten al servicio Monitoring.
En la página de lista de reglas de detección de búsqueda programada, haga clic en el nombre de la búsqueda programada. En la página de detalles de la búsqueda programada y haga clic en Ver en explorador de métricas para ver las métricas en el servicio Monitoring.
Permitir a los usuarios realizar todas las operaciones en tareas programadas 🔗
Para crear tareas programadas, primero configure los permisos adecuados mediante la creación de las siguientes políticas de IAM:
Cree un grupo dinámico para permitir que las tareas programadas publiquen métricas en el servicio de supervisión desde un compartimento específico:
ALL {resource.type='loganalyticsscheduledtask', resource.compartment.id='<compartment ocid>'}
Como alternativa, para permitir que las métricas se publiquen desde todos los compartimentos:
ALL {resource.type='loganalyticsscheduledtask'}
Cree políticas para permitir que el grupo dinámico realice operaciones de tareas programadas en el arrendamiento:
allow group <group_name> to use loganalytics-scheduled-task in tenancy
allow dynamic-group <dynamic_group_name> to use metrics in tenancy
allow dynamic-group <dynamic_group_name> to read management-saved-search in tenancy
allow dynamic-group <dynamic_group_name> to {LOG_ANALYTICS_QUERY_VIEW} in tenancy
allow dynamic-group <dynamic_group_name> to {LOG_ANALYTICS_QUERYJOB_WORK_REQUEST_READ} in tenancy
allow dynamic-group <dynamic_group_name> to READ loganalytics-log-group in tenancy
allow dynamic-group <dynamic_group_name> to read compartments in tenancy
Algunas de las sentencias de política anteriores se incluyen en las plantillas de políticas definidas por Oracle fácilmente disponibles. Puede que desee considerar el uso de la plantilla para su caso de uso. Consulte Plantillas de políticas definidas por Oracle para casos de uso comunes.
Para conocer la referencia de la API de ScheduledTask, consulte Referencia de ScheduledTask en la documentación de la API de Oracle Cloud Infrastructure.
Visualización de todas las tareas programadas en un compartimento mediante la API 🔗
Para ver las tareas programadas para una búsqueda guardada específica, puede visitar la página de detalles de búsqueda guardada. Sin embargo, si desea mostrar todas las tareas programadas en un compartimento específico sin hacer referencia a las búsquedas guardadas para las que se hayan creado las tareas programadas, utilice la API para consultar la lista de tareas programadas. Consulte ListScheduledTasks.
Especifique los siguientes parámetros en el comando GET:
taskType=SAVED_SEARCH
compartmentId=<compartment_OCID>
limit=1000
sortOrder=DESC
sortBy=timeUpdated
Para ejecutar el comando, necesitará:
Espacio de nombre: espacio de nombre de Logging Analytics que ha especificado al crear las tareas programadas.
OCID de compartimento: OCID del compartimento que desea consultar para obtener la lista de tareas programadas creadas en él.
Supervisar tareas programadas de búsqueda guardada 🔗
Puede supervisar el estado de las tareas programadas de búsqueda guardada mediante las métricas Estado de ejecución de tarea programada. En caso de ejecución fallida u omitida de una tarea debido a una anomalía de la infraestructura o si se modifica un recurso o configuración dependiente, la métrica proporciona detalles del fallo para ayudarle a rectificarlo.
Cada tarea programada de búsqueda guardada tiene su propio intervalo según lo especificado en su programa de tarea. Se emite una métrica a su arrendamiento para cada ejecución de tarea programada. Pase el cursor por los puntos de datos del gráfico para ver más detalles sobre la tarea. Siga estos pasos cuando desee filtrar los datos de métrica en función de una de las dimensiones Status, DisplayName o ResourceId:
Haga clic en el menú Opciones de la esquina superior derecha de la métrica Estado de ejecución de tarea programada y seleccione Ver consulta en el explorador de métricas.
La métrica se muestra ahora en el explorador de métricas. Aquí, puede ver el gráfico con más detalle.
Haga clic en Editar consultas y seleccione Nombre de la dimensión y Valor de la dimensión para la métrica. Puede filtrar los datos de métrica según taskResult, el resultado de la ejecución de la tarea programada, Status de la ejecución de la tarea, DisplayName de la tarea, queryExecTimeRange o ResourceId.
Nota
Para ver gráficos y datos tabulares desde el explorador de métricas especificando un nombre de dimensión y un valor de dimensión, evite utilizar campos que tengan paréntesis u otros caracteres especiales en el nombre. Si el campo seleccionado para el nombre de dimensión tiene caracteres especiales, cree un campo virtual mediante el comando eval o cambie el nombre del campo existente mediante el comando rename para que se eliminen los paréntesis o los caracteres especiales. Por ejemplo, si el campo utilizado para el nombre de dimensión es Host Name (Server), puede crear un campo virtual hostname con | eval hostname=“Host Name (Server)”.
La dimensión queryExecTimeRange es útil para determinar el tiempo que se tarda en ejecutar la consulta de tarea programada. Los valores disponibles son < 5s, >= 5s and < 10s, >= 10s and < 30s y > 30s. Normalmente, las consultas que tardan más de 30 segundos en ejecutarse se consideran costosas en términos de tiempo de ejecución. Consulte How to Make Your Queries Performant.
La dimensión taskResult puede tener los valores Succeeded, Failed y Paused. La dimensión Status proporciona más detalles de taskResult. Por ejemplo, si el valor de taskResult es Paused, el valor de Status puede ser Paused by User.
Haga clic en Actualizar gráfico para refrescar la visualización del gráfico. El gráfico ahora mostrará solo los puntos de datos para los que aplicó el filtro.
Puede cambiar a la vista Tabla de datos para obtener una representación tabular de los puntos de datos recopilados.
Cambie el nombre de la dimensión para ver diferentes perspectivas en el gráfico.
Puede configurar alertas para notificarle sobre el estado a través de correo electrónico, SMS, Slack, PagerDuty, URL de punto final HTTPS o Función. Consulte Create Alerts for Detected Events.
A continuación se muestran los distintos valores de la dimensión status informados a través de esta métrica para valores taskResult específicos:
Valor taskResult
Valor Status
Descripción
Corrección recomendada
Succeeded
Succeeded
La ejecución de la tarea es normal
NA
SucceededPostingDataTruncated
La ejecución de la tarea programada se ha realizado correctamente, pero la contabilización de las métricas en el servicio de supervisión se ha truncado debido a los límites de datos de métrica.
Cuando la ejecución de la tarea programada se realiza correctamente, pero la consulta no devuelve resultados. Por lo tanto, no hay datos de métricas publicados en el servicio de supervisión.
Compruebe la consulta de búsqueda guardada.
Además, este estado puede no implicar un error. Solo sugiere que no se ha producido el evento para el que se escribe la consulta. Por ejemplo, si la consulta debe contar el número de Errores en los logs de los últimos 5 minutos y si los logs que han llegado en los últimos 5 minutos no tienen errores, se muestra SucceededNoDataFound.
SucceededPartialResults
Resultados parciales debido a consultas costosas que tardan más de dos minutos en completarse o debido a una anomalía de la infraestructura.
Póngase en contacto con los Servicios de Soporte Oracle con la información de estado.
PartialResultsNoDataFound
Resultados parciales debido a consultas costosas que tardan más de dos minutos en completarse o debido a una anomalía de la infraestructura.
Póngase en contacto con los Servicios de Soporte Oracle con la información de estado.
Failed
Skipped
La ejecución de la tarea ha fallado debido a una anomalía de la infraestructura o a un fallo recuperable.
Póngase en contacto con los Servicios de Soporte Oracle con la información de estado.
Paused
InvalidManagementSavedSearch
La cadena de consulta de búsqueda guardada o los filtros de ámbito no son válidos.
Compruebe si la búsqueda guardada se editó después de crear la tarea programada y corríjala.
NotAuthorizedOrNotFoundManagementSavedSearch
Se suprime la búsqueda guardada o la política de IAM que proporciona el permiso READ para la búsqueda guardada ha cambiado.
Asegúrese de que se ha restaurado la política de IAM.
InvalidQuery
La consulta de búsqueda guardada no es válida para generar la métrica.
Compruebe si la búsqueda guardada se editó después de crear la tarea programada y corríjala.
NotAuthorizedOrNotFoundPurgeResource
Si la tarea programada es para depurar datos de log y se suprime el compartimento de depuración o si la política de IAM para la depuración ha cambiado después de crear la tarea programada, se muestra este estado.
Compruebe si el compartimento de depuración se ha suprimido y restaure.
Asegúrese de que se ha restaurado la política de IAM.
MetricExtractionNotValid
Cualquiera de los dos motivos siguientes puede disparar el estado:
Los detalles de métrica especificados para la tarea programada están incompletos o no son válidos.
El juego de resultados de métrica no es válido, es decir, la columna de métrica no es numérica o el valor de dimensión no es cardinal.
Si los detalles de métrica están incompletos o no son válidos, actualice los detalles de métrica en la definición de tarea programada.
Si la columna de métrica no es numérica o el valor de dimensión no es cardinal, actualice la búsqueda guardada para generar una métrica y una dimensión válidas.
PausedByUser
Cuando el valor de taskResult es Paused, este valor de Status no es una indicación de la ejecución de la tarea programada. Es una indicación de la acción del usuario a través de la consola o la API, que pausó la tarea programada.
Identifique la acción de usuario que pausó la ejecución de la tarea programada y ejecute la tarea programada.
Factores importantes para crear tareas programadas 🔗
Tome nota de los siguientes factores para crear tareas programadas:
Al redactar consultas para crear tareas programadas, asegúrese de cumplir los siguientes requisitos:
Tenga en cuenta estas limitaciones para las consultas de reglas de detección:
No realice la búsqueda con comodines en el campo Contenido de log original de la consulta de tarea programada. Para obtener más información sobre las búsquedas con comodines, consulte Uso de palabras clave, frases y comodines.
El comando timestats no puede ir seguido de eval, extract, jsonextract, xmlextract y lookup.
El comando regex no se debe utilizar en campos grandes como Message para evitar que las consultas resulten costosas para su procesamiento.
Los comandos de comparación like y extract, jsonextract, xmlextract no están soportados en campos grandes como Message.
Los campos o campos de enlace utilizados en la cláusula BY no se pueden utilizar en campos grandes como Message.
The commands which are not supported in the queries for scheduled tasks are addfields, cluster, clustercompare, clusterdetails, clustersplit, compare, createview, delta, eventstats, fieldsummary, highlightgroups, geostats, linkdetails, map, nlp and timecompare.
Límites máximos:
El número máximo de campos soportados para la cláusula by es 3.
El número máximo de campos admitidos para el comando timestats es 3.
El número máximo de funciones de agregación soportadas en una consulta de tarea programada es 1.
Utilice los valores de los campos link como dimensiones para contabilizar métricas:
Seleccione hasta tres campos de dimensión y una métrica numérica para contabilizar en el servicio de supervisión. Para indicar qué campos se deben publicar en la supervisión, las consultas deben terminar con:
El comando link tiene varias columnas en la salida, como Hora de inicio, Hora de finalización, Recuento, etc., por defecto. Utilice -* en el comando fields para eliminar estos campos y especificar, opcionalmente, hasta tres campos de dimensión y un campo de métrica obligatorio.
Puede tener varias sentencias eval después del comando stats y varias funciones stats para calcular resultados intermedios. Sin embargo, la consulta debe terminar con fields -*, dim1, dim2, dim3, metric1, que indica qué dimensiones y métricas se deben publicar. Utilice las siguientes directrices para las consultas de reglas de detección:
Utilice hasta el comando 2addfields.
Utilice hasta 3 funciones stats.
Las sentencias eval son necesarias para calcular los resultados intermedios y finales.
Consultas de ejemplo:
'Log Source' = 'OCI Email Delivery'
| link 'Entity'
| addfields [ * | where deliveryEventType = r and bounceType = hard | stats count as 'hard bounces' ],
[ * | where deliveryEventType = e and length(ipPoolName) > 0 | stats count as 'total sent messages' ]
| eval 'Total Rate' = ('hard bounces' / 'total sent messages') * 100
| fields -*, 'Entity', 'Total Rate'
Si las tareas programadas se ejecutan antes de la llegada de los logs, es posible que las tareas programadas no devuelvan los resultados como se esperaba. Para evitar que falten dichos logs en las tareas programadas debido a su llegada tardía, la consulta debe contabilizarla mediante un ajuste en el rango de tiempo.
Por ejemplo, si la tarea programada se ejecuta cada 5 minutos para comprobar el número de errores de autenticación y si hay un retraso de 3 minutos entre la hora de generación de los logs y la hora a la que llegan a Oracle Logging Analytics, la tarea programada no detectará los logs. Tenga en cuenta que la tarea programada se ejecuta cada 5 minutos, por ejemplo, a las 01:00, 01:05, 01:10, etc. Si el registro de log L1 que se genera a las 01:04 llega a Oracle Logging Analytics a las 01:07. L1 no se ha detectado en la tarea programada que se ha ejecutado a la 1:05 porque el log no ha llegado a Oracle Logging Analytics en este momento. Durante la siguiente ejecución a las 01:10, la consulta busca logs con registros de hora entre las 01:05 y las 01:10. También en este ciclo, L1 no se detecta porque tiene un registro de hora de 01:04. Es posible que la siguiente consulta no vea todos los registros de logs si los logs llegan tarde:
Label = 'Authentication Error' | stats count as logrecords by 'Log Source'
Para determinar el retraso en la llegada de los logs a Oracle Logging Analytics, calcule la diferencia entre el registro de hora mencionado en el registro de log y el Hora de contabilización del procesador de log. La siguiente consulta de ejemplo se puede utilizar para comprobar si hay un retraso:
Label = 'Authentication Error' and 'Log Processor Posting Time (OMC INT)' != null | fields 'Agent Collection Time (OMC INT)', 'Data Services Load Time', 'Process Time', 'Log Processor Posting Time (OMC INT)'
La siguiente consulta utiliza la función dateRelative para ajustar el retraso de 3 minutos en una tarea que se ejecuta en un intervalo de 5 minutos:
Label = 'Authentication Error' and Time between dateRelative(8minute, minute) and dateRelative(3minute, minute) | stats count as logrecords by 'Log Source'
Otros factores:
Para saber cómo se crean las consultas en el servicio Monitoring, consulte Creación de consultas de métricas en la documentación de Oracle Cloud Infrastructure.
Tenga en cuenta la información de límites para publicar los datos de métricas en el servicio Monitoring. Los límites corresponden a las métricas de una tarea programada. Consulte PostMetricData API en la documentación de Oracle Cloud Infrastructure.
Cuando la búsqueda guardada puede generar más de 50 valores únicos por campo, se contabilizan resultados parciales debido a los límites impuestos por el servicio Monitoring. En estos casos, para ver los resultados top o bottom 50, utilice el comando sort.
Considere un ejemplo en el que desea saber el número de errores de autenticación en una ejecución programada cada 5 minutos:
Label = 'Authentication Error' | stats count as 'Number of Authentication Errors'
Cuando se selecciona la visualización de la tabla de resumen en el explorador de logs, se muestra la siguiente salida:
Cuando la tarea programada ejecute una métrica como la anterior, se publicará la misma en el servicio Monitoring.
En el explorador de métricas, la métrica publicada anteriormente se puede ver de la siguiente forma:
Haga clic en Mostrar tabla de datos para ver la métrica en formato tabular:
Si desea conocer el desglose de errores de autenticación en cada host:
Label = 'Authentication Error' | stats count as 'Number of Authentication Errors' by 'Host IP Address (Client)'
Utilice Summary Visualization para obtener una vista previa del aspecto de una salida de métrica para la consulta.
En la página Explorador de Métricas, el mismo gráfico de métrica por IP de host tiene el siguiente aspecto:
Para ver el número por IP de host, especifique el nombre de dimensión de métrica como Host_IP_Address_Client y desactive la casilla de control Agregar flujos de métricas:
Cómo hacer que sus consultas sean eficaces
Algunas de las consultas provocan tiempos de ejecución elevados o, en algunos casos, un timeout y, finalmente, retrasan las ejecuciones de sus propias tareas. En estos casos, se recomienda crear campos ampliados (EFD) o etiquetas y utilizarlos en los filtros de las consultas programadas para que las consultas sean menos costosas.
Por ejemplo, si desea contabilizar el número de timeouts de conexión en los logs de alertas de la base de datos cada 5 minutos, la siguiente consulta es una de las formas de ejecutarla:
'Log Source' = 'Database Alert Logs' and 'TNS-12535' | stats count as 'Number of Timeouts'
La consulta anterior busca la cadena TNS-12535 en Contenido de log original. Sin embargo, esta no es la forma más eficaz de buscar los timeouts, especialmente cuando la tarea está programada para ejecutarse cada 5 minutos escaneando millones de registros.
En su lugar, utilice el campo en el que se extrae dicho ID de error y redacte la consulta como se muestra a continuación:
'Log Source' = 'Database Alert Logs' and 'Error ID' = 'TNS-12535' | stats count as 'Number of Timeouts'
También puede filtrar mediante la etiqueta:
'Log Source' = 'Database Alert Logs' and Label = Timeout | stats count as 'Number of Timeouts'
Los orígenes de log definidos por Oracle tienen muchos EFD y etiquetas definidos en ellos. Para logs personalizados, se recomienda definir sus propias etiquetas y EFD y utilizarlas en las consultas programadas en lugar de buscar en Contenido de log original. Consulte Creación de una etiqueta y Uso de campos ampliados en orígenes.