Exempel på nyttolaster för loggsökningsaviseringar med webhook-åtgärder

Du kan använda webhook-åtgärder i en aviseringsregel för loggsökning för att anropa en enda HTTP POST-begäran. I den här artikeln beskriver vi de egenskaper som är tillgängliga när du konfigurerar åtgärdsgrupper att använda webhooks. Tjänsten som anropas måste ha stöd för webhooks och veta hur man använder nyttolasten som den tar emot.

Vi rekommenderar att du använder ett vanligt aviseringsschema för webhook-integreringar. Det gemensamma aviseringsschemat ger fördelen att ha en enda utökningsbar och enhetlig nyttolast för aviseringar i alla aviseringstjänster i Azure Monitor.

För aviseringsregler för loggsökning som har en anpassad JSON-nyttolast definierad återställer det gemensamma aviseringsschemat nyttolastschemat till det som beskrivs i Common Alert-schemat. Om du vill ha en anpassad JSON-nyttolast definierad kan webhooken inte använda det gemensamma aviseringsschemat.

Aviseringar med det vanliga schemat aktiverat har en övre storleksgräns på 256 KB per avisering. En större avisering innehåller inte sökresultat. När sökresultaten inte ingår kan du använda LinkToFilteredSearchResultsAPI eller LinkToSearchResultsAPI komma åt frågeresultat via Log Analytics-API:et.

Exempelnyttolasten innehåller exempel när nyttolasten är standard och när den är anpassad.

Loggsökningsavisering för alla resursloggar (från API-version 2021-08-01)

Följande exempelnyttolast är för en standardwebbhook när den används för loggsökningsaviseringar baserat på resursloggar:

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

Loggsökningsavisering för Log Analytics (upp till API-version 2018-04-16)

Följande exempelnyttolast är för en standard-webhook-åtgärd som används för aviseringar baserat på Log Analytics:

Kommentar

Fältvärdet "Severity" ändras om du har bytt till det aktuella scheduledQueryRules-API:et från det äldre Log Analytics-aviserings-API:et.

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

Loggsökningsavisering för Application Insights (upp till API-version 2018-04-16)

Följande exempelnyttolast är för en standardwebbhook när den används för loggsökningsaviseringar baserat på Application Insights-resurser:

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

Logga sökavisering med en anpassad JSON-nyttolast (upp till API-version 2018-04-16)

Kommentar

En anpassad JSON-baserad webhook stöds inte från API-versionen 2021-08-01.

I följande tabell visas standardegenskaper för webhook-åtgärder och deras anpassade JSON-parameternamn.

Parameter Olika beskrivning
AlertRuleName #alertrulename Namnet på aviseringsregeln.
Severity #severity Allvarlighetsgrad inställd för den utlösta loggsökningsaviseringen.
AlertThresholdOperator #thresholdoperator Tröskelvärdesoperator för aviseringsregeln.
AlertThresholdValue #thresholdvalue Tröskelvärde för aviseringsregeln.
LinkToSearchResults #linktosearchresults Länka till Analysportalen som returnerar posterna från frågan som skapade aviseringen.
LinkToSearchResultsAPI #linktosearchresultsapi Länka till analys-API:et som returnerar posterna från frågan som skapade aviseringen.
LinkToFilteredSearchResultsUI #linktofilteredsearchresultsui Länka till analysportalen som returnerar posterna från frågan filtrerad efter dimensionsvärdekombinationer som skapade aviseringen.
LinkToFilteredSearchResultsAPI #linktofilteredsearchresultsapi Länka till analys-API:et som returnerar posterna från frågan filtrerad efter dimensionsvärdekombinationer som skapade aviseringen.
ResultCount #searchresultcount Antal poster i sökresultaten.
Search Interval End time #searchintervalendtimeutc Sluttid för frågan i UTC, med formatet mm/dd/åååå HH:mm:ss AM/PM.
Search Interval #searchinterval Tidsfönster för aviseringsregeln med formatet HH:mm:ss.
Search Interval StartTime #searchintervalstarttimeutc Starttid för frågan i UTC, med formatet mm/dd/åååå HH:mm:ss AM/PM.
SearchQuery #searchquery Loggsökningsfråga som används av aviseringsregeln.
SearchResults "IncludeSearchResults": sant Poster som returneras av frågan som en JSON-tabell, begränsade till de första 1 000 posterna. "IncludeSearchResults": true läggs till i en anpassad JSON webhook-definition som en toppnivåegenskap.
Dimensions "IncludeDimensions": true Dimensionsvärdekombinationer som utlöste aviseringen som ett JSON-avsnitt. "IncludeDimensions": true läggs till i en anpassad JSON webhook-definition som en toppnivåegenskap.
Alert Type #alerttype Typen av aviseringsregel för loggsökning som konfigurerats som Måttmätning eller Antal resultat.
WorkspaceID #workspaceid ID för din Log Analytics-arbetsyta.
Application ID #applicationid ID för din Application Insights-app.
Subscription ID #subscriptionid ID för din Azure-prenumeration som används.

Du kan använda Inkludera anpassad JSON-nyttolast för webhook för att hämta en anpassad JSON-nyttolast med hjälp av parametrarna. Du kan också generera fler egenskaper.

Du kan till exempel ange följande anpassade nyttolast som innehåller en enda parameter med namnet text. Den tjänst som den här webhooken anropar förväntar sig den här parametern:


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

Det här exemplet matchar något som liknar följande exempel när det skickas till webhooken:

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

Variabler i en anpassad webhook måste anges i ett JSON-kabinett. Om du till exempel refererar #searchresultcount till webhooksexemplet genereras utdata baserat på aviseringsresultaten.

Om du vill inkludera sökresultat lägger du till IncludeSearchResults som en toppnivåegenskap i den anpassade JSON-filen. Sökresultat ingår som en JSON-struktur, så resultat kan inte refereras i anpassade fält.

Kommentar

Knappen Visa webhook bredvid alternativet Inkludera anpassad JSON-nyttolast för webhook visar en förhandsgranskning av vad som angavs. Den innehåller inte faktiska data men är representativ för JSON-schemat som ska användas.

Om du till exempel vill skapa en anpassad nyttolast som endast innehåller aviseringsnamnet och sökresultaten använder du den här konfigurationen:

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

Följande exempelnyttolast är för en anpassad webhook-åtgärd för alla loggsökningsaviseringar:

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

Nästa steg