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. Las métricas emitidas por Oracle Log Analytics se almacenan mediante el servicio Monitoring.

  1. Abra el menú de navegación y haga clic en Observación y gestión. En Log Analytics, haga clic en Administración.

    Los recursos de administración se muestran en el panel en Administración en la izquierda. 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 programadas.

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

  4. En Seleccionar una búsqueda guardada:

    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.

    Esto muestra los detalles de la búsqueda guardada, como la consulta y su descripción.

  5. En Frecuencia de configuración:

    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.

    Puede especificar la frecuencia de la ejecución de la consulta, como Run indefinitely, Run once o Custom.

    También puede incluir Recuento de repeticiones en la especificación de frecuencia para el número de veces que se debe ejecutar la consulta.

  6. En Seleccionar un servicio de destino que configurar:

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

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

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

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

  7. Opcionalmente, amplíe la sección Mostrar opciones avanzadas y agregue etiquetas a la regla de detección.

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

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

  10. 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 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 tarea programada 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 {LOG_ANALYTICS_LOOKUP_READ} 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 Log 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.

Supervise las tareas programadas de búsqueda guardada

Puede supervisar el estado de las tareas programadas de la búsqueda guardada mediante las métricas Estado de ejecución de tarea programada en el servicio Monitoring. En caso de ejecución fallida u omitida de una tarea debido a una anomalía de infraestructura o si se modifica un recurso o configuración dependiente, la métrica proporciona detalles del fallo para ayudarle a rectificarlo.

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

Cada tarea programada de búsqueda guardada tiene su propio intervalo según lo especificado en su programa de tareas. 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. Puede filtrar los datos de métrica según una de las dimensiones Status, DisplayName o ResourceId.

  1. Abra el menú de navegación y haga clic en Observación y gestión. En Log Analytics, haga clic en Administración.
  2. Los recursos de administración se muestran en el panel en Administración en la izquierda. Haga clic en Reglas de detección. En la página de lista de reglas de detección, haga clic en el nombre de la regla de detección de búsqueda guardada que desea abrir. Se abre la página de detalles de la regla de detección.

  3. En los enlaces de la izquierda, haga clic en Métricas.


    Métricas de estado de ejecución

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


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


    Métricas que se muestran en el explorador de métricas

    Deslice el botón Mostrar tabla de datos para ver los detalles de las métricas:


    Métricas de estado en formato tabular

  5. 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 como resultado de la ejecución de la tarea programada, Status de la ejecución de la tarea, DisplayName de la tarea, queryExecTimeRange o su 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 con el comando eval o cambie el nombre del campo existente con el comando rename para eliminar los paréntesis o 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 Cómo hacer que las consultas sean eficaces.

    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 haya aplicado el filtro.

    Puede cambiar a la vista Tabla de datos para ver una representación tabular de los puntos de datos recopilados.

  6. Cambie el nombre de la dimensión para ver diferentes perspectivas en el gráfico.

Puede configurar alertas para notificarle el estado a través de correo electrónico, SMS, Slack, PagerDuty, URL de punto final HTTPS o Función. Consulte Creación de alertas para eventos detectados.

A continuación se muestran los distintos valores de la dimensión status que se han notificado mediante 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

N/D

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étricas.

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

SucceededNoDataFound

Cuando la ejecución de la tarea programada se realiza correctamente, pero la consulta no devuelve ningún resultado. 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, es posible que este estado no implique un error. Solo sugiere que no se ha producido el evento para el que se escribe la consulta. Por ejemplo, si la consulta va a contar el número de errores en los logs en los últimos 5 minutos y si los logs que llegaron 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 a una anomalía en 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 a una anomalía en 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 infraestructura o a un fallo recuperable.

Póngase en contacto con los Servicios de Soporte Oracle con la información de Estado.

Paused

InvalidManagementSavedSearch

Los filtros de ámbito o cadena de consulta de búsqueda guardada no son válidos.

Compruebe si la búsqueda guardada se editó después de crear la tarea programada y corríjala.

NotAuthorizedOrNotFoundManagementSavedSearch

La búsqueda guardada se suprime o la política de IAM que proporciona el permiso READ para la búsqueda guardada ha cambiado.

Asegúrese de que se restaura 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 se suprime el compartimento de depuración y restaurarlo.

Asegúrese de que se restaura 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 indica 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 la creación de 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 con los siguientes requisitos:

    • Tenga en cuenta estas limitaciones para las consultas de reglas de detección:
      • No realice búsquedas 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 sean costosas para su procesamiento.

        La comparación like y los comandos extract, jsonextract y xmlextract no están soportados en campos grandes como Message.

        Los campos de enlace o los campos 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 cluster, clustercompare, clusterdetails, clustersplit, compare, createview, delta, 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 admitidas en una consulta de tarea programada es 1.

    • Utilice los valores de los campos link como dimensiones para publicar métricas:

      Seleccione hasta tres campos de dimensión y una métrica numérica para publicar 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 los 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 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.

      Ejemplos de consultas:

      '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
  • Larga de 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 estos 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 el tiempo en que se generan los logs y el tiempo en que llegan a Oracle Log 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 alcanza Oracle Log Analytics a las 01:07. No se ha detectado L1 en la tarea programada que se ha ejecutado a las 1:05 porque el log no ha llegado a Oracle Log 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, no se detecta L1 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 Log Analytics, calcule la diferencia entre el registro de hora mencionado en el registro de log y la hora de contabilización del procesador de logs. 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.

    • Observe los límites de la información 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 200 valores únicos por campo, los resultados parciales se contabilizan debido a los límites impuestos por el servicio Monitoring. En estos casos, para ver los resultados de top o bottom 200, utilice el comando sort.

Ejemplo de consultas para tareas programadas

Ejemplo de consultas para ver métricas

  • Considere un ejemplo en el que desee 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 del explorador de logs para la consulta

    Siempre que la tarea programada ejecute una métrica como la anterior, se publicará lo mismo en el servicio Monitoring.

    En el explorador de métricas, la métrica publicada anterior se puede ver de la siguiente manera:


    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 la visualización de resumen 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 Metric Explorer, el mismo gráfico de métricas 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 dimensión de métrica

Cómo hacer que tus consultas sean eficaces

Algunas de las consultas generan tiempos de ejecución elevados o, en algunos casos, un timeout y, finalmente, provocan ejecuciones retrasadas de sus propias tareas. En tales 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 publicar 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 los 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.