Acciones de webhook para reglas de alertas de registroWebhook actions for log alert rules

La alerta de registro admite la configuración de grupos de acciones de webhook.Log alert supports configuring webhook action groups. En este artículo, describiremos qué propiedades están disponibles y cómo configurar un webhook JSON personalizado.In this article, we'll describe what properties are available and how to configure a custom JSON webhook.

Nota

Actualmente, el webhook personalizado basado en JSON no se admite en la versión 2020-05-01-preview de la API.Custom JSON-based webhook is not currently supported in the API version 2020-05-01-preview

Nota

Se recomienda usar un esquema de alertas común para las integraciones de webhook.It is recommended you use common alert schema for your webhook integrations. Este esquema ofrece la ventaja de tener una sola carga de alertas, extensible y unificada, para todos los servicios de alerta de Azure Monitor.The common alert schema provides the advantage of having a single extensible and unified alert payload across all the alert services in Azure Monitor. En el caso de las reglas de alertas de registro que tienen definida una carga de JSON personalizada, habilitar el esquema común revierte el esquema de la carga al que se describe aquí.For log alerts rules that have a custom JSON payload defined, enabling the common schema reverts payload schema to the one described here. Las alertas con el esquema común habilitado tienen un límite de tamaño superior de 256 KB por alerta y la alerta mayor no incluirá los resultados de la búsqueda.Alerts with the common schema enabled have an upper size limit of 256 KB per alert, bigger alert will not include search results. Si no se incluyen los resultados de la búsqueda, debe usar LinkToFilteredSearchResultsAPI o LinkToSearchResultsAPI para acceder a ellos con la API de Log Analytics.When the search results aren't included, you should use the LinkToFilteredSearchResultsAPI or LinkToSearchResultsAPI to access query results via the Log Analytics API.

Propiedades de la carga de webhookWebhook payload properties

Las acciones de webhook permiten invocar una única solicitud HTTP POST.Webhook actions allow you to invoke a single HTTP POST request. El servicio al que se llama debe admitir webhooks y saber cómo usar la carga que reciba.The service that's called should support webhooks and know how to use the payload it receives.

Propiedades de acción de webhook predeterminadas y sus nombres de parámetros JSON personalizados:Default webhook action properties and their custom JSON parameter names:

ParámetroParameter VariableVariable DescripciónDescription
AlertRuleNameAlertRuleName #alertrulename#alertrulename Nombre de la regla de alerta.Name of the alert rule.
GravedadSeverity #severity#severity Gravedad establecida en la alerta de registros activada.Severity set for the fired log alert.
AlertThresholdOperatorAlertThresholdOperator ThresholdOperator#thresholdoperator Operador de umbral para la regla de alerta.Threshold operator for the alert rule.
AlertThresholdValueAlertThresholdValue #thresholdvalue#thresholdvalue Valor de umbral para la regla de alerta.Threshold value for the alert rule.
LinkToSearchResultsLinkToSearchResults #linktosearchresults#linktosearchresults Vínculo al portal de Analytics que devuelve los registros de la consulta que creó la alerta.Link to the Analytics portal that returns the records from the query that created the alert.
LinkToSearchResultsAPILinkToSearchResultsAPI #linktosearchresultsapi#linktosearchresultsapi Vínculo a la API de Analytics que devuelve los registros de la consulta que creó la alerta.Link to the Analytics API that returns the records from the query that created the alert.
LinkToFilteredSearchResultsUILinkToFilteredSearchResultsUI #linktofilteredsearchresultsui#linktofilteredsearchresultsui Vínculo al portal de Analytics que devuelve los registros de la consulta filtrada por las combinaciones de valores de dimensiones que crearon la alerta.Link to the Analytics portal that returns the records from the query filtered by dimensions value combinations that created the alert.
LinkToFilteredSearchResultsAPILinkToFilteredSearchResultsAPI #linktofilteredsearchresultsapi#linktofilteredsearchresultsapi Vínculo a la API de Analytics que devuelve los registros de la consulta filtrada por las combinaciones de valores de dimensiones que crearon la alerta.Link to the Analytics API that returns the records from the query filtered by dimensions value combinations that created the alert.
ResultCountResultCount #searchresultcount#searchresultcount Número de registros en los resultados de la búsqueda.Number of records in the search results.
SearchIntervalEndtimeUtcSearch Interval End time #searchintervalendtimeutc#searchintervalendtimeutc Hora de finalización de la consulta en hora UTC, con 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.
SearchIntervalInSecondsSearch Interval #searchinterval#searchinterval Período de tiempo para la regla de alertas, con formato HH:mm:ss.Time window for the alert rule, with the format HH:mm:ss.
SearchIntervalStartTimeUtcSearch Interval StartTime #searchintervalstarttimeutc#searchintervalstarttimeutc Hora de inicio de la consulta en hora UTC, con 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 Consulta de búsqueda de registros utilizada por la regla de alerta.Log search query used by the alert rule.
SearchResultsSearchResults "IncludeSearchResults": true"IncludeSearchResults": true Los registros devueltos por la consulta en forma de una tabla JSON, limitados a los primeros 1000 registros.Records returned by the query as a JSON table, limited to the first 1,000 records. Se agrega "IncludeSearchResults": true en una definición personalizada de webhook de JSON como una propiedad de nivel superior."IncludeSearchResults": true is added in a custom JSON webhook definition as a top-level property.
DimensionesDimensions "IncludeDimensions": true"IncludeDimensions": true Combinaciones de valores de dimensiones que desencadenaron esa alerta como una sección JSON.Dimensions value combinations that triggered that alert as a JSON section. Se agrega "IncludeDimensions": true en una definición personalizada de webhook de JSON como una propiedad de nivel superior."IncludeDimensions": true is added in a custom JSON webhook definition as a top-level property.
AlertTypeAlert Type #alerttype#alerttype El tipo de regla de alertas de registro configurada, bien como Unidades métricas o como Número de resultados.The type of log alert rule configured as Metric measurement or Number of results.
WorkspaceIDWorkspaceID #workspaceid#workspaceid Identificador del área de trabajo de Log Analytics.ID of your Log Analytics workspace.
Identificador de la aplicaciónApplication ID #applicationid#applicationid Identificador de la aplicación Application Insights.ID of your Application Insights app.
Subscription IDSubscription ID #subscriptionid#subscriptionid Identificador de la suscripción a Azure usada.ID of your Azure subscription used.

Definición de carga de webhook personalizadaCustom webhook payload definition

Puede usar la opción Incluir la carga personalizada de JSON para webhook para obtener una carga de JSON personalizada mediante los parámetros anteriores.You can use the Include custom JSON payload for webhook to get a custom JSON payload using the parameters above. También puede generar propiedades adicionales.You can also generate additional properties. Por ejemplo, podría especificar la siguiente carga personalizada que incluye un único parámetro denominado text.For example, you might specify the following custom payload that includes a single parameter called text. El servicio al que llama este webhook espera este parámetro:The service that this webhook calls expects this parameter:


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

Esta carga de ejemplo se resuelve en algo similar a lo siguiente al enviarse al 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 ."
    }

Las variables de un webhook personalizado se deben especificar dentro de un contenedor JSON.Variables in a custom webhook must be specified within a JSON enclosure. Por ejemplo, si se hace referencia a "#searchresultcount" en el ejemplo de webhook anterior, se generará la salida en función de los resultados de la alerta.For example, referencing "#searchresultcount" in the above webhook example will output based on the alert results.

Para incluir los resultados de la búsqueda, agregue IncludeSearchResults como propiedad de nivel superior en la carga JSON personalizada.To include search results, add IncludeSearchResults as a top-level property in the custom JSON. Los resultados de la búsqueda se incluyen como una estructura JSON, por lo que no se puede hacer referencia a ellos en campos definidos personalizados.Search results are included as a JSON structure, so results can't be referenced in custom defined fields.

Nota

El botón View webhook (Ver webhook) situado junto a la opción Incluir la carga personalizada de JSON para webhook muestra la vista previa de lo que se proporcionó.The View Webhook button next to the Include custom JSON payload for webhook option displays preview of what was provided. No contiene datos reales, pero es representativo del esquema JSON que se usará.It doesn't contain actual data, but is representative of the JSON schema that will be used.

Cargas de ejemploSample payloads

En esta sección se muestran cargas de ejemplo para los webhooks de alertas de registro.This section shows sample payloads for webhooks for log alerts. Estas cargas incluyen ejemplos en los que la carga es estándar y otros en los que es personalizada.The sample payloads include examples when the payload is standard and when it's custom.

Alerta de registro para Log AnalyticsLog alert for Log Analytics

La carga de ejemplo siguiente corresponde a una acción de webhook estándar que se usa para las alertas basadas en Log Analytics:The following sample payload is for a standard webhook action that's used for alerts based on Log Analytics:

Nota

El valor del campo "Gravedad" cambia si ha cambiado a la versión scheduledQueryRules API actual de Alert API de Log Analytics heredada.The "Severity" field value changes if you've switched to the current scheduledQueryRules API from the legacy Log Analytics Alert API.

{
    "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",
    "LinkToFilteredSearchResultsUI": "https://portal.azure.com/#Analyticsblade/search/index?_timeInterval.intervalEnd=2018-03-26T09%3a10%3a40.0000000Z&_timeInterval.intervalDuration=3600&q=Usage",
    "LinkToSearchResultsAPI": "https://api.loganalytics.io/v1/workspaces/workspaceID/query?query=Heartbeat&timespan=2020-05-07T18%3a11%3a51.0000000Z%2f2020-05-07T18%3a16%3a51.0000000Z",
    "LinkToFilteredSearchResultsAPI": "https://api.loganalytics.io/v1/workspaces/workspaceID/query?query=Heartbeat&timespan=2020-05-07T18%3a11%3a51.0000000Z%2f2020-05-07T18%3a16%3a51.0000000Z",
    "Description": "log alert rule",
    "Severity": "Warning",
    "AffectedConfigurationItems": [
        "INC-Gen2Alert"
    ],
    "Dimensions": [
        {
            "name": "Computer",
            "value": "INC-Gen2Alert"
        }
    ],
    "SearchResult": {
        "tables": [
            {
                "name": "PrimaryResult",
                "columns": [
                    {
                        "name": "$table",
                        "type": "string"
                    },
                    {
                        "name": "Computer",
                        "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"
}

Alerta de registro para Application InsightsLog alert for Application Insights

La carga de ejemplo siguiente corresponde a un webhook estándar que se usa para alertas de registro basadas en recursos de Application Insights:The following sample payload is for a standard webhook when it's used for log alerts based on Application Insights resources:

{
    "schemaId": "Microsoft.Insights/LogAlert",
    "data": {
        "SubscriptionId": "12345a-1234b-123c-123d-12345678e",
        "AlertRuleName": "AcmeRule",
        "SearchQuery": "requests | where resultCode == \"500\" | summarize AggregatedValue = Count by bin(Timestamp, 5m), IP",
        "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",
        "LinkToFilteredSearchResultsUI": "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",
        "LinkToSearchResultsAPI": "https://api.applicationinsights.io/v1/apps/0MyAppId0/metrics/requests/count",
        "LinkToFilteredSearchResultsAPI": "https://api.applicationinsights.io/v1/apps/0MyAppId0/metrics/requests/count",
        "Description": null,
        "Severity": "3",
        "Dimensions": [
            {
                "name": "IP",
                "value": "1.1.1.1"
            }
        ],
        "SearchResult": {
            "tables": [
                {
                    "name": "PrimaryResult",
                    "columns": [
                        {
                            "name": "$table",
                            "type": "string"
                        },
                        {
                            "name": "Id",
                            "type": "string"
                        },
                        {
                            "name": "Timestamp",
                            "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": "Metric measurement"
    }
}

Alerta de registro para otros registros de recursos (a partir de la versión 2020-05-01-preview de la API)Log alert for other resources logs (from API version 2020-05-01-preview)

Nota

Actualmente no hay cargos adicionales por la versión 2020-05-01-preview de la API y las alertas de registro orientadas a los recursos.There are currently no additional charges for the API version 2020-05-01-preview and resource centric log alerts. Los precios de las características en versión preliminar se anunciarán en el futuro y se avisará antes del inicio de la facturación.Pricing for features that are in preview will be announced in the future and a notice provided prior to start of billing. Si decide seguir usando la nueva versión de la API y las alertas de registro orientadas a los recursos después del período de aviso, se le facturará según la tarifa aplicable.Should you choose to continue using new API version and resource centric log alerts after the notice period, you will be billed at the applicable rate.

La carga de ejemplo siguiente corresponde a un webhook estándar cuando se usa para las alertas de registro basadas en otros registros de recursos (excepto las áreas de trabajo y Application Insights):The following sample payload is for a standard webhook when it's used for log alerts based on other resources logs (excluding workspaces and Application Insights):

{
    "schemaId": "azureMonitorCommonAlertSchema",
    "data": {
        "essentials": {
            "alertId": "/subscriptions/12345a-1234b-123c-123d-12345678e/providers/Microsoft.AlertsManagement/alerts/12345a-1234b-123c-123d-12345678e",
            "alertRule": "AcmeRule",
            "severity": "Sev4",
            "signalType": "Log",
            "monitorCondition": "Fired",
            "monitoringService": "Log Alerts V2",
            "alertTargetIDs": [
                "/subscriptions/12345a-1234b-123c-123d-12345678e/resourcegroups/ai-engineering/providers/microsoft.compute/virtualmachines/testvm"
            ],
            "originAlertId": "123c123d-1a23-1bf3-ba1d-dd1234ff5a67",
            "firedDateTime": "2020-07-09T14:04:49.99645Z",
            "description": "log alert rule V2",
            "essentialsVersion": "1.0",
            "alertContextVersion": "1.0"
        },
        "alertContext": {
            "properties": null,
            "conditionType": "LogQueryCriteria",
            "condition": {
                "windowSize": "PT10M",
                "allOf": [
                    {
                        "searchQuery": "Heartbeat",
                        "metricMeasure": null,
                        "targetResourceTypes": "['Microsoft.Compute/virtualMachines']",
                        "operator": "LowerThan",
                        "threshold": "1",
                        "timeAggregation": "Count",
                        "dimensions": [
                            {
                                "name": "ResourceId",
                                "value": "/subscriptions/12345a-1234b-123c-123d-12345678e/resourceGroups/TEST/providers/Microsoft.Compute/virtualMachines/testvm"
                            }
                        ],
                        "metricValue": 0.0,
                        "failingPeriods": {
                            "numberOfEvaluationPeriods": 1,
                            "minFailingPeriodsToAlert": 1
                        },
                        "linkToSearchResultsUI": "https://portal.azure.com#@12f345bf-12f3-12af-12ab-1d2cd345db67/blade/Microsoft_Azure_Monitoring_Logs/LogsBlade/source/Alerts.EmailLinks/scope/%7B%22resources%22%3A%5B%7B%22resourceId%22%3A%22%2Fsubscriptions%2F12345a-1234b-123c-123d-12345678e%2FresourceGroups%2FTEST%2Fproviders%2FMicrosoft.Compute%2FvirtualMachines%2Ftestvm%22%7D%5D%7D/q/eJzzSE0sKklKTSypUSjPSC1KVQjJzE11T81LLUosSU1RSEotKU9NzdNIAfJKgDIaRgZGBroG5roGliGGxlYmJlbGJnoGEKCpp4dDmSmKMk0A/prettify/1/timespan/2020-07-07T13%3a54%3a34.0000000Z%2f2020-07-09T13%3a54%3a34.0000000Z",
                        "linkToFilteredSearchResultsUI": "https://portal.azure.com#@12f345bf-12f3-12af-12ab-1d2cd345db67/blade/Microsoft_Azure_Monitoring_Logs/LogsBlade/source/Alerts.EmailLinks/scope/%7B%22resources%22%3A%5B%7B%22resourceId%22%3A%22%2Fsubscriptions%2F12345a-1234b-123c-123d-12345678e%2FresourceGroups%2FTEST%2Fproviders%2FMicrosoft.Compute%2FvirtualMachines%2Ftestvm%22%7D%5D%7D/q/eJzzSE0sKklKTSypUSjPSC1KVQjJzE11T81LLUosSU1RSEotKU9NzdNIAfJKgDIaRgZGBroG5roGliGGxlYmJlbGJnoGEKCpp4dDmSmKMk0A/prettify/1/timespan/2020-07-07T13%3a54%3a34.0000000Z%2f2020-07-09T13%3a54%3a34.0000000Z",
                        "linkToSearchResultsAPI": "https://api.loganalytics.io/v1/subscriptions/12345a-1234b-123c-123d-12345678e/resourceGroups/TEST/providers/Microsoft.Compute/virtualMachines/testvm/query?query=Heartbeat%7C%20where%20TimeGenerated%20between%28datetime%282020-07-09T13%3A44%3A34.0000000%29..datetime%282020-07-09T13%3A54%3A34.0000000%29%29&timespan=2020-07-07T13%3a54%3a34.0000000Z%2f2020-07-09T13%3a54%3a34.0000000Z",
                        "linkToFilteredSearchResultsAPI": "https://api.loganalytics.io/v1/subscriptions/12345a-1234b-123c-123d-12345678e/resourceGroups/TEST/providers/Microsoft.Compute/virtualMachines/testvm/query?query=Heartbeat%7C%20where%20TimeGenerated%20between%28datetime%282020-07-09T13%3A44%3A34.0000000%29..datetime%282020-07-09T13%3A54%3A34.0000000%29%29&timespan=2020-07-07T13%3a54%3a34.0000000Z%2f2020-07-09T13%3a54%3a34.0000000Z"
                    }
                ],
                "windowStartTime": "2020-07-07T13:54:34Z",
                "windowEndTime": "2020-07-09T13:54:34Z"
            }
        }
    }
}

Alerta de registro con una carga de JSON personalizadaLog alert with a custom JSON payload

Por ejemplo, para crear una carga personalizada que solo incluya el nombre de la alerta y los resultados de la búsqueda, use esta configuración:For example, to create a custom payload that includes just the alert name and the search results, use this configuration:

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

A continuación se muestra una carga de ejemplo que corresponde a una acción de webhook personalizada para cualquier alerta de registro: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"]
                        ]
                    }
                ]
        }
    }

Pasos siguientesNext steps