Payload di esempio per gli avvisi di ricerca log con azioni webhook

È possibile usare azioni webhook in una regola di avviso di ricerca log per richiamare una singola richiesta HTTP POST. In questo articolo vengono descritte le proprietà disponibili quando si configurano i gruppi di azioni per l'uso dei webhook. Il servizio chiamato deve supportare i webhook e sapere come usare il payload ricevuto.

È consigliabile usare lo schema di avviso comune per le integrazioni di webhook. Lo schema di avviso comune offre il vantaggio di avere un singolo payload di avviso estendibile e unificato in tutti i servizi di avviso in Monitoraggio di Azure.

Per le regole di avviso di ricerca log con un payload JSON personalizzato definito, l'abilitazione dello schema di avviso comune ripristina lo schema del payload a quello descritto in Schema di avviso comune. Se si vuole definire un payload JSON personalizzato, il webhook non può usare lo schema di avviso comune.

Gli avvisi con lo schema comune abilitato hanno un limite di dimensione superiore di 256 kB per avviso. Un avviso più grande non include i risultati della ricerca. Quando i risultati della ricerca non sono inclusi, usare LinkToFilteredSearchResultsAPI o LinkToSearchResultsAPI accedere ai risultati delle query tramite l'API Log Analytics.

I payload di esempio includono esempi quando il payload è standard e quando è personalizzato.

Avviso di ricerca log per tutti i log delle risorse (dalla versione 2021-08-01dell'API )

Il payload di esempio seguente è relativo a un webhook standard quando viene usato per gli avvisi di ricerca log in base ai log dei log:

{
    "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": {
              "name1": "value1",
              "name2": "value2"
            },
            "conditionType": "LogQueryCriteria",
            "condition": {
                "windowSize": "PT10M",
                "allOf": [
                    {
                        "searchQuery": "Heartbeat",
                        "metricMeasureColumn": "CounterValue",
                        "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"
            }
        }
    }
}

Avviso di ricerca log per Log Analytics (fino alla versione 2018-04-16dell'API )

Il payload di esempio seguente è relativo a un'azione webhook standard usata per gli avvisi basati su Log Analytics:

Nota

Il valore del "Severity" campo cambia se si è passati all'API scheduledQueryRules corrente dall'APIdi avviso di Log Analytics legacy.

{
    "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"
}

Avviso di ricerca log per Application Insights (fino alla versione 2018-04-16dell'API )

Il payload di esempio seguente è relativo a un webhook standard quando viene usato per gli avvisi di ricerca log in base alle risorse di Application Insights:

{
    "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"
    }
}

Avviso di ricerca log con un payload JSON personalizzato (fino alla versione 2018-04-16dell'API )

Nota

Un webhook basato su JSON personalizzato non è supportato dalla versione 2021-08-01dell'API .

Nella tabella seguente sono elencate le proprietà predefinite dell'azione webhook e i relativi nomi di parametri JSON personalizzati.

Parametro Variabile Descrizione
AlertRuleName #alertrulename Nome della regola di avviso.
Severity #severity Gravità impostata per l'avviso di ricerca log attivato.
AlertThresholdOperator #thresholdoperator Operatore di soglia per la regola di avviso.
AlertThresholdValue #thresholdvalue Valore di soglia per la regola di avviso.
LinkToSearchResults #linktosearchresults Collegamento al portale di Analisi che restituisce i record dalla query che ha creato l'avviso.
LinkToSearchResultsAPI #linktosearchresultsapi Collegamento all'API di analisi che restituisce i record dalla query che ha creato l'avviso.
LinkToFilteredSearchResultsUI #linktofilteredsearchresultsui Collegamento al portale di Analisi che restituisce i record della query filtrata in base alle combinazioni di valori delle dimensioni che hanno creato l'avviso.
LinkToFilteredSearchResultsAPI #linktofilteredsearchresultsapi Collegamento all'API di analisi che restituisce i record della query filtrata in base alle combinazioni di valori delle dimensioni che hanno creato l'avviso.
ResultCount #searchresultcount Numero di record nei risultati della ricerca.
Search Interval End time #searchintervalendtimeutc Ora di fine per la query in formato UTC, con formato mm/gg/a HH:mm:ss AM/PM.
Search Interval #searchinterval Intervallo di tempo per la regola di avviso, con il formato HH:mm:ss.
Search Interval StartTime #searchintervalstarttimeutc Ora di inizio per la query in formato UTC, con il formato mm/gg/aaaa HH:mm:ss AM/PM.
SearchQuery #searchquery Query di ricerca nei log usata dalla regola di avviso.
SearchResults "IncludeSearchResults": true Record restituiti dalla query come tabella JSON, limitati ai primi 1.000 record. "IncludeSearchResults": true viene aggiunto in una definizione webhook JSON personalizzata come proprietà di primo livello.
Dimensions "IncludeDimensions": true Combinazioni di valori delle dimensioni che hanno attivato l'avviso come sezione JSON. "IncludeDimensions": true viene aggiunto in una definizione webhook JSON personalizzata come proprietà di primo livello.
Alert Type #alerttype Tipo di regola di avviso di ricerca log configurata come Misurazione metrica o Numero di risultati.
WorkspaceID #workspaceid ID dell'area di lavoro Log Analytics.
Application ID #applicationid ID dell'app Application Insights.
Subscription ID #subscriptionid ID della sottoscrizione di Azure usata.

È possibile usare Includi payload JSON personalizzato per il webhook per ottenere un payload JSON personalizzato usando i parametri . È anche possibile generare altre proprietà.

Ad esempio, è possibile specificare il payload personalizzato seguente che include un singolo parametro denominato text. Il servizio chiamato dal webhook prevede questo parametro:


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

Questo payload di esempio viene risolto in un modo simile all'esempio seguente quando viene inviato al webhook:

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

Le variabili in un webhook personalizzato devono essere specificate all'interno di un enclosure JSON. Ad esempio, fare riferimento #searchresultcount all'esempio di webhook genera l'output in base ai risultati dell'avviso.

Per includere i risultati della ricerca, aggiungere IncludeSearchResults come proprietà di primo livello nel codice JSON personalizzato. I risultati della ricerca vengono inclusi come struttura JSON, quindi non è possibile fare riferimento ai risultati nei campi definiti in modo personalizzato.

Nota

Il pulsante Visualizza webhook accanto all'opzione Includi payload JSON personalizzato per il webhook visualizza un'anteprima di ciò che è stato fornito. Non contiene dati effettivi, ma è rappresentativo dello schema JSON che verrà usato.

Ad esempio, per creare un payload personalizzato che includa solo il nome dell'avviso e i risultati della ricerca, usare questa configurazione:

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

Il payload di esempio seguente è relativo a un'azione webhook personalizzata per qualsiasi avviso di ricerca log:

    {
    "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"]
                        ]
                    }
                ]
        }
    }

Passaggi successivi