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

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

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

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

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

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

Запрос данных в azure Data Обозреватель с помощью 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 Обозреватель с рабочей областью 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 Обозреватель для добавления ролей для субъектов в разных клиентах. Добавьте свой идентификатор пользователя в арендаторе B в качестве полномочного пользователя в кластере Azure Data Explorer. Убедитесь, что свойство TrustedExternalTenant в кластере Azure Data Обозреватель содержит клиент 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>

Ниже приведены некоторые примеры запросов 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 Обозреватель и Azure Resource Graph в рабочую область Log Analytics, выбрав соответствующий ресурс в качестве область оповещения.

Ограничения

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

  • Запросы между службами не поддерживают параметризованные функции и функции, определение которых включает другие межрабочая область или межслужбовые выражения, включая adx(), , arg()resource()и workspace()app().
  • Запросы между службами поддерживают только функции .show . Эта возможность позволяет выполнять запросы между кластерами для ссылки на функцию Azure Monitor, Azure Data Обозреватель или табличную функцию 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. Чтобы запросить внешнюю таблицу, определите external_table(<external-table-name>) как функцию без параметров в Обозреватель данных Azure. Затем можно вызвать функцию с помощью выражения 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"

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