Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Улучшите ваш анализ в журналах данных Azure Monitor, сопоставляя данные из Azure Data Explorer и Azure Resource Graph с данными в рабочей области Log Analytics и ресурсах Application Insights. В этой статье объясняется, как выполнять межслужбовые запросы из любой службы, в которой хранятся данные в рабочей области Log Analytics. Хотя Microsoft Sentinel хранит данные в рабочих областях Log Analytics и поддерживает межслужбовые запросы к Azure Data Explorer, не каждая функция Microsoft Sentinel поддерживает запросы к Azure Resource Graph.
Запускайте межсервисные запросы с помощью любых клиентских средств, поддерживающих запросы языка запросов Kusto (KQL), включая Log Analytics в портале Azure, рабочие книги, PowerShell и REST API.
Предпосылки
| Ресурс | Требования к разрешениям |
|---|---|
| Рабочая область Log Analytics |
Microsoft.OperationalInsights/workspaces/query/*/read в рабочих областях Log Analytics, где выполняется ваш запрос, например, как указано встроенной ролью Log Analytics Reader. |
| Azure Resource Graph (Граф ресурсов Azure) | Разрешения на чтение ресурсов, которые вы запрашиваете в Azure Resource Graph |
| Анализатор данных Azure | Просмотр разрешений для таблиц, которые вы запрашиваете в Azure Data Explorer |
Вопросы реализации
Запросы между службами не поддерживаются в следующих сценариях:
- Облака для государственных организаций
- Кластеры Обозревателя данных, настроенные с ограничениями IP-адресов или приватным каналом (частные конечные точки)
Общие соображения по взаимодействию между службами
- Названия баз данных чувствительны к регистру.
- Используйте функции без параметров и функции, определение которых не включает выражения, используемые между рабочими областями или службами. Допустимые функции:
adx(),arg(),resource(),workspace()иapp(). - Запросы между службами поддерживают только получение данных.
-
Единственными командами поддержки запросов между службами являются
.showкоманды. Эта возможность позволяет выполнять запросы между кластерами для ссылки непосредственно на табличную функцию Azure Monitor, Azure Data Explorer или Azure Resource Graph.
.showкоманды, поддерживаемые запросом между службами:.show functions.show function {FunctionName}.show database {DatabaseName} schema as json - Определение столбца метки времени в кластере не поддерживается. API запросов Log Analytics не проходит фильтр времени.
-
mv-expandподдерживает до 2000 записей. - Журналы Azure Monitor не поддерживают функцию
external_table(), которая позволяет запрашивать внешние таблицы в Azure Data Explorer. Чтобы запросить внешнюю таблицу, определитеexternal_table(<external-table-name>)как функцию без параметров в Azure Data Explorer. Затем можно вызвать функцию с помощью выраженияadx("").<function-name>. - При использовании
joinоператора вместо объединения необходимо использоватьhintдля объединения данных в Azure Data Explorer или Azure Resource Graph с данными в рабочей области Log Analytics. ИспользуйтеHint.remote={direction of the Log Analytics workspace}.
Например:AzureDiagnostics | join hint.remote=left adx("cluster=ClusterURI").AzureDiagnostics on (ColumnName)
Соображения по межсервисным запросам Azure Resource Graph
- Часть
argзапроса возвращает только первые 1000 записей. Имейте в виду, если объединение с темjoin, как может быть отсутствуют записи, если ограничение достигнуто. - Оператор
joinпозволяет объединять данные из одной таблицы Azure Resource Graph с одной таблицей в рабочей области Log Analytics. - Azure Monitor не возвращает ошибки запросов Azure Resource Graph.
- Редактор запросов Log Analytics помечает допустимые запросы Azure Resource Graph как синтаксические ошибки. Например, допустимый запрос может привести к ошибке: "Допустимое имя имени <> не ссылается на любой известный столбец, таблицу, переменную или функцию".
- Эти операторы не поддерживаются:
smv-apply(),rand(),arg_max(),arg_min(),avg(),avg_if(),countif(),sumif(),percentile(),percentiles(),percentilew(),percentilesw(),stdev(),stdevif(),stdevp(),variance(),variancep(),varianceif(),bin_at. - Microsoft Sentinel не поддерживает запросы между службами во всех функциях, где используется KQL.
Запрос данных в Azure Data Explorer с помощью adx()
Введите идентификатор кластера Azure Data Explorer в запросе в шаблоне adx, а затем укажите имя базы данных и таблицу.
adx('https://help.kusto.windows.net/Samples').StormEvents
Сочетание таблиц кластера Azure Data Explorer с рабочей областью Log Analytics
Используйте команду union, чтобы объединить таблицы кластера с рабочей областью Log Analytics.
Например:
union customEvents, adx('https://help.kusto.windows.net/Samples').StormEvents
| take 10
let CL1 = adx('https://help.kusto.windows.net/Samples').StormEvents;
union customEvents, CL1 | take 10
Совет
Разрешен сокращенный формат: ClusterName/InitialCatalog. Например, adx('help/Samples') преобразуется в adx('help.kusto.windows.net/Samples').
Объединение данных из кластера Azure Data Explorer в одном арендаторе с ресурсом Azure Monitor в другом
Межтенантные запросы между службами не поддерживаются. Вы вошли в учетную запись одного арендатора для выполнения запроса, охватывающего оба ресурса.
Если ресурс Azure Data Explorer находится в арендаторе A, а рабочая область Log Analytics — в арендаторе B, используйте один из следующих методов:
- Используйте Azure Data Explorer для добавления ролей для принципалов в разных тенантах. Добавьте свой идентификатор пользователя в Тенанте B в качестве авторизованного пользователя на кластере Azure Data Explorer. Убедитесь, что свойство TrustedExternalTenant в кластере Azure Data Explorer содержит клиент B. Выполните перекрестный запрос полностью в клиенте B.
- Используйте Lighthouse для проецирования ресурса Azure Monitor в арендатор A.
Подключение к кластерам Azure Data Explorer из разных арендаторов
Kusto Explorer автоматически выполняет вход в арендатора, к которому изначально принадлежит учетная запись пользователя. Чтобы получить доступ к ресурсам в других арендаторах с помощью одной учетной записи пользователя, в строке подключения необходимо явно указать TenantId:
Data Source=https://ade.applicationinsights.io/subscriptions/SubscriptionId/resourcegroups/ResourceGroupName;Initial Catalog=NetDefaultDB;AAD Federated Security=True;Authority ID=TenantId
Запрос данных в Azure Resource Graph с помощью arg() (предварительная версия)
arg("") Введите шаблон, за которым следует имя таблицы Azure Resource Graph.
Например:
arg("").<Azure-Resource-Graph-table-name>
Совет
Теперь оператор arg() доступен для расширенного поиска угроз на портале Microsoft Defender. Эта функция позволяет выполнять запросы к таблицам Microsoft Sentinel. Дополнительные сведения см. в разделе Запросы в Azure Resource Graph для расширенного поиска.
Ниже приведены некоторые примеры запросов Azure Log Analytics, которые используют новые возможности запросов между службами Azure Resource Graph:
Пример. Фильтрация запроса Log Analytics на основе результатов запроса Azure Resource Graph
arg("").Resources
| where type == "microsoft.compute/virtualmachines" and properties.hardwareProfile.vmSize startswith "Standard_D"
| join (
Heartbeat
| where TimeGenerated > ago(1d)
| distinct Computer
)
on $left.name == $right.Computer
Примеры. Создание правила генерации оповещений, которое применяется только к определенным ресурсам, взятым из запроса arg()
Исключите ресурсы на основе тегов. Например, не активируйте оповещения для виртуальных машин с тегом Test .
arg("").Resources
| where tags.environment=~'Test'
| project name
Получение данных о производительности, связанных с использованием ЦП и фильтрацией ресурсов с помощью тега prod .
InsightsMetrics
| where Name == "UtilizationPercentage"
| lookup (
arg("").Resources
| where type == 'microsoft.compute/virtualmachines'
| project _ResourceId=tolower(id), tags
)
on _ResourceId
| where tostring(tags.Env) == "Prod"
Дополнительные примеры вариантов использования
- Используйте тег, чтобы определить, должны ли виртуальные машины работать 24x7 или должны быть закрыты в ночное время.
- Отображение оповещений на любом сервере, который содержит определенное количество ядер.
Создайте оповещение на основе кросс-сервисного запроса из рабочей области Log Analytics
Чтобы создать правило генерации оповещений на основе запроса между службами из рабочей области Log Analytics, выполните действия, описанные в разделе "Создание или изменение правила генерации оповещений поиска по журналам", выбрав рабочую область Log Analytics на вкладке "Область ".
Совет
Выполните запросы между службами из Azure Data Explorer и Azure Resource Graph в рабочую область Log Analytics, выбрав соответствующий ресурс в качестве области оповещения.
Объединение таблиц Azure Resource Graph с рабочей областью Log Analytics
Используйте команду union, чтобы объединить таблицы кластера с рабочей областью Log Analytics.
Например:
union AzureActivity, arg("").Resources
| take 10
let CL1 = arg("").Resources ;
union AzureActivity, CL1 | take 10
При использовании join оператора вместо объединения необходимо использовать hint для объединения данных в Azure Resource Graph с данными в рабочей области Log Analytics. Используйте Hint.remote={Direction of the Log Analytics Workspace}. Например:
Perf | where ObjectName == "Memory" and (CounterName == "Available MBytes Memory")
| extend _ResourceId = replace_string(replace_string(replace_string(_ResourceId, 'microsoft.compute', 'Microsoft.Compute'), 'virtualmachines','virtualMachines'),"resourcegroups","resourceGroups")
| join hint.remote=left (arg("").Resources | where type =~ 'Microsoft.Compute/virtualMachines' | project _ResourceId=id, tags) on _ResourceId | project-away _ResourceId1 | where tostring(tags.env) == "prod"