Поделиться через


Сопоставление данных в Azure Data Explorer и Azure Resource Graph с данными в рабочей области Log Analytics

Вы можете сопоставить данные в Azure Data Explorer и Azure Resource Graph с данными в рабочей области Log Analytics и ресурсах Application Insights для улучшения анализа в журналах Azure Monitor. Microsoft Sentinel, который также хранит данные в рабочих областях Log Analytics, поддерживает межслужбовые запросы к Azure Data Explorer, но не к Azure Resource Graph. В этой статье объясняется, как выполнять межслужбовые запросы из любой службы, в которой хранятся данные в рабочей области Log Analytics.

Выполнение запросов между службами с помощью любых клиентских средств, поддерживающих запросы язык запросов Kusto (KQL), включая веб-интерфейс Log Analytics, книги, PowerShell и REST API.

Требуемые разрешения

Чтобы выполнить межслужбовый запрос, который сопоставляет данные в Azure Data Explorer или Azure Resource Graph с данными в рабочей области Log Analytics, вам потребуется:

  • Microsoft.OperationalInsights/workspaces/query/*/readразрешения для рабочих областей Log Analytics, которые вы запрашиваете, например, встроенной ролью Log Analytics Reader.
  • Разрешения читателя для ресурсов, которые вы запрашиваете в Azure Resource Graph.
  • Разрешения средства просмотра для таблиц, которые запрашивается в Azure Data Explorer.

Запрос данных в 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').

При использовании join оператора вместо объединения необходимо использовать hint данные в кластере Azure Data Explorer с рабочей областью Log Analytics. Используйте Hint.remote={Direction of the Log Analytics Workspace}.

Например:

AzureDiagnostics
| join hint.remote=left adx("cluster=ClusterURI").AzureDiagnostics on (ColumnName)

Объединение данных из кластера 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() в Log Analytics также можно использовать в единой платформе Microsoft Defender. Оператор arg() работает только над данными Microsoft Sentinel (то есть таблицы XDR Defender не поддерживаются). Эта функция позволяет использовать arg() и ее аналитические сведения прямо в интерфейсе расширенной охоты, сохраняя необходимость вручную открыть новое окно для Microsoft Sentinel для использования оператора.

Снимок экрана: оператор arg в расширенной охоте.

Совет

Теперь arg() оператор доступен для предварительной версии в расширенной охоте. Эта функция позволяет запрашивать только данные Microsoft Sentinel. Дополнительные сведения об использовании оператора arg() для запросов 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, выбрав соответствующий ресурс в качестве области оповещения.

Ограничения

Общие ограничения запросов между службами

  • Запросы между службами не поддерживают параметризованные функции и функции, определение которых включает другие межрабочая область или межслужбовые выражения, включая adx(), , arg()resource()и workspace()app().
  • Запросы между службами поддерживают только функции .show . Эта возможность позволяет выполнять запросы между кластерами для ссылки непосредственно на табличную функцию Azure Monitor, Azure Data Explorer или Azure Resource Graph. Следующие команды поддерживаются с помощью запроса между службами:
    • .show functions
    • .show function {FunctionName}
    • .show database {DatabaseName} schema as json
  • В именах баз данных учитывается регистр.
  • Определение столбца метки времени в кластере не поддерживается. API запросов Log Analytics не пройдет фильтр времени.
  • Запросы между службами поддерживают только получение данных.
  • Приватный канал (частные конечные точки) и ограничения IP-адресов не поддерживают запросы между службами.
  • mv-expand ограничено 2000 записями.
  • Журналы Azure Monitor не поддерживают функцию external_table() , которая позволяет запрашивать внешние таблицы в Azure Data Explorer. Чтобы запросить внешнюю таблицу, определите external_table(<external-table-name>) как функцию без параметров в Azure Data Explorer. Затем можно вызвать функцию с помощью выражения adx("").<function-name>.

Ограничения запросов между службами Azure Resource Graph

  • Microsoft Sentinel не поддерживает запросы между службами в Azure Resource Graph.
  • При запросе данных Azure Resource Graph из Azure Monitor:
    • Запрос возвращает только первые 1000 записей.
    • Azure Monitor не возвращает ошибки запросов Azure Resource Graph.
    • Редактор запросов Log Analytics помечает допустимые запросы Azure Resource Graph как синтаксические ошибки.
    • Соединения не поддерживаются при использовании подсказки.
    • Эти операторы не поддерживаются: smv-apply(), rand()variancep()variance()stdevp()stdevif()stdev()arg_max()percentilesw()percentilew()arg_min()percentiles()percentile()avg_if()avg()countif()sumif(). varianceif()

Объединение таблиц 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"

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