Criar uma Programação para Executar Automaticamente uma Consulta de Pesquisa Salva

Depois de criar uma pesquisa salva, você poderá programar a execução da consulta na pesquisa salva periodicamente e rotear o resultado da execução da consulta para o serviço Monitoring.

Mais Tópicos para Tarefas Programadas:

As etapas a seguir são demonstradas com o serviço Monitoring como destino para monitorar a tarefa programada. As métricas emitidas pelo Oracle Logging Analytics são armazenadas pelo serviço Monitoring.

  1. Abra o menu de navegação e clique em Observabilidade e Gerenciamento. Em Logging Analytics, clique em Administração. A página Visão Geral da Administração é aberta.

    Os recursos de administração são listados no painel de navegação à esquerda em Recursos. Clique em Regras de detecção.

    A página Regras de detecção é aberta. Clique em Criar regra.

    A caixa de diálogo Criar Regra de Detecção é aberta.

  2. Clique em Regra de detecção de pesquisa programada.

  3. Especifique um Nome da regra para a tarefa programada.

  4. Em Selecionar uma pesquisa salva:

    Especifique a pesquisa salva para a qual você deseja criar uma programação. Primeiro, selecione o compartimento no qual a pesquisa salva é salva.

    Em seguida, no menu, selecione a Pesquisa Salva.

    Isso exibe os detalhes da pesquisa salva, como a consulta e sua descrição.

  5. Em Frequência de configuração:

    Especifique Intervalo, a janela de agregação. Você pode otimizar a programação a ser executada nos Minutos, Horas, Dias ou Semanas selecionados. Além disso, ao selecionar agregações maiores, por exemplo, Dias, você pode especificar a agregação mais fina dentro do intervalo, por exemplo, o horário do dia em que a consulta deve ser executada.

    Você pode especificar a Frequência da execução da consulta, como Run indefinitely, Run once ou Custom.

    Você também pode incluir Contagem de Repetições na especificação de frequência para o número de vezes que a consulta deve ser executada.

  6. Em Selecionar um serviço de destino a ser configurado:

    1. Selecione o Serviço de Destino no qual os resultados da execução da consulta são postados, por exemplo, Monitoring.

      O serviço Monitoring armazena as métricas do resultado da execução da consulta em uma programação.

    2. Selecione Compartimento de Métricas, aquele no qual a métrica será criada. Um compartimento é selecionado pelo Oracle Logging Analytics, por padrão.

    3. Selecione Namespace de Métricas, aquele no qual você deseja colocar a nova métrica. O escopo das opções disponíveis para selecionar o namespace é definido pela seleção do Compartimento de Métricas na etapa anterior. Se as opções não estiverem disponíveis, você também poderá digitar um novo valor para o namespace.

      Observação

      Ao especificar um novo valor para o namespace, selecione um nome que não comece com oracle_ e oci_. São prefixos reservados. Consulte Publicando Métricas Personalizadas.
    4. Se preferir, selecione Grupo de Recursos, aquele ao qual a métrica pertence. Grupo de recursos é uma string personalizada fornecida com uma métrica personalizada.

    5. Digite o Nome da Métrica, aquele usado no explorador do serviço Monitoring para exibir as métricas. Apenas uma métrica poderá ser especificada.

      Para facilitar a identificação no explorador de métricas, é recomendável incluir o nome da pesquisa salva no nome da métrica, por exemplo, <mysavedsearchname><metric_name>.

  7. Opcionalmente, expanda a seção Mostrar Opções Avançadas e adicione tags à sua regra de detecção.

  8. Se as políticas de IAM necessárias ainda não estiverem definidas, uma notificação será exibida listando as políticas para:

    • Criar um grupo dinâmico
    • Aplicar as políticas ao grupo dinâmico para permitir que as tarefas programadas sejam executadas

    Anote as políticas listadas e crie-as.

  9. Clique em Criar Regra de Detecção.

    A consulta agora está programada para ser executada em um intervalo regular e as métricas resultantes são emitidas para o serviço Monitoring.

  10. Na página de listagem de regras de detecção de pesquisa Programada, clique no nome da pesquisa programada. Na página de detalhes da pesquisa programada e clique em Exibir no Explorador de Métricas para exibir as métricas no serviço Monitoring.

Permitir que os Usuários Executem Todas as Operações em Tarefas Programadas

Para criar Tarefas Programadas, primeiro configure as permissões corretas criando as seguintes políticas do serviço IAM:

  1. Crie um grupo dinâmico para permitir que Tarefas Programadas publiquem métricas no serviço de monitoramento de um compartimento específico:

    ALL {resource.type='loganalyticsscheduledtask', resource.compartment.id='<compartment ocid>'}

    Como alternativa, para permitir que métricas sejam publicadas de todos os compartimentos:

    ALL {resource.type='loganalyticsscheduledtask'}
  2. Crie políticas para permitir que o grupo dinâmico execute operações de Tarefa Programada na tenancy:

    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

Exibir Todas as Tarefas Programadas em um Compartimento Usando a API

Para exibir as tarefas programadas de uma pesquisa salva específica, você pode visitar a página de detalhes da pesquisa salva. No entanto, se você quiser listar todas as tarefas programadas em um compartimento específico sem fazer referência às pesquisas salvas para as quais as tarefas programadas foram criadas, use a API para consultar a listagem das tarefas programadas. Consulte ListScheduledTasks.

Especifique os seguintes parâmetros no comando GET:

  • taskType=SAVED_SEARCH
  • compartmentId=<compartment_OCID>
  • limit=1000
  • sortOrder=DESC
  • sortBy=timeUpdated

Para executar o comando, você precisará:

  • Namespace: O namespace do Logging Analytics que você especificou ao criar as tarefas programadas.
  • OCID do Compartimento: O OCID do compartimento que você deseja consultar para obter a lista de tarefas programadas criadas nele.

Monitorar suas tarefas agendadas de busca salva

Você pode monitorar a integridade das tarefas programadas da pesquisa salva por meio das métricas Status de Execução da Tarefa Programada. Em caso de execução com falha ou ignorada de uma tarefa devido a uma anomalia de infraestrutura ou se um recurso ou configuração dependente for modificado, a métrica fornecerá detalhes da falha para ajudá-lo a corrigi-la.

Para ver as etapas de acesso à métrica Status de Execução da Tarefa Programada, consulte Monitorar Métricas de Serviço do Logging Analytics.

Cada tarefa programada de pesquisa salva tem seu próprio intervalo, conforme especificado em sua programação de tarefa. Uma métrica é emitida para sua tenancy para cada execução de tarefa programada. Passe o cursor sobre os pontos de dados do gráfico para exibir mais detalhes sobre a tarefa. Siga estas etapas quando quiser filtrar os dados de métrica com base em uma das dimensões Status, DisplayName ou ResourceId:

  1. Clique no menu Opções no canto superior direito da métrica Status de Execução da Tarefa Programada e selecione Exibir Consulta no Explorador de Métricas.

    A métrica agora é exibida no Explorador de Métricas. Aqui você pode ver o gráfico com mais detalhes.

  2. Clique em Editar Consultas e selecione Nome da Dimensão e Valor da Dimensão para a métrica. Você pode filtrar os dados de métrica com base em taskResult o resultado da execução da tarefa programada, Status da execução da tarefa, o DisplayName da tarefa, o queryExecTimeRange ou seu ResourceId.

    Observação

    Para exibir gráficos e dados tabulares do Metrics Explorer especificando um nome de dimensão e um valor de dimensão, evite usar campos que tenham parênteses ou outros caracteres especiais no nome. Se o campo selecionado para o Nome da Dimensão tiver caracteres especiais, crie um campo virtual usando o comando eval ou renomeie o campo existente usando o comando rename de forma que os parênteses ou caracteres especiais sejam removidos. Por exemplo, se o campo usado para Nome da Dimensão for Host Name (Server), você poderá criar um campo virtual hostname com | eval hostname=“Host Name (Server)”.

    A dimensão queryExecTimeRange é útil para determinar o tempo necessário para executar sua consulta de tarefa programada. Os valores disponíveis são < 5s, >= 5s and < 10s, >= 10s and < 30s e > 30s. Normalmente, as consultas que levam mais de 30 segundos para serem executadas são consideradas caras em termos de tempo de execução. Consulte Como Tornar Suas Consultas Executivas.

    A dimensão taskResult pode ter os valores Succeeded, Failed e Paused. A dimensão Status fornece mais detalhes de taskResult. Por exemplo, se o valor de taskResult for Paused, o valor de Status poderá ser Paused by User.

    Clique em Atualizar Gráfico para atualizar a visualização do gráfico. O gráfico agora exibirá apenas os pontos de dados aos quais você aplicou o filtro.

    Você pode alternar para a view Tabela de Dados e ver uma representação tabular dos pontos de dados coletados.

  3. Altere o nome da dimensão para exibir diferentes perspectivas no gráfico.

Você pode configurar alertas para notificá-lo sobre o status por e-mail, SMS, Slack, PagerDuty, URL do ponto final HTTPS ou Função. Consulte Criar Alertas para Eventos Detectados.

A seguir estão os vários valores da dimensão status reportados por meio dessa métrica para valores taskResult específicos:

Valor taskResult Valor Status Descrição Correção Recomendada

Succeeded

Succeeded

A execução da tarefa é normal

N/A

SucceededPostingDataTruncated

A execução da tarefa programada foi bem-sucedida, mas o lançamento das métricas no serviço de monitoramento foi truncado devido aos limites de dados da métrica.

Certifique-se de que as métricas permaneçam nos limites especificados. Consulte Referência de Comando da CLI do OCI - Dados de Métrica do Serviço Monitoring.

SucceededNoDataFound

Quando a execução da tarefa programada é bem-sucedida, mas a consulta não retornou resultados. Portanto, não há dados de métrica publicados no serviço de monitoramento.

Verifique sua consulta de pesquisa salva.

Além disso, esse status pode não implicar um erro. Apenas sugere que o evento para o qual a consulta foi gravada não ocorreu. Por exemplo, se a consulta tiver que contar o número de Erros nos logs nos últimos 5 minutos e se os logs que chegaram nos últimos 5 minutos não tiverem erros, SucceededNoDataFound será exibido.

SucceededPartialResults

Resultados parciais devido a consultas caras que levam mais de dois minutos para serem concluídas ou devido a uma anomalia na infraestrutura.

Entre em contato com o Suporte Técnico da Oracle com as informações de Status.

PartialResultsNoDataFound

Resultados parciais devido a consultas caras que levam mais de dois minutos para serem concluídas ou devido a uma anomalia na infraestrutura.

Entre em contato com o Suporte Técnico da Oracle com as informações de Status.

Failed

Skipped

Falha na execução da tarefa devido a uma anomalia de infraestrutura ou falha recuperável.

Entre em contato com o Suporte Técnico da Oracle com as informações de Status.

Paused

InvalidManagementSavedSearch

A string de consulta de pesquisa salva ou os filtros de escopo não são válidos.

Verifique se a busca salva foi editada após a criação da tarefa agendada e corrija-a.

NotAuthorizedOrNotFoundManagementSavedSearch

A pesquisa salva é excluída ou a política do IAM que fornece permissão READ para a pesquisa salva foi alterada.

Certifique-se de que a política do IAM seja restaurada.

InvalidQuery

A consulta de pesquisa salva não é válida para gerar a métrica.

Verifique se a busca salva foi editada após a criação da tarefa agendada e corrija-a.

NotAuthorizedOrNotFoundPurgeResource

Se a tarefa programada for para expurgar dados de log e o compartimento de expurgação for excluído ou se a política do IAM para expurgação tiver sido alterada após a criação da tarefa programada, esse status será exibido.

Verifique se o compartimento de expurgação foi excluído e restaure-o.

Certifique-se de que a política do IAM seja restaurada.

MetricExtractionNotValid

Qualquer um dos dois motivos a seguir pode acionar o status:

  • Os detalhes da métrica especificados para a tarefa programada estão incompletos ou são inválidos.
  • O conjunto de resultados da métrica é inválido, ou seja, a coluna da métrica não é numérica ou o valor da dimensão não é cardinal.

Se os detalhes da métrica estiverem incompletos ou inválidos, atualize os detalhes da métrica na definição da tarefa programada.

Se a coluna de métrica não for numérica ou o valor da dimensão não for cardinal, atualize a pesquisa salva para produzir métrica e dimensão válidas.

PausedByUser

Quando o valor de taskResult é Paused, esse valor de Status não é uma indicação da execução da tarefa programada. É uma indicação da ação do usuário por meio da console ou da API, que pausou a tarefa programada.

Identifique a ação do usuário que pausou a execução da tarefa programada e execute a tarefa programada.

Fatores Importantes para a Criação de Tarefas Programadas

Anote os seguintes fatores para criar tarefas agendadas:

  • Requisitos para Criar Consultas:

    Ao compor consultas para criar Tarefas Programadas, certifique-se de cumprir os seguintes requisitos:

    • Observe estas limitações para consultas de regras de detecção:
      • Evite executar pesquisa com curinga no campo Conteúdo de Log Original na consulta de tarefa programada. Para obter mais informações sobre pesquisas de curingas, consulte Usar Palavras-chave, Frases e Curingas.

      • O comando timestats não pode ser seguido por eval, extract, jsonextract, xmlextract e lookup.

      • O comando regex não deve ser usado em campos grandes como Message para evitar tornar as consultas caras para processamento.

        A comparação like e os comandos extract, jsonextract e xmlextract não são suportados em campos grandes como Message.

        Campos de link ou campos usados na cláusula BY não podem ser usados em campos grandes como Message.

      • The commands which are not supported in the queries for scheduled tasks are cluster, clustercompare, clusterdetails, clustersplit, compare, createview, delta, eventstats, fieldsummary, highlightgroups, geostats, linkdetails, map, nlp and timecompare.

    • Limites máximos:

      O número máximo de campos suportados para a cláusula by é 3.

      O número máximo de campos suportados para o comando timestats é 3.

      O número máximo de funções agregadas suportadas em uma consulta de tarefa programada é 1.

    • Use os valores dos campos link como dimensões para postar métricas:

      Selecione até três campos de dimensão e uma métrica numérica para lançar no serviço de monitoramento. Para indicar quais campos devem ser lançados no monitoramento, as consultas devem terminar com:

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

      O comando link tem várias colunas na saída, como Hora Inicial, Hora Final, Contagem etc. por padrão. Use -* no comando fields para remover esses campos e especificar opcionalmente até três campos de dimensão e um campo de métrica obrigatório.

      Você pode ter várias instruções eval após o comando stats e várias funções stats para calcular resultados intermediários. No entanto, a consulta deve terminar com fields -*, dim1, dim2, dim3, metric1 indicando quais dimensões e métricas devem ser postadas. Use as seguintes diretrizes para consultas de regras de detecção:

      • Use até o comando 2 addfields.
      • Use até 3 funções stats.
      • As instruções eval são necessárias para calcular resultados intermediários e finais.

      Exemplos 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
  • Chegada Atrasada de Logs:

    Se as tarefas programadas forem executadas antes da chegada dos logs, as tarefas programadas poderão não retornar os resultados conforme esperado. Para evitar a falta desses logs nas tarefas programadas devido à chegada atrasada, a consulta deve contabilizá-la usando um ajuste no intervalo de tempo.

    Por exemplo, se a tarefa programada for executada a cada 5 minutos para verificar o número de erros de autenticação e se houver um atraso de 3 minutos entre o momento em que os logs são gerados e o momento em que eles chegam ao Oracle Logging Analytics, a tarefa programada não detectará os logs. Considere que a tarefa agendada é executada a cada 5 minutos, digamos, 01:00, 01:05, 01:10 e assim por diante. Se o registro de log L1 gerado às 01:04 atingir o Oracle Logging Analytics às 01:07. L1 não foi detectado na tarefa programada que foi executada às 1:05 porque o log não chegou ao Oracle Logging Analytics no momento. Durante a próxima execução às 01:10, a consulta procura logs com timestamps entre 01:05 e 01:10. Neste ciclo também, L1 não é detectado porque tem um timestamp de 01:04. Talvez a seguinte consulta não veja todos os registros de logs se eles chegarem atrasados:

    Label = 'Authentication Error' | stats count as logrecords by 'Log Source'

    Para determinar o atraso na chegada dos logs ao Oracle Logging Analytics, calcule a diferença entre o timestamp mencionado no registro de log e o Horário de Publicação do Processador de Log. O exemplo de consulta a seguir pode ser usado para verificar se há um atraso:

    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)'

    A consulta a seguir usa a função dateRelative para ajustar o atraso de 3 minutos em uma tarefa que é executada em um intervalo de 5 minutos:

    Label = 'Authentication Error' and Time between dateRelative(8minute, minute) and dateRelative(3minute, minute) | stats count as logrecords by 'Log Source'
  • Outros Fatores:

    • Para entender como as consultas são criadas no serviço Monitoring, consulte Criando Consultas de Métricas na Documentação do Oracle Cloud Infrastructure.

    • Observe as informações de limites para publicar os dados de métricas no serviço Monitoring. Os limites correspondem às métricas de uma tarefa programada. Consulte PostMetricData API na Documentação do Oracle Cloud Infrastructure.

      Quando sua pesquisa salva pode gerar mais de valores 50 exclusivos por campo, resultados parciais são publicados devido aos limites impostos pelo serviço Monitoring. Nesses casos, para visualizar os resultados top ou bottom 50, use o comando sort.

Exemplos de Consultas para Tarefas Programadas

Exemplos de Consultas para Exibição de Métricas

  • Considere um exemplo em que você deseja saber o número de erros de autenticação em uma execução programada a cada 5 minutos:

    Label = 'Authentication Error' | stats count as 'Number of Authentication Errors'

    Quando a visualização Tabela de Resumo é selecionada no Log Explorer, a seguinte saída é exibida:


    Saída do Log Explorer para a consulta

    Sempre que a tarefa programada executar uma métrica como a anterior, a mesma será publicada no serviço Monitoring.

    No Metrics Explorer, a métrica postada acima pode ser exibida como a seguir:


    Saída da métrica para a tarefa programada

    Clique em Mostrar Tabela de Dados para exibir a métrica no formato tabular:


    Formato tabular da saída da métrica para a tarefa programada

  • Se você quiser saber o detalhamento dos erros de autenticação em cada Host:

    Label = 'Authentication Error' | stats count as 'Number of Authentication Errors' by 'Host IP Address (Client)'

    Use a Visualização de Resumo para visualizar como seria uma saída de métrica para sua consulta.


    Saída da consulta na visualização resumida

    Na página Explorador de Métricas, o mesmo gráfico de métricas por IP de Host tem esta aparência:


    Saída da métrica por IP do Host

    Para exibir o número por IP de Host, especifique o nome da Dimensão de Métrica como Host_IP_Address_Client e desmarque a caixa de seleção Agregar Streams de Métrica:


    Caixa de diálogo para selecionar o nome da dimensão da métrica

Como tornar suas consultas eficientes

Algumas das consultas levam a altos tempos de execução ou, em alguns casos, tempo limite e, eventualmente, levam a execuções atrasadas de suas próprias tarefas. Nesses casos, é recomendável criar campos estendidos (EFD) ou rótulos e usá-los nos filtros em suas consultas agendadas para tornar as consultas mais baratas.

Por exemplo, se você quiser publicar o número de timeouts de conexão em seus logs de alerta de banco de dados a cada 5 minutos, a seguinte consulta é uma das maneiras de executá-la:

'Log Source' = 'Database Alert Logs' and 'TNS-12535' | stats count as 'Number of Timeouts'

A consulta acima pesquisa a string TNS-12535 em Conteúdo do Log Original. No entanto, esta não é a maneira mais eficiente de procurar os tempos limite, especialmente quando a tarefa é programada para ser executada a cada 5 minutos, digitalizando milhões de registros.

Em vez disso, use o campo para o qual esse ID de erro é extraído e componha a consulta conforme mostrado abaixo:

'Log Source' = 'Database Alert Logs' and 'Error ID' = 'TNS-12535' | stats count as 'Number of Timeouts'

Como alternativa, você pode filtrar usando o rótulo:

'Log Source' = 'Database Alert Logs' and Label = Timeout | stats count as 'Number of Timeouts'

As origens de log definidas pela Oracle têm muitos EFDs e Labels definidos nelas. Para logs personalizados, é recomendável definir seus próprios labels e EFDs e usá-los nas consultas programadas, em vez de pesquisar em Conteúdo de Log Original. Consulte Criar um Label e Usar Campos Estendidos em Origens.