Esta página ha sido traducida por una máquina.

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.

Más temas para tareas programadas:

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.

  1. 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.

  2. Haga clic en Regla de detección de búsquedas programada.

  3. Especifique un nombre de regla para la tarea programada.

  4. 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.

  5. 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.

  6. Seleccione Compartimento de métricas, el compartimento en el que se creará la métrica. Por defecto, Oracle Logging Analytics selecciona un compartimento.

  7. 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.
  8. 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.

  9. 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>.

  10. 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.

  11. 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.

  12. 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.

  13. 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:

  1. 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'}
  2. 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

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.

Para obtener información sobre los pasos para acceder a la métrica Estado de ejecución de tarea programada, consulte Supervisión de Logging Analytics con métricas de servicio.

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:

  1. 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.

  2. 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.

  3. 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.

Asegúrese de que las métricas permanecen en los límites especificados. Consulte Referencia de comandos de la CLI de OCI: Monitoring Service Metric Data.

SucceededNoDataFound

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:

  • Requisitos para componer consultas:

    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:

      ... | link ... | fields -*, dim1, dim2, dim3, metric1

      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 2 addfields.
      • 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'
      'Log Source' = 'My Network Logs'
       | stats sum(Success) as TotalSuccess, sum(Failure) as TotalFailure
       | eval SuccessRate = (TotalSuccess / (TotalSuccess + TotalFailure)) * 100 | fields -*, SuccessRate
  • Late Arrival of Logs:

    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.

Consultas de ejemplo para tareas programadas

Consultas de ejemplo para ver métricas

  • 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:


    Salida de Log Explorer para la consulta

    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:


    Salida de métrica para la tarea programada

    Haga clic en Mostrar tabla de datos para ver la métrica en formato tabular:


    Formato tabular de la salida de métrica para la tarea programada

  • 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.


    Salida de la consulta en visualización de resumen

    En la página Explorador de Métricas, el mismo gráfico de métrica por IP de host tiene el siguiente aspecto:


    Salida de la métrica por IP de host

    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:


    Cuadro de diálogo para seleccionar el nombre de la dimensión de métrica

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.