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

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

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