Ações de webhook para regras de alerta do logWebhook actions for log alert rules

Quando um alerta de log é criado no Azure, você tem a opção de configurá-lo usando grupos de ação para executar uma ou mais ações.When a log alert is created in Azure, you have the option of configuring it by using action groups to perform one or more actions. Este artigo descreve as diferentes ações de webhook que estão disponíveis e mostra como configurar um webhook personalizado baseado em JSON.This article describes the different webhook actions that are available and shows how to configure a custom JSON-based webhook.

Observação

Você também pode usar o esquema de alerta comum para suas integrações de webhook.You also can use the common alert schema for your webhook integrations. O esquema de alerta comum fornece a vantagem de ter uma única carga de alerta extensível e unificada em todos os serviços de alerta no Azure Monitor. Observe que o esquema de alerta comum não Honour a opção JSON personalizada para alertas de log.The common alert schema provides the advantage of having a single extensible and unified alert payload across all the alert services in Azure Monitor.Please note that the common alert schema does not honour the custom JSON option for log alerts. Ele adiará a carga do esquema de alerta comum se ela for selecionada, independentemente da personalização que você tenha feito no nível da regra de alerta.It defers to the common alert schema payload if that is selected irrespective of the customization you might have done at the alert rule level. Saiba mais sobre as definições de esquema de alerta comuns.Learn about the common alert schema definitions.

Ações de WebhookWebhook actions

Com as ações de webhook, você pode invocar um processo externo por meio de uma única solicitação HTTP POST.With webhook actions, you can invoke an external process through a single HTTP POST request. O serviço chamado deve dar suporte a WebHooks e determinar como usar qualquer carga que receber.The service that's called should support webhooks and determine how to use any payload it receives.

As ações de webhook exigem as propriedades indicadas na tabela a seguir.Webhook actions require the properties in the following table.

PropriedadeProperty DescriçãoDescription
URL de WebhookWebhook URL A URL do webhook.The URL of the webhook.
Carga JSON personalizadaCustom JSON payload A carga personalizada a ser enviada com o webhook quando essa opção é escolhida durante a criação do alerta.The custom payload to send with the webhook when this option is chosen during alert creation. Para obter mais informações, consulte Manage log Alerts.For more information, see Manage log alerts.

Observação

O botão Exibir webhook junto com a opção incluir conteúdo JSON personalizado para o webhook para o alerta de log exibe o conteúdo do webhook de exemplo para a personalização fornecida.The View Webhook button alongside the Include custom JSON payload for webhook option for the log alert displays the sample webhook payload for the customization that was provided. Ele não contém dados reais, mas representa o esquema JSON que é usado para alertas de log.It doesn't contain actual data but is representative of the JSON schema that's used for log alerts.

Os WebHooks incluem uma URL e uma carga formatada em JSON que os dados enviam para o serviço externo.Webhooks include a URL and a payload formatted in JSON that the data sent to the external service. Por padrão, a carga inclui os valores na tabela a seguir.By default, the payload includes the values in the following table. Você pode optar por substituir essa carga por uma personalizado de sua preferência.You can choose to replace this payload with a custom one of your own. Nesse caso, use as variáveis na tabela para cada um dos parâmetros para incluir seus valores em sua carga personalizada.In that case, use the variables in the table for each of the parameters to include their values in your custom payload.

ParâmetroParameter VariávelVariable DescriçãoDescription
AlertRuleNameAlertRuleName #alertrulename#alertrulename Nome da regra de alerta.Name of the alert rule.
SeveridadeSeverity #severity#severity Severidade definida para o alerta do log disparado.Severity set for the fired log alert.
AlertThresholdOperatorAlertThresholdOperator #thresholdoperator#thresholdoperator Operador de limite para a regra de alerta, que usa maior ou menor que.Threshold operator for the alert rule, which uses greater than or less than.
AlertThresholdValueAlertThresholdValue #thresholdvalue#thresholdvalue O valor de limite para a regra de alerta.Threshold value for the alert rule.
LinkToSearchResultsLinkToSearchResults #linktosearchresults#linktosearchresults Link para o portal de análise que retorna os registros da consulta que criou o alerta.Link to the Analytics portal that returns the records from the query that created the alert.
ResultCountResultCount #searchresultcount#searchresultcount Número de registros nos resultados da pesquisa.Number of records in the search results.
Hora de término do intervalo de pesquisaSearch Interval End time #searchintervalendtimeutc#searchintervalendtimeutc Hora de término da consulta em UTC, com o formato mm/dd/aaaa HH: mm: ss AM/PM.End time for the query in UTC, with the format mm/dd/yyyy HH:mm:ss AM/PM.
Intervalo de pesquisaSearch Interval #searchinterval#searchinterval Janela de tempo para a regra de alerta, com o formato HH: mm: SS.Time window for the alert rule, with the format HH:mm:ss.
Iniciartime do intervalo de pesquisaSearch Interval StartTime #searchintervalstarttimeutc#searchintervalstarttimeutc Hora de início da consulta em UTC, com o formato mm/dd/aaaa HH: mm: ss AM/PM.Start time for the query in UTC, with the format mm/dd/yyyy HH:mm:ss AM/PM.
SearchQuerySearchQuery #searchquery#searchquery A consulta da pesquisa de log usada pela regra de alerta.Log search query used by the alert rule.
SearchResultsSearchResults "IncludeSearchResults": true"IncludeSearchResults": true Registros retornados pela consulta como uma tabela JSON, limitados aos primeiros 1.000 registros, se "IncludeSearchResults": true for adicionado em uma definição de webhook JSON personalizada como uma propriedade de nível superior.Records returned by the query as a JSON table, limited to the first 1,000 records, if "IncludeSearchResults": true is added in a custom JSON webhook definition as a top-level property.
Tipo de alertaAlert Type #alerttype#alerttype O tipo de regra de alerta de log configurada como medida métrica ou número de resultados.The type of log alert rule configured as Metric measurement or Number of results.
WorkspaceIDWorkspaceID #workspaceid#workspaceid ID do seu espaço de trabalho do Log Analytics.ID of your Log Analytics workspace.
ID do aplicativoApplication ID #applicationid#applicationid ID do seu aplicativo Application Insights.ID of your Application Insights app.
ID da assinaturaSubscription ID #subscriptionid#subscriptionid ID da sua assinatura do Azure usada.ID of your Azure subscription used.

Observação

LinkToSearchResults passa parâmetros como SearchQuery, StartTime de intervalo de pesquisae hora de término do intervalo de pesquisa na URL para a Portal do Azure para exibição na seção de análise.LinkToSearchResults passes parameters like SearchQuery, Search Interval StartTime, and Search Interval End time in the URL to the Azure portal for viewing in the Analytics section. O portal do Azure tem um limite de tamanho de URI de aproximadamente 2.000 caracteres.The Azure portal has a URI size limit of approximately 2,000 characters. O portal não abrirá links fornecidos em alertas se os valores de parâmetro excederem o limite.The portal will not open links provided in alerts if the parameter values exceed the limit. Você pode inserir manualmente os detalhes para exibir os resultados no portal de análise.You can manually input details to view results in the Analytics portal. Ou, você pode usar a API REST do Application insights Analytics ou a api REST do log Analytics para recuperar os resultados programaticamente.Or, you can use the Application Insights Analytics REST API or the Log Analytics REST API to retrieve results programmatically.

Por exemplo, você pode especificar a seguinte carga personalizada que inclui um único parâmetro chamado text.For example, you might specify the following custom payload that includes a single parameter called text. O serviço que esse webhook chama espera esse parâmetro.The service that this webhook calls expects this parameter.


    {
        "text":"#alertrulename fired with #searchresultcount over threshold of #thresholdvalue."
    }

Esse conteúdo de exemplo é resolvido para algo semelhante ao seguinte quando é enviado para o webhook:This example payload resolves to something like the following when it's sent to the webhook:

    {
        "text":"My Alert Rule fired with 18 records over threshold of 10 ."
    }

Como todas as variáveis em um webhook personalizado devem ser especificadas dentro de um compartimento JSON, como "#searchinterval", o webhook resultante também tem dados variáveis dentro de compartimentos, como "00:05:00".Because all variables in a custom webhook must be specified within a JSON enclosure, like "#searchinterval," the resultant webhook also has variable data inside enclosures, like "00:05:00."

Para incluir os resultados da pesquisa em uma carga personalizada, verifique se IncludeSearchResults está definido como uma propriedade de nível superior na carga JSON.To include search results in a custom payload, ensure that IncludeSearchResults is set as a top-level property in the JSON payload.

Cargas de exemploSample payloads

Esta seção mostra as cargas de exemplo para WebHooks para alertas de log.This section shows sample payloads for webhooks for log alerts. Os conteúdos de exemplo incluem exemplos quando a carga é padrão e quando é personalizada.The sample payloads include examples when the payload is standard and when it's custom.

Webhook padrão para alertas de logStandard webhook for log alerts

Ambos os exemplos têm uma carga fictícia com apenas duas colunas e duas linhas.Both of these examples have a dummy payload with only two columns and two rows.

Alerta de log para Log AnalyticsLog alert for Log Analytics

A seguinte carga de exemplo é para uma ação de webhook padrão sem uma opção JSON personalizada que é usada para alertas com base em log Analytics:The following sample payload is for a standard webhook action without a custom JSON option that's used for alerts based on Log Analytics:

{
    "SubscriptionId":"12345a-1234b-123c-123d-12345678e",
    "AlertRuleName":"AcmeRule",
    "SearchQuery":"Perf | where ObjectName == \"Processor\" and CounterName == \"% Processor Time\" | summarize AggregatedValue = avg(CounterValue) by bin(TimeGenerated, 5m), Computer",
    "SearchIntervalStartTimeUtc": "2018-03-26T08:10:40Z",
    "SearchIntervalEndtimeUtc": "2018-03-26T09:10:40Z",
    "AlertThresholdOperator": "Greater Than",
    "AlertThresholdValue": 0,
    "ResultCount": 2,
    "SearchIntervalInSeconds": 3600,
    "LinkToSearchResults": "https://portal.azure.com/#Analyticsblade/search/index?_timeInterval.intervalEnd=2018-03-26T09%3a10%3a40.0000000Z&_timeInterval.intervalDuration=3600&q=Usage",
    "Description": "log alert rule",
    "Severity": "Warning",
    "SearchResult":
        {
        "tables":[
                    {"name":"PrimaryResult","columns":
                        [
                        {"name":"$table","type":"string"},
                        {"name":"Id","type":"string"},
                        {"name":"TimeGenerated","type":"datetime"}
                        ],
                    "rows":
                        [
                            ["Fabrikam","33446677a","2018-02-02T15:03:12.18Z"],
                            ["Contoso","33445566b","2018-02-02T15:16:53.932Z"]
                        ]
                    }
                ]
        },
    "WorkspaceId":"12345a-1234b-123c-123d-12345678e",
    "AlertType": "Metric measurement"
 }

Observação

O valor do campo "Severity" poderá ser alterado se você tiver alternado sua preferência de API para alertas de log em log Analytics.The "Severity" field value might change if you've switched your API preference for log alerts on Log Analytics.

Alerta de log para Application InsightsLog alert for Application Insights

O seguinte conteúdo de exemplo é para um webhook padrão sem uma opção JSON personalizada quando é usado para alertas de log com base em Application insights:The following sample payload is for a standard webhook without a custom JSON option when it's used for log alerts based on Application Insights:

{
    "schemaId":"Microsoft.Insights/LogAlert","data":
    { 
    "SubscriptionId":"12345a-1234b-123c-123d-12345678e",
    "AlertRuleName":"AcmeRule",
    "SearchQuery":"requests | where resultCode == \"500\"",
    "SearchIntervalStartTimeUtc": "2018-03-26T08:10:40Z",
    "SearchIntervalEndtimeUtc": "2018-03-26T09:10:40Z",
    "AlertThresholdOperator": "Greater Than",
    "AlertThresholdValue": 0,
    "ResultCount": 2,
    "SearchIntervalInSeconds": 3600,
    "LinkToSearchResults": "https://portal.azure.com/AnalyticsBlade/subscriptions/12345a-1234b-123c-123d-12345678e/?query=search+*+&timeInterval.intervalEnd=2018-03-26T09%3a10%3a40.0000000Z&_timeInterval.intervalDuration=3600&q=Usage",
    "Description": null,
    "Severity": "3",
    "SearchResult":
        {
        "tables":[
                    {"name":"PrimaryResult","columns":
                        [
                        {"name":"$table","type":"string"},
                        {"name":"Id","type":"string"},
                        {"name":"TimeGenerated","type":"datetime"}
                        ],
                    "rows":
                        [
                            ["Fabrikam","33446677a","2018-02-02T15:03:12.18Z"],
                            ["Contoso","33445566b","2018-02-02T15:16:53.932Z"]
                        ]
                    }
                ]
        },
    "ApplicationId": "123123f0-01d3-12ab-123f-abc1ab01c0a1",
    "AlertType": "Number of results"
    }
}

Alerta de log com carga JSON personalizadaLog alert with custom JSON payload

Por exemplo, para criar uma carga personalizada que inclua apenas o nome do alerta e os resultados da pesquisa, você pode usar o seguinte:For example, to create a custom payload that includes just the alert name and the search results, you can use the following:

    {
       "alertname":"#alertrulename",
       "IncludeSearchResults":true
    }

A seguinte carga de exemplo é para uma ação personalizada de webhook para qualquer alerta de log:The following sample payload is for a custom webhook action for any log alert:

    {
    "alertname":"AcmeRule","IncludeSearchResults":true,
    "SearchResults":
        {
        "tables":[
                    {"name":"PrimaryResult","columns":
                        [
                        {"name":"$table","type":"string"},
                        {"name":"Id","type":"string"},
                        {"name":"TimeGenerated","type":"datetime"}
                        ],
                    "rows":
                        [
                            ["Fabrikam","33446677a","2018-02-02T15:03:12.18Z"],
                            ["Contoso","33445566b","2018-02-02T15:16:53.932Z"]
                        ]
                    }
                ]
        }
    }

Próximas etapasNext steps