Пример полезных данных для оповещений поиска по журналам с помощью действий веб-перехватчика

Действия веб-перехватчика можно использовать в правиле генерации оповещений поиска по журналам для вызова одного HTTP-запроса POST. В этой статье описаны свойства, доступные при настройке групп действий для использования веб-перехватчиков. Вызываемая служба должна поддерживать веб-перехватчики и знать, как использовать полезные данные, которые он получает.

Рекомендуется использовать общую схему оповещений для интеграции веб-перехватчика. Общая схема оповещений позволяет использовать единую, расширяемую и унифицированную структуру полезных данных оповещений для всех служб оповещений в Azure Monitor.

Для правил генерации оповещений поиска по журналам, которые имеют настраиваемые полезные данные JSON, включив общую схему оповещений отменить изменения схему полезных данных, описанную в схеме common alert. Если вы хотите определить пользовательские полезные данные JSON, веб-перехватчик не может использовать общую схему оповещений.

Максимальный размер оповещений, для которых включена общая схема, ограничен 256 КБ. Больше оповещений не включает результаты поиска. Если результаты поиска не включены, используйте LinkToFilteredSearchResultsAPI или LinkToSearchResultsAPI для доступа к результатам запроса через API Log Analytics.

Здесь есть примеры как стандартных, так и пользовательских полезных данных.

Оповещение поиска журналов для всех журналов ресурсов (из версии 2021-08-01API)

В следующем примере полезных данных используется стандартный веб-перехватчик при использовании для оповещений поиска журналов на основе журналов ресурсов:

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

Оповещение поиска по журналам для Log Analytics (до версии 2018-04-16API)

Следующий пример полезных данных для стандартного действия веб-перехватчика используется для оповещений на основе Log Analytics:

Примечание.

Значение "Severity" поля изменяется, если вы переключились на текущий API scheduledQueryRules из устаревшего API оповещений Log Analytics.

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

Оповещение поиска по журналам для приложения Аналитика (до версии 2018-04-16API)

В следующем примере полезных данных используется стандартный веб-перехватчик при использовании для оповещений поиска по журналам на основе ресурсов приложения Аналитика:

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

Оповещение поиска по журналам с помощью пользовательской полезных данных JSON (до версии 2018-04-16API)

Примечание.

Пользовательский веб-перехватчик на основе JSON не поддерживается из версии 2021-08-01API.

В следующей таблице перечислены свойства действия веб-перехватчика по умолчанию и их пользовательские имена параметров JSON.

Параметр «Переменная» Description
AlertRuleName #alertrulename Имя правила генерации оповещений.
Severity #severity Набор серьезности для оповещения об обнаружении поиска по журналам.
AlertThresholdOperator #thresholdoperator Оператор порога для правила генерации оповещений.
AlertThresholdValue #thresholdvalue Значение порога для правила генерации оповещений.
LinkToSearchResults #linktosearchresults Ссылка на портал Analytics, которая возвращает записи из запроса, создавшего оповещение.
LinkToSearchResultsAPI #linktosearchresultsapi Ссылка на API Analytics, которая возвращает записи из запроса, создавшего оповещение.
LinkToFilteredSearchResultsUI #linktofilteredsearchresultsui Ссылка на портал аналитики, которая возвращает записи из запроса с фильтрацией по значениям измерений, которые вызвали создание этого оповещения.
LinkToFilteredSearchResultsAPI #linktofilteredsearchresultsapi Ссылка на API аналитики, которая возвращает записи из запроса с фильтрацией по значениям измерений, которые привели к генерации этого оповещения.
ResultCount #searchresultcount Число записей в результатах поиска.
Search Interval End time #searchintervalendtimeutc Время завершения запроса в формате UTC (мм/дд/гггг ЧЧ:мм:сс в 12-часовом формате)
Search Interval #searchinterval Временное окно для правила генерации оповещений (формат: ЧЧ:мм:сс)
Search Interval StartTime #searchintervalstarttimeutc Время начала запроса в формате UTC (мм/дд/гггг ЧЧ:мм:сс в 12-часовом формате)
SearchQuery #searchquery Запрос поиска журналов, используемый правилом генерации оповещений.
SearchResults "IncludeSearchResults": true Возвращенные запросом записи в формате таблицы JSON (не более 1000 первых записей). Значение "IncludeSearchResults": true добавляется в определение пользовательского веб-перехватчика на основе JSON в качестве свойства верхнего уровня.
Dimensions "IncludeDimensions": true Раздел JSON с сочетанием значений измерений, которые привели к генерации этого оповещения. Значение "IncludeDimensions": true добавляется в определение пользовательского веб-перехватчика на основе JSON в качестве свойства верхнего уровня.
Alert Type #alerttype Тип правила генерации оповещений поиска по журналам, настроенный как измерение метрик или количество результатов.
WorkspaceID #workspaceid Идентификатор рабочей области Log Analytics.
Application ID #applicationid Идентификатор приложения Application Insights.
Subscription ID #subscriptionid Идентификатор используемой подписки Azure.

Вы можете использовать настраиваемые полезные данные JSON для веб-перехватчика , чтобы получить пользовательские полезные данные JSON с помощью параметров. Вы также можете создать дополнительные свойства.

Например, можно указать следующие пользовательские полезные данные, включающие один параметр text. Служба, которую вызывает этот веб-перехватчик, ожидает следующий параметр:


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

В этом примере полезные данные разрешаются в следующем примере при отправке в веб-перехватчик:

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

Переменные в пользовательском веб-перехватчике должны включаться в текст JSON. Например, ссылка #searchresultcount в примере веб-перехватчика создает выходные данные на основе результатов оповещения.

Чтобы включить результаты поиска, добавьте IncludeSearchResults в качестве свойства верхнего уровня в пользовательский код JSON. Результаты поиска включаются в структуру JSON, поэтому результаты нельзя ссылаться на настраиваемые поля.

Примечание.

Кнопка "Просмотреть веб-перехватчик " рядом с параметром "Включить пользовательские полезные данные JSON для веб-перехватчика " отображает предварительный просмотр предоставленных сведений. Он не содержит фактические данные, но представляет схему JSON, которая будет использоваться.

Например, чтобы создать пользовательскую полезные данные, включающую только имя оповещения и результаты поиска, используйте следующую конфигурацию:

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

Ниже приведен пример полезных данных для пользовательского действия веб-перехватчика для любого оповещения поиска по журналам:

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

Следующие шаги