Tindakan webhook untuk aturan pemberitahuan log
Pemberitahuan log mendukung konfigurasi grup tindakan webhook. Dalam artikel ini, kami akan menjelaskan properti apa saja yang tersedia. Tindakan webhook memungkinkan Anda untuk memanggil satu permintaan HTTP POST. Layanan yang dipanggil harus mendukung webhook dan tahu cara menggunakan payload yang diterimanya.
Catatan
Disarankan Anda menggunakan skema pemberitahuan umum untuk integrasi webhook Anda. Skema pemberitahuan umum memberikan keuntungan karena memiliki satu payload pemberitahuan yang dapat diperluas dan disatukan di semua layanan pemberitahuan di Azure Monitor. Untuk aturan pemberitahuan log yang memiliki payload JSON kustom yang ditentukan, mengaktifkan skema pemberitahuan umum mengembalikan skema payload ke yang dijelaskan di sini. Hal ini berarti bahwa jika Anda ingin menentukan payload JSON kustom, webhook tidak dapat menggunakan skema pemberitahuan umum. Pemberitahuan dengan skema umum yang diaktifkan memiliki batas ukuran atas 256 KB per pemberitahuan, pemberitahuan yang lebih besar tidak akan menyertakan hasil pencarian. Jika hasil pencarian tidak disertakan, Anda harus menggunakan LinkToFilteredSearchResultsAPI atau LinkToSearchResultsAPI untuk mengakses hasil kueri dengan API Log Analytics.
Contoh payload
Bagian ini menunjukkan contoh payload untuk webhook untuk pemberitahuan log. Contoh payload mencakup contoh ketika payload standar dan kustom.
Peringatan log untuk semua log sumber daya (dari versi API 2021-08-01)
Sampel payload berikut adalah untuk webhook standar saat digunakan untuk peringatan log berdasarkan log sumber daya:
{
"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"
}
}
}
}
Peringatan log untuk Analitik Log (hingga versi API 2018-04-16)
Contoh payload berikut adalah untuk tindakan webhook standar yang digunakan untuk peringatan berdasarkan Log Analytics:
Catatan
Nilai bidang "Tingkat Keparahan" berubah jika Anda beralih ke APIQueryRules terjadwal saat ini dari API Pemberitahuan Log Analytics warisan.
{
"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"
}
Peringatan log untuk Application Insights (hingga versi API 2018-04-16)
Contoh payload berikut adalah untuk webhook standar saat digunakan untuk pemberitahuan log berdasarkan sumber daya 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"
}
}
Peringatan log dengan payload JSON kustom (hingga versi API 2018-04-16)
Catatan
Webhook berbasis JSON kustom tidak didukung dari versi API 2021-08-01.
Properti tindakan webhook default dan nama parameter JSON kustom mereka:
| Parameter | Variabel | Deskripsi |
|---|---|---|
| AlertRuleName | #alertrulename | Nama aturan pemberitahuan. |
| Tingkat keparahan | #tingkatkeparahan | Tingkat keparahan yang disiapkan untuk pemberitahuan log yang diaktifkan. |
| AlertThresholdOperator | #thresholdoperator | Operator ambang batas untuk aturan pemberitahuan. |
| AlertThresholdValue | #thresholdvalue | Nilai ambang batas untuk aturan pemberitahuan. |
| LinkToSearchResults | #linktosearchresults | Tautkan ke portal Analytics yang mengembalikan rekaman dari kueri yang membuat pemberitahuan. |
| LinkToSearchResultsAPI | #linktosearchresultsapi | Tautkan ke API Analytics yang mengembalikan rekaman dari kueri yang membuat pemberitahuan. |
| LinkToFilteredSearchResultsUI | #linktofilteredsearchresultsui | Tautkan ke portal Analytics yang mengembalikan rekaman dari kueri yang difilter menurut kombinasi nilai dimensi yang membuat pemberitahuan. |
| LinkToFilteredSearchResultsAPI | #linktofilteredsearchresultsapi | Tautkan ke API Analytics yang mengembalikan rekaman dari kueri yang difilter berdasarkan kombinasi nilai dimensi yang membuat pemberitahuan. |
| ResultCount | #searchresultcount | Jumlah rekaman dalam hasil pencarian. |
| Waktu Akhir Interval Pencarian | #searchintervalendtimeutc | Waktu akhir untuk kueri di UTC, dengan format mm/dd/yyyy HH:mm:ss AM/PM. |
| Interval Pencarian | #searchinterval | Jendela waktu untuk aturan pemberitahuan, dengan format HH:mm:ss. |
| WaktuMulai Interval Pencarian | #searchintervalstarttimeutc | Waktu mulai untuk kueri di UTC, dengan format mm/dd/yyyy HH:mm:ss AM/PM. |
| SearchQuery | #searchquery | Mencatat log pencarian yang digunakan oleh aturan pemberitahuan. |
| SearchResults | "IncludeSearchResults": true | Rekaman yang dikembalikan oleh kueri sebagai tabel JSON, terbatas pada 1.000 rekaman pertama. "IncludeSearchResults": true ditambahkan dalam definisi webhook JSON kustom sebagai properti tingkat atas. |
| Dimensi | "IncludeDimensions": benar | Kombinasi nilai dimensi yang memicu pemberitahuan itu sebagai bagian JSON. "IncludeSearchResults": true ditambahkan dalam definisi webhook JSON kustom sebagai properti tingkat atas. |
| Jenis Pemberitahuan | #alerttype | Tipe aturan pemberitahuan log dikonfigurasi sebagai Pengukuran metrik atau Jumlah hasil. |
| WorkspaceID | #workspaceid | ID ruang kerja Log Analytics Anda. |
| ID aplikasi | #applicationid | ID aplikasi Application Insights Anda. |
| ID Langganan | #subscriptionid | ID langganan Azure Anda digunakan. |
Anda dapat menggunakan Sertakan payload JSON kustom untuk webhook guna mendapatkan payload JSON kustom menggunakan parameter. Anda juga dapat menghasilkan properti tambahan. Misalnya, Anda dapat menentukan payload kustom berikut yang menyertakan parameter tunggal yang disebut teks. Layanan yang disebut webhook ini mengharapkan parameter ini:
{
"text":"#alertrulename fired with #searchresultcount over threshold of #thresholdvalue."
}
Contoh payload ini menyelesaikan sesuatu seperti berikut ini saat dikirim ke webhook:
{
"text":"My Alert Rule fired with 18 records over threshold of 10 ."
}
Variabel dalam webhook kustom harus ditentukan dalam penutup JSON. Misalnya, referensi "#searchresultcount" dalam contoh webhook akan ditampilkan berdasarkan hasil peringatan.
Untuk menyertakan hasil pencarian, tambahkan IncludeSearchResults sebagai properti tingkat teratas di JSON kustom. Hasil pencarian disertakan sebagai struktur JSON, sehingga hasil tidak dapat direferensikan dalam bidang yang ditentukan kustom.
Catatan
Tombol Lihat Webhook di samping opsi Sertakan payload JSON kustom untuk webhook menampilkan pratinjau tentang apa yang disediakan. Ini tidak berisi data aktual, tetapi merupakan perwakilan dari skema JSON yang akan digunakan.
Misalnya, untuk membuat payload kustom yang hanya menyertakan nama pemberitahuan dan hasil pencarian, gunakan konfigurasi ini:
{
"alertname":"#alertrulename",
"IncludeSearchResults":true
}
Contoh payload berikut adalah untuk tindakan webhook kustom untuk setiap pemberitahuan 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"]
]
}
]
}
}
Langkah berikutnya
- Pelajari tentang pemberitahuan log di pemberitahuan Azure.
- Pahami cara mengelola pemberitahuan log di Azure.
- Buat dan kelola grup tindakan di Azure.
- Pelajari selengkapnya tentang Application Insights.
- Pelajari selengkapnya tentang kueri log.