Chiamata di un runbook di un Automazione di Azure da un avviso di OMS Log Analytics

Se un avviso è configurato in Log Analytics per creare un record di avviso quando i risultati corrispondono a criteri specifici, ad esempio un picco prolungato nell'utilizzo del processore o un errore di un processo dell'applicazione cruciale per il funzionamento di un'applicazione aziendale e la conseguente scrittura dell'evento corrispondente nel registro eventi di Windows, tale avviso può eseguire automaticamente un runbook di Automazione per provare a risolvere automaticamente il problema.

Sono disponibili due opzioni per chiamare un runbook durante la configurazione di un avviso:

  1. Uso di un webhook.

    • Questa è l'unica opzione disponibile se l'area di lavoro OMS non è collegata a un account di Automazione.
    • Se si ha già un account di Automazione collegato a un'area di lavoro di OMS, questa opzione è disponibile.
  2. Selezione diretta di un runbook.

    • Questa opzione è disponibile solo
    • se l'area di lavoro OMS è collegata a un account di Automazione.

Chiamata di un runbook mediante un webhook

Un webhook consente di avviare un runbook specifico in Automazione di Azure tramite una singola richiesta HTTP. Prima di configurare l'avviso di Log Analytics per chiamare il runbook usando un webhook come azione di avviso, è necessario creare prima di tutto un webhook per il runbook che deve essere chiamato usando questo metodo. Eseguire i passaggi indicati nell'articolo Creare un webhook e annotare l'URL del webhook, in modo che sia possibile farvi riferimento durante la configurazione della regola di avviso.

Chiamata diretta di un runbook

Se nell'area di lavoro OMS è stata installata e configurata l'offerta Automazione e controllo, durante la configurazione dell'opzione relativa alle azioni del runbook per l'avviso è possibile visualizzare tutti i runbook nell'elenco a discesa Seleziona un runbook e quindi selezionare il runbook specifico da eseguire in risposta all'avviso. Il runbook selezionato può essere eseguito in un'area di lavoro nel cloud di Azure o in un ruolo di lavoro ibrido per runbook. Quando l'avviso viene creato usando l'opzione relativa al runbook, viene creato un webhook per il runbook. Per visualizzare il webhook, passare all'account di Automazione e quindi al pannello del webhook per il runbook selezionato. Se si elimina l'avviso, il webhook non viene eliminato, ma l'utente può eliminarlo manualmente. Se la mancata eliminazione di un webhook non è un problema, il webhook è semplicemente un elemento orfano che dovrà essere eliminato per un'organizzazione ottimale dell'account di Automazione.

Caratteristiche di un runbook (per entrambe le opzioni)

Entrambi i metodi per chiamare il runbook dall'avviso di Log Analytics presentano caratteristiche comportamentali diverse, che devono essere comprese prima di configurare le regole dell'avviso.

  • È necessario avere un parametro di input del runbook denominato WebhookData, di tipo Object. Questo parametro può essere obbligatorio o facoltativo. L'avviso passa i risultati della ricerca al runbook usando il parametro di input.

      param  
       (  
        [Parameter (Mandatory=$true)]  
        [object] $WebhookData  
       )
    
  • È necessario avere codice per la conversione di WebhookData in un oggetto di PowerShell.

    $SearchResults = (ConvertFrom-Json $WebhookData.RequestBody).SearchResults.value

    $SearchResults è una matrice di oggetti, in cui ogni oggetto contiene i campi con i valori di un risultato della ricerca

Incoerenze di WebhookData tra l'opzione webhook e l'opzione runbook

  • Durante la configurazione di un avviso per chiamare un webhook, immettere un URL di webhook creato per un runbook, quindi fare clic sul pulsante Test del webhook. L'oggetto WebhookData risultante inviato al runbook non contiene .SearchResult o .SearchResults.

  • Se si salva l'avviso, l'avviso viene attivato e chiama il webhook e l'oggetto WebhookData inviato al runbook contiene .SearchResult.

  • Se si crea un avviso e lo si configura per chiamare un runbook, operazione che a sua volta crea un webhook, all'attivazione dell'avviso viene inviato un oggetto WebhookData al runbook che contiene .SearchResults.

Di conseguenza, nell'esempio di codice precedente è necessario ottenere .SearchResult se l'avviso chiama un webhook e .SearchResults se l'avviso chiama direttamente un runbook.

Procedura dettagliata di esempio

Il funzionamento di questa procedura viene mostrato tramite il runbook grafico di esempio seguente, che avvia un servizio di Windows.

Avviare il runbook grafico per il servizio di Windows

Il runbook ha un parametro di input di tipo Object denominato WebhookData e include i dati del webhook passati dall'avviso che contiene .SearchResults.

Parametri di input dei runbook

Per questo esempio, in Log Analytics sono stati creati due campi personalizzati, SvcDisplayName_CF e SvcState_CF, per estrarre il nome visualizzato del servizio e lo stato del servizio, ad esempio in esecuzione o arrestato, dall'evento scritto nel registro eventi di sistema. Viene quindi creata una regola di avviso con la query di ricerca seguente Type=Event SvcDisplayName_CF="Print Spooler" SvcState_CF="stopped", in modo che sia possibile rilevare l'arresto del servizio Spooler di stampa nel sistema Windows. Può trattarsi di un servizio qualsiasi, ma per questo esempio si fa riferimento a uno dei servizi preesistenti inclusi nel sistema operativo Windows. L'azione di avviso viene configurata per eseguire il runbook usato in questo esempio e per l'esecuzione nel ruolo di lavoro ibrido per runbook, abilitato nel sistema di destinazione.

L'attività di codice del runbook Get Service Name from LA converte la stringa in formato JSON in un tipo di oggetto e applica un filtro all'elemento SvcDisplayName_CF per estrarre il nome visualizzato del servizio di Windows e passarlo all'attività successiva, che verifica se il servizio è stato arrestato prima di provare a riavviarlo. SvcDisplayName_CF è un campo personalizzato creato in Log Analytics per illustrare questo esempio.

$SearchResults = (ConvertFrom-Json $WebhookData.RequestBody).SearchResults.value
$SearchResults.SvcDisplayName_CF  

Quando il servizio viene arrestato, la regola di avviso in Log Analytics rileva una corrispondenza, attiva il runbook e invia il contesto dell'avviso al runbook. Il runbook interviene per verificare se il servizio è stato arrestato e, in questo caso, prova a riavviarlo, quindi ne verifica il riavvio corretto e ne restituisce i risultati.

In alternativa, se l'account di Automazione è collegato all'area di lavoro di OMS, è possibile configurare la regola di avviso con un'azione di webhook per attivare il runbook, configurarlo per convertire la stringa in formato JSON e applicare il filtro a .SearchResult in base alle indicazioni precedenti.

Passaggi successivi