Creare una pianificazione per eseguire automaticamente una query di ricerca salvata

Dopo aver creato una ricerca salvata, è possibile pianificare l'esecuzione periodica della query nella ricerca salvata e instradare i risultati dell'esecuzione della query al servizio di monitoraggio.

Altri argomenti per i task pianificati:

Il servizio di monitoraggio illustra i passi riportati di seguito come destinazione per il monitoraggio del task pianificato. Le metriche emesse da Oracle Log Analytics vengono memorizzate dal servizio di monitoraggio.

  1. Aprire il menu di navigazione e fare clic su Observability & Management. In Log Analytics, fare clic su Amministrazione.

    Le risorse di amministrazione sono elencate nel riquadro di navigazione a sinistra in Amministrazione. Fare clic su Regole di rilevamento.

    Viene visualizzata la pagina Regole di rilevamento. Fare clic su Crea regola.

    Viene visualizzata la finestra di dialogo Crea regola di rilevamento.

  2. Fare clic su Regola di rilevamento ricerca pianificata.

  3. Specificare un nome regola per il task pianificato.

  4. In Selezionare una ricerca salvato:

    Specificare la ricerca salvata per la quale si desidera creare una schedulazione. In primo luogo, selezionare il compartimento in cui viene salvata la ricerca salvata.

    Successivamente, dal menu selezionare Ricerca salvata.

    Vengono visualizzati i dettagli della ricerca salvata, ad esempio la query e la relativa descrizione.

  5. In Frequenza di impostazione:

    Specificare Intervallo, la finestra di aggregazione. È possibile ottimizzare la schedulazione da eseguire nei minuti, ore, giorni o settimane selezionati. Inoltre, quando si selezionano aggregazioni di dimensioni maggiori, ad esempio Giorni, è possibile specificare l'aggregazione più fine all'interno dell'intervallo, ad esempio l'ora del giorno in cui la query deve essere eseguita.

    È possibile specificare la frequenza di esecuzione della query, ad esempio Run indefinitely, Run once o Custom.

    È inoltre possibile includere Conteggio ripetizioni nella specifica di frequenza per il numero di volte in cui la query deve essere eseguita.

  6. In Selezionare un servizio di destinazione da configurare:

    1. Selezionare il Servizio di destinazione in cui vengono pubblicati i risultati dell'esecuzione della query, ad esempio Monitoring.

      Il servizio di monitoraggio memorizza le metriche per il risultato dell'esecuzione della query in base a una pianificazione.

    2. Selezionare Compartimento metrica, il compartimento in cui verrà creata la metrica. Per impostazione predefinita, un compartimento viene selezionato da Oracle Log Analytics.

    3. Selezionare Spazio di nomi delle metriche, lo spazio di nomi delle metriche in cui si desidera inserire la nuova metrica. L'ambito delle opzioni disponibili per la selezione dello spazio di nomi è definito dalla selezione del compartimento di metriche nel passo precedente. Se le opzioni non sono disponibili, è anche possibile immettere un nuovo valore per lo spazio di nomi.

      Nota

      Quando si specifica un nuovo valore per lo spazio di nomi, selezionare un nome che non inizi con oracle_ e oci_. Sono prefissi riservati. Vedere Pubblicazione delle metriche personalizzate.
    4. Facoltativamente, selezionare Gruppo di risorse, il gruppo a cui appartiene la metrica. Un gruppo di risorse è una stringa personalizzata fornita con una metrica personalizzata.

    5. Immettere Nome metrica, il nome della metrica, utilizzato in Monitoring Service Explorer per visualizzare le metriche. È possibile specificare solo una metrica.

      Per semplificare l'identificazione in Metrics Explorer, si consiglia di includere il nome della ricerca salvata nel nome della metrica, ad esempio <mysavedsearchname><metric_name>.

  7. Facoltativamente, espandere la sezione Mostra opzioni avanzate e aggiungere tag alla regola di rilevamento.

  8. Se i criteri IAM richiesti non sono ancora definiti, viene visualizzata una notifica che elenca i criteri per:

    • Crea un gruppo dinamico
    • Applicare i criteri al gruppo dinamico per consentire l'esecuzione dei task pianificati

    Prendere nota dei criteri elencati e crearli.

  9. Fare clic su Crea regola di rilevamento.

    L'esecuzione della query è ora pianificata a intervalli regolari e le metriche risultanti vengono emesse al servizio di monitoraggio.

  10. Nella pagina contenente l'elenco delle regole di rilevamento della ricerca pianificata, fare clic sul nome della ricerca pianificata. Nella pagina dei dettagli della ricerca pianificata, fare clic su Visualizza in Explorer metriche per visualizzare le metriche nel servizio di monitoraggio.

Consenti agli utenti di eseguire tutte le operazioni sui task pianificati

Per creare task pianificati, impostare innanzitutto le autorizzazioni corrette creando i criteri IAM riportati di seguito.

  1. Creare un gruppo dinamico per consentire ai task pianificati di inviare le metriche al servizio di monitoraggio da un compartimento specifico:

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

    In alternativa, per consentire la pubblicazione delle metriche da tutti i compartimenti:

    ALL {resource.type='loganalyticsscheduledtask'}
  2. Creare criteri per consentire al gruppo dinamico di eseguire le operazioni dei task pianificati nella 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

    Controllare se il gruppo di utenti dispone dell'autorizzazione di lettura/uso per la risorsa di aggregazione Management-dashboard-family nella tenancy. In caso contrario, includere la seguente istruzione criterio nel criterio creato:

    allow group <group_name> to {MANAGEMENT_SAVED_SEARCH_READ} in tenancy

Visualizza tutti i task pianificati in un compartimento mediante API

Per visualizzare i task schedulati per una ricerca salvata specifica, è possibile visitare la pagina dei dettagli della ricerca salvata. Tuttavia, se si desidera elencare tutti i task pianificati in un compartimento specifico senza fare riferimento alle ricerche salvate per le quali sono stati creati i task pianificati, utilizzare l'API per eseguire una query per elencare i task pianificati. Vedere ListScheduledTasks.

Specificare i seguenti parametri nel comando GET:

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

Per eseguire il comando, è necessario:

  • Spazio di nomi: lo spazio di nomi Log Analytics specificato durante la creazione dei task pianificati.
  • OCID compartimento: l'OCID del compartimento su cui si desidera eseguire una query per la lista dei task pianificati creati in esso.

Monitorare i task pianificati della ricerca salvata

È possibile monitorare l'integrità dei task schedulati della ricerca salvata mediante le metriche Stato esecuzione task schedulato nel servizio di monitoraggio. In caso di esecuzione non riuscita o saltata di un task a causa di un'anomalia dell'infrastruttura o se una risorsa o una configurazione dipendente viene modificata, la metrica fornisce i dettagli dell'errore per facilitare la correzione.

Per i passi per accedere alla metrica Stato esecuzione task pianificato, vedere Monitorare Log Analytics mediante le metriche del servizio.

Ogni task schedulato della ricerca salvata ha il proprio intervallo come specificato nella relativa schedulazione task. Una metrica viene emessa alla tenancy per ogni esecuzione di task pianificata. Passare il puntatore del mouse sui datapoint del grafico per visualizzare ulteriori dettagli sull'attività. È possibile filtrare i dati delle metriche in base a una delle dimensioni Status, DisplayName o ResourceId.

  1. Aprire il menu di navigazione e fare clic su Observability & Management. In Log Analytics, fare clic su Amministrazione.
  2. Le risorse di amministrazione sono elencate nel riquadro di navigazione a sinistra in Amministrazione. Fare clic su Regole di rilevamento. Nella pagina contenente l'elenco delle regole di rilevamento, fare clic sul nome della regola di rilevamento della ricerca salvata che si desidera aprire. Viene visualizzata la pagina dei dettagli della regola di rilevamento.

  3. Fare clic su Metriche. Viene visualizzata la scheda Metriche.

  4. Fare clic sul menu Opzioni nell'angolo superiore destro della metrica Stato esecuzione task pianificato e selezionare Visualizza in Explorer metriche.

    La metrica viene ora visualizzata in Esplora metriche. Qui è possibile visualizzare il grafico in modo più dettagliato.


    Metriche visualizzate in Metrics Explorer

    Far scorrere il pulsante Mostra tabella dati per visualizzare i dettagli delle metriche:


    Metriche di stato in formato tabulare

  5. Fare clic su Modifica query e selezionare Nome dimensione e Valore dimensione per la metrica. È possibile filtrare i dati delle metriche in base a taskResult in base al risultato dell'esecuzione del task pianificato, a Status di esecuzione del task, a DisplayName del task, a queryExecTimeRange o al relativo ResourceId.

    Nota

    Per visualizzare grafici e dati in formato tabulare da Esplora metriche specificando un nome dimensione e un valore dimensione, evitare di utilizzare campi con parentesi o altri caratteri speciali nel nome. Se il campo selezionato per il nome dimensione contiene caratteri speciali, creare un campo virtuale utilizzando il comando eval o rinominare il campo esistente utilizzando il comando rename in modo che vengano rimosse le parentesi o i caratteri speciali. Ad esempio, se il campo utilizzato per Nome dimensione è Host Name (Server), è possibile creare un campo virtuale hostname con | eval hostname=“Host Name (Server)”.

    La dimensione queryExecTimeRange è utile per determinare il tempo impiegato per eseguire la query del task pianificato. I valori disponibili sono < 5s, >= 5s and < 10s, >= 10s and < 30s e > 30s. In genere, le query che richiedono più di 30 secondi per essere eseguite sono considerate costose in termini di tempo di esecuzione. Vedere How to Make Your Query Performant.

    La dimensione taskResult può avere i valori Succeeded, Failed e Paused. La dimensione Status fornisce ulteriori dettagli su taskResult. Ad esempio, se il valore di taskResult è Paused, il valore di Status può essere Paused by User.

    Fare clic su Aggiorna grafico per aggiornare la visualizzazione del grafico. Il grafico visualizzerà solo i datapoint per i quali è stato applicato il filtro.

    È possibile passare alla vista Tabella dati per una rappresentazione tabulare dei datapoint raccolti.

  6. Modificare il nome della dimensione per visualizzare prospettive diverse nel grafico.

È possibile impostare avvisi per notificare lo stato tramite e-mail, SMS, Slack, PagerDuty, URL endpoint HTTPS o funzione. Vedere Creazione di avvisi per gli eventi rilevati.

Di seguito sono riportati i vari valori della dimensione status riportati tramite questa metrica per valori taskResult specifici.

valore taskResult valore Status Descrizione Correzione consigliata

Succeeded

Succeeded

L'esecuzione del task è normale

N/D

SucceededPostingDataTruncated

L'esecuzione del task pianificato è riuscita, ma la pubblicazione delle metriche nel servizio di monitoraggio è stata troncata a causa dei limiti dei dati delle metriche.

Assicurarsi che le metriche rimangano nei limiti specificati. Vedere OCI CLI Command Reference - Monitoring Service Metric Data.

SucceededNoDataFound

Quando l'esecuzione del task pianificato è riuscita, ma la query non ha restituito alcun risultato. Pertanto, non sono stati inviati dati di metrica al servizio di monitoraggio.

Controllare la query di ricerca salvata.

Inoltre, questo stato non può comportare un errore. Indica solo che l'evento per il quale viene scritta la query non si è verificato. Ad esempio, se la query deve contare il numero di errori nei log negli ultimi 5 minuti e se i log arrivati negli ultimi 5 minuti non contengono errori, viene visualizzato SucceededNoDataFound.

SucceededPartialResults

Risultati parziali a causa di query costose che richiedono più di due minuti per il completamento o a causa di un'anomalia dell'infrastruttura.

Contattare il Supporto Oracle fornendo le informazioni sullo stato.

PartialResultsNoDataFound

Risultati parziali a causa di query costose che richiedono più di due minuti per il completamento o a causa di un'anomalia dell'infrastruttura.

Contattare il Supporto Oracle fornendo le informazioni sullo stato.

Failed

Skipped

Esecuzione del task non riuscita a causa di un'anomalia dell'infrastruttura o di un errore recuperabile.

Contattare il Supporto Oracle fornendo le informazioni sullo stato.

Paused

InvalidManagementSavedSearch

La stringa di query o i filtri di ambito della ricerca salvata non sono validi.

Verificare se la ricerca salvata è stata modificata dopo la creazione del task schedulato e correggerla.

NotAuthorizedOrNotFoundManagementSavedSearch

La ricerca salvata viene eliminata o il criterio IAM che fornisce l'autorizzazione READ per la ricerca salvata è stato modificato.

Assicurarsi che il criterio IAM venga ripristinato.

InvalidQuery

La query di ricerca salvata non è valida per la generazione della metrica.

Verificare se la ricerca salvata è stata modificata dopo la creazione del task schedulato e correggerla.

NotAuthorizedOrNotFoundPurgeResource

Se il task pianificato prevede la rimozione dei dati di log e il compartimento di rimozione viene eliminato o se il criterio IAM per la rimozione è stato modificato dopo la creazione del task pianificato, viene visualizzato questo stato.

Controllare se il compartimento di rimozione viene eliminato e ripristinato.

Assicurarsi che il criterio IAM venga ripristinato.

MetricExtractionNotValid

Uno dei due motivi riportati di seguito può attivare lo stato.

  • I dettagli della metrica specificati per il task pianificato sono incompleti o non validi.
  • Il set di risultati della metrica non è valido, ovvero la colonna della metrica non è numerica o il valore della dimensione non è cardinale.

Se i dettagli della metrica sono incompleti o non validi, aggiornare i dettagli della metrica nella definizione del task schedulato.

Se la colonna della metrica non è numerica o il valore della dimensione non è cardinale, aggiornare la ricerca salvata per produrre una metrica e una dimensione valide.

PausedByUser

Se il valore di taskResult è Paused, questo valore di Status non indica l'esecuzione del task pianificato. Indica l'azione dell'utente tramite la console o l'API, che ha sospeso il task pianificato.

Identificare l'azione utente che ha sospeso l'esecuzione del task schedulato ed eseguire il task schedulato.

Fattori importanti per la creazione di task pianificati

Prendere nota dei seguenti fattori per la creazione di task schedulati:

  • Requisiti per la composizione delle interrogazioni:

    Quando si compongono query per creare task pianificati, assicurarsi di soddisfare i requisiti riportati di seguito.

    • Le limitazioni riportate di seguito per le query delle regole di rilevamento sono riportate di seguito.
      • Evitare di eseguire la ricerca con caratteri jolly nel campo Contenuto log originale nella query task schedulata. Per ulteriori informazioni sulle ricerche con caratteri jolly, vedere Usa parole chiave, frasi e caratteri jolly.

      • Il comando timestats non può essere seguito da eval, extract, jsonextract, xmlextract e lookup.

      • Il comando regex non deve essere utilizzato in campi di grandi dimensioni come Message per evitare di rendere le query costose per l'elaborazione.

        Il confronto like e i comandi extract, jsonextract e xmlextract non sono supportati in campi di grandi dimensioni come Message.

        I campi di collegamento o i campi utilizzati nella clausola BY non possono essere utilizzati in campi di grandi dimensioni come 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.

    • Limiti massimi:

      Il numero massimo di campi supportati per la clausola by è 3.

      Il numero massimo di campi supportati per il comando timestats è 3.

      Il numero massimo di funzioni aggregate supportate in una query task pianificata è 1.

    • Utilizzare i valori dei campi link come dimensioni per i parametri di contabilizzazione:

      Selezionare fino a tre campi dimensione e una metrica numerica da registrare nel servizio di monitoraggio. Per indicare quali campi devono essere inviati al monitoraggio, le query devono terminare con:

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

      Il comando link contiene diverse colonne nell'output, ad esempio ora di inizio, ora di fine, conteggio e così via, per impostazione predefinita. Utilizzare -* nel comando fields per rimuovere questi campi e specificare facoltativamente fino a tre campi dimensione e un campo metrica obbligatorio.

      È possibile avere più istruzioni eval dopo il comando stats e più funzioni stats per il calcolo dei risultati intermedi. Tuttavia, la query deve terminare con fields -*, dim1, dim2, dim3, metric1 per indicare le dimensioni e la metrica da contabilizzare. Utilizzare le linee guida riportate di seguito per le query delle regole di rilevamento.

      • Usare il comando addfields fino a 2.
      • Utilizzare fino a 3 funzioni stats.
      • Le istruzioni eval sono necessarie per il calcolo dei risultati intermedi e finali.

      Query con esempi:

      '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
  • Arresto dei log:

    Se i task pianificati vengono eseguiti prima dell'arrivo dei log, è possibile che i task pianificati non restituiscano i risultati previsti. Per evitare la mancanza di tali log nei task schedulati a causa del loro arrivo in ritardo, la query deve tenerne conto utilizzando una rettifica dell'intervallo di tempo.

    Ad esempio, se il task pianificato viene eseguito ogni 5 minuti per controllare il numero di errori di autenticazione e se vi è un ritardo di 3 minuti tra il momento in cui vengono generati i log e il momento in cui raggiungono Oracle Log Analytics, il task pianificato non rileverà i log. Si consideri che il task pianificato viene eseguito ogni 5 minuti, ad esempio 01:00, 01:05, 01:10 e così via. Se il record di log L1 generato alle ore 01:04 raggiunge Oracle Log Analytics alle ore 01:07. L1 non è stato rilevato nel task pianificato eseguito alle ore 1:05 perché il log non è arrivato a Oracle Log Analytics in questo momento. Durante l'esecuzione successiva alle 01:10, la query cerca i log con indicatori orari compresi tra le 01:05 e le 01:10. Anche in questo ciclo, L1 non viene rilevato perché ha un indicatore orario di 01:04. La query seguente potrebbe non visualizzare tutti i record di log se i log arrivano in ritardo:

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

    Per determinare il ritardo nell'arrivo dei log in Oracle Log Analytics, calcolare la differenza tra l'indicatore orario menzionato nel record di log e l'ora di pubblicazione del processore di log. La seguente query di esempio può essere utilizzata per verificare se c'è un ritardo:

    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 query seguente utilizza la funzione dateRelative per regolare il ritardo di 3 minuti in un task che viene eseguito a intervalli di 5 minuti:

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

    • Per comprendere come le query vengono create nel servizio di monitoraggio, consulta la sezione relativa alla creazione di query sulle metriche nella documentazione di Oracle Cloud Infrastructure.

    • Prendere nota delle informazioni sui limiti per la pubblicazione dei dati delle metriche nel servizio di monitoraggio. I limiti corrispondono alle metriche per un task schedulato. Consulta PostMetricData API nella Documentazione di Oracle Cloud Infrastructure.

      Quando la ricerca salvata può generare più di 200 valori singoli per campo, i risultati parziali vengono contabilizzati a causa dei limiti imposti dal servizio di monitoraggio. In questi casi, per visualizzare i risultati in alto o in basso su 200, utilizzare il comando sort.

Query di esempio per task pianificati

Query di esempio per la visualizzazione delle metriche

  • Si consideri un esempio in cui si desidera conoscere il numero di errori di autenticazione in un'esecuzione pianificata ogni 5 minuti:

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

    Quando la visualizzazione Tabella di riepilogo è selezionata in Log Explorer, viene visualizzato il seguente output:


    Output di Log Explorer per la query

    Ogni volta che il task pianificato esegue una metrica come quella precedente, lo stesso verrà inviato al servizio di monitoraggio.

    Da Metrics Explorer la metrica pubblicata sopra può essere visualizzata come segue:


    Output della metrica per il task pianificato

    Fare clic su Mostra tabella dati per visualizzare la metrica in formato tabulare:


    Formato tabulare dell'output della metrica per il task schedulato

  • Se si desidera conoscere l'analisi degli errori di autenticazione in ogni host:

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

    Utilizzare Summary Visualization per visualizzare in anteprima l'aspetto di un output di metrica per la query.


    Output della query nella visualizzazione di riepilogo

    Dalla pagina Explorer metriche, lo stesso grafico della metrica per IP host è simile al seguente:


    Output della metrica per IP host

    Per visualizzare il numero per IP host, specificare il nome della dimensione metrica come Host_IP_Address_Client e deselezionare la casella di controllo Flussi di metriche aggregati.


    Finestra di dialogo per selezionare il nome della dimensione metrica

Come rendere performanti le tue query

Alcune query portano a tempi di esecuzione elevati o, in alcuni casi, a timeout e alla fine portano a esecuzioni ritardate dei propri task. In questi casi, si consiglia di creare campi estesi (EFD) o etichette e di utilizzarli nei filtri delle query pianificate per ridurre i costi delle query.

Ad esempio, se si desidera pubblicare il numero di timeout di connessione nei log degli avvisi del database ogni 5 minuti, la query seguente è uno dei modi per eseguirla:

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

La query precedente cerca la stringa TNS-12535 in Contenuto log originale. Tuttavia, questo non è il modo più efficiente per cercare i timeout, soprattutto quando l'attività è pianificata per essere eseguita ogni 5 minuti di scansione attraverso milioni di record.

Utilizzare invece il campo in cui viene estratto tale ID errore e comporre la query come mostrato di seguito:

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

In alternativa, è possibile filtrare utilizzando l'etichetta:

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

Le origini log definite da Oracle includono numerosi EFD ed etichette. Per i log personalizzati, si consiglia di definire le proprie etichette ed EFD e di utilizzarle nelle query pianificate invece di eseguire la ricerca in Contenuto log originale. Vedere Crea un'etichetta e Usa campi estesi nelle origini.