Chiamata di un runbook di un Automazione di Azure da un avviso di OMS Log AnalyticsCalling an Azure Automation runbook from an OMS Log Analytics alert

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.If an alert is configured in Log Analytics to create an alert record when results match criteria, such as a prolonged spike in processor utilization or an application process critical to the functionality of a business application fails and writes a corresponding event in the Windows event log, that alert can automatically run an Automation runbook in an attempt to auto-remediate the issue.

Sono disponibili due opzioni per chiamare un runbook durante la configurazione di un avviso:There are two options to call a runbook in the alert configuration, such as:

  1. Uso di un webhook.Using a Webhook.

    • Questa è l'unica opzione disponibile se l'area di lavoro OMS non è collegata a un account di Automazione.It is the only option available if your OMS workspace is not linked to an Automation account.
    • Se si ha già un account di Automazione collegato a un'area di lavoro di OMS, questa opzione è disponibile.If you already have an Automation account linked to an OMS workspace, this option is still available.
  2. Selezione diretta di un runbook.Select a runbook directly.

    • Questa opzione è disponibile soloThis option is available only
    • se l'area di lavoro OMS è collegata a un account di Automazione.the OMS workspace is linked to an Automation account.

Chiamata di un runbook mediante un webhookCalling a runbook using a webhook

Un webhook consente di avviare un runbook specifico in Automazione di Azure tramite una singola richiesta HTTP.A webhook allows you to start a particular runbook in Azure Automation through a single HTTP request. 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.Before configuring the Log Analytics alert to call the runbook using a webhook as an alert action, you need to first create a webhook for the runbook that is called using this method. 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.Perform the steps in the create a webhook article, and remember to record the webhook URL so you can reference it while configuring the alert rule.

Chiamata diretta di un runbookCalling a runbook directly

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.If you have the Automation & Control offering installed and configured in your OMS workspace, while configuring the Runbook actions option for the alert, you can view all runbooks from the Select a runbook drop-down list and select the specific runbook you want to run in response to the alert. Il runbook selezionato può essere eseguito in un'area di lavoro nel cloud di Azure o in un ruolo di lavoro ibrido per runbook.The selected runbook can run in a workspace in the Azure cloud or on a hybrid runbook worker. Quando l'avviso viene creato usando l'opzione relativa al runbook, viene creato un webhook per il runbook.After the alert is created using the runbook option, a webhook is created for the runbook. Per visualizzare il webhook, passare all'account di Automazione e quindi al pannello del webhook per il runbook selezionato.You can see the webhook if you go to the Automation account and navigate to the webhook pane of the selected runbook. Se si elimina l'avviso, il webhook non viene eliminato, ma l'utente può eliminarlo manualmente.If you delete the alert, the webhook is not deleted, but the user can delete the webhook manually. 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.It is not a problem if the webhook is not deleted, it is just an orphaned item that you eventually need to delete to maintain an organized Automation account.

Caratteristiche di un runbook (per entrambe le opzioni)Characteristics of a runbook (for both options)

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.Both methods for calling the runbook from the Log Analytics alert have different behavior characteristics that need to be understood before you configure your alert rules.

  • È necessario avere un parametro di input del runbook denominato WebhookData, di tipo Object.You must have a runbook input parameter called WebhookData that is Object type. Questo parametro può essere obbligatorio o facoltativo.It can be mandatory or optional. L'avviso passa i risultati della ricerca al runbook usando il parametro di input.The alert passes the search results to the runbook using this input parameter.

      param  
       (  
        [Parameter (Mandatory=$true)]  
        [object] $WebhookData  
       )
    
  • È necessario avere codice per la conversione di WebhookData in un oggetto di PowerShell.You must have code to convert the WebhookData to a PowerShell object.

    $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$SearchResults is an array of objects; each object contains the fields with values from one search result

Incoerenze di WebhookData tra l'opzione webhook e l'opzione runbookWebhookData inconsistencies between the webhook option and runbook option

  • 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.When configuring an alert to call a Webhook, enter a webhook URL you created for a runbook, and click the Test Webhook button. L'oggetto WebhookData risultante inviato al runbook non contiene .SearchResult o .SearchResults.The resulting WebhookData sent to the runbook does not contain either .SearchResult or .SearchResults.

  • Se si salva l'avviso, l'avviso viene attivato e chiama il webhook e l'oggetto WebhookData inviato al runbook contiene .SearchResult.After you save that alert, the alert triggers and calls the webhook and the WebhookData sent to the runbook contains .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.If you create an alert, and configure it to call a runbook (which also creates a webhook), when the alert triggers it sends WebhookData to the runbook containing .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.Thus in the code example above, you need to get .SearchResult if the alert calls a webhook, and get .SearchResults if the alert calls a runbook directly.

Procedura dettagliata di esempioExample walkthrough

Il funzionamento di questa procedura viene mostrato tramite il runbook grafico di esempio seguente, che avvia un servizio di Windows.We demonstrate how this works by using the following example graphical runbook, which starts a Windows service.

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.The runbook has one input parameter of type Object that is called WebhookData and includes the webhook data passed from the alert containing .SearchResults.

Parametri di input dei runbookRunbook input parameters

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.For this example, in Log Analytics we created two custom fields, SvcDisplayName_CF and SvcState_CF, to extract the service display name and the state of the service (i.e. running or stopped) from the event written to the System event log. 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.We then create an alert rule with the following search query: Type=Event SvcDisplayName_CF="Print Spooler" SvcState_CF="stopped" so that we can detect when the Print Spooler service is stopped on the Windows system. Può trattarsi di un servizio qualsiasi, ma per questo esempio si fa riferimento a uno dei servizi preesistenti inclusi nel sistema operativo Windows.It can be any service of interest, but for this example we are referencing one of the pre-existing services that are included with the Windows OS. 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.The alert action is configured to execute our runbook used in this example and run on the Hybrid Runbook Worker, which is enabled on the target system.

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.The runbook code activity Get Service Name from LA converts the JSON-formatted string into an object type and filter on the item SvcDisplayName_CF to extract the display name of the Windows service and pass this onto the next activity which verifies the service is stopped before attempting to restart it. SvcDisplayName_CF è un campo personalizzato creato in Log Analytics per illustrare questo esempio.SvcDisplayName_CF is a custom field created in Log Analytics to demonstrate this example.

$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.When the service stops, the alert rule in Log Analytics detects a match and trigger the runbook and send the alert context to the 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.The runbook takes action to verify the service is stopped, and if so attempt to restart the service and verify it started correctly and output the results.

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.Alternatively if you don't have your Automation account linked to your OMS workspace, you would configure the alert rule with a webhook action to trigger the runbook and configure the runbook to convert the JSON-formatted string and filter on .SearchResult following the guidance mentioned earlier.

Passaggi successiviNext steps