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-01
dell'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×pan=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×pan=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-16
dell'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'API di 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×pan=2020-05-07T18%3a11%3a51.0000000Z%2f2020-05-07T18%3a16%3a51.0000000Z",
"LinkToFilteredSearchResultsAPI": "https://api.loganalytics.io/v1/workspaces/workspaceID/query?query=Heartbeat×pan=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-16
dell'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": "00001111-aaaa-2222-bbbb-3333cccc4444",
"AlertType": "Metric measurement"
}
}
Avviso di ricerca log con un payload JSON personalizzato (fino alla versione 2018-04-16
dell'API )
Nota
Un webhook basato su JSON personalizzato non è supportato dalla versione 2021-08-01
dell'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
- Informazioni sugli avvisi di Monitoraggio di Azure.
- Creare e gestire gruppi di azioni in Azure.
- Altre informazioni sulle query sui log.