Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Существует два способа запроса данных из нескольких рабочих областей, приложений и ресурсов:
- Явный — используйте выражения workspace(), app() или resource() для нацеливания на рабочую область, приложение или ресурс, как описано в данной статье.
- Неявное — используйте запросы контекста ресурсов. При запросе в контексте определенного ресурса, группы ресурсов или подписки запрос извлекает соответствующие данные из всех рабочих областей, содержащих данные для этих ресурсов. Запросы контекста ресурсов не извлекают данные из классических ресурсов Application Insights.
В этой статье объясняется, как использовать явные workspace(), app() и resource() выражения для запроса данных из нескольких рабочих областей, приложений и ресурсов Log Analytics.
При управлении подписками в других клиентах Microsoft Entra с помощью Azure Lighthouseрабочие области Log Analytics, созданные в этих клиентах, доступны для использования в запросах между рабочими областями.
Внимание
Если вы используете ресурс Application Insights, связанный с рабочей областью, телеметрические данные хранятся в рабочей области Log Analytics вместе со всеми другими данными журнала.
workspace() Используйте выражение для запроса данных из приложений в нескольких рабочих областях. Меж-рабочий запрос не нужен для получения данных из нескольких приложений в одной рабочей области.
Требуемые разрешения
| Действие | Требуемые разрешения |
|---|---|
| Проверка состояния рабочей области |
Microsoft.OperationalInsights/workspaces/query/*/read разрешения для рабочих областей Log Analytics, которые вы запрашиваете, предоставляемые, например, встроенной ролью "Читатель Log Analytics" (Log Analytics Reader). |
| Сохранение запроса |
microsoft.operationalinsights/querypacks/queries/action разрешения на пакет запросов, в котором требуется сохранить запрос, как указано встроенной ролью участника Log Analytics, например. |
Соображения
- Межресурсные и межслужбные запросы не поддерживают параметризованные функции и функции, определение которых включает другие выражения межобластных или межслужебных операций, включая
adx(),arg(),resource(),workspace()иapp(). - Вы можете включить до 100 рабочих областей Log Analytics или классических ресурсов Application Insights в одном запросе.
- Запросы по большому количеству ресурсов могут существенно замедлить запрос.
- Запросы между ресурсами в оповещениях поиска по журналам поддерживаются только в текущем API scheduledQueryRules. Если вы используете устаревший API оповещений Log Analytics, необходимо переключиться на текущий API.
- Ссылки на кросс-ресурс, например другую рабочую область, должны быть явными и не могут быть параметризованы.
Использование функций для упрощения запросов
В этом разделе объясняется, как запрашивать рабочие области, приложения и ресурсы без использования функции.
Запрос без использования функции
Для запроса нескольких ресурсов всегда можно использовать явные выражения. Эти ресурсы могут быть рабочими областями и приложениями в сочетании.
Пример запроса в трех рабочих областях:
union
Update,
workspace("00000000-0000-0000-0000-000000000001").Update,
workspace("00000000-0000-0000-0000-000000000002").Update
| where TimeGenerated >= ago(1h)
| where UpdateState == "Needed"
| summarize dcount(Computer) by Classification
Дополнительные сведения см. в разделе оператор объединения, оператор where и оператор суммирования.
Запрос с помощью функции
При использовании запросов между ресурсами для сопоставления данных из нескольких рабочих областей Log Analytics и компонентов Application Insights запрос может стать сложным и сложным для обслуживания. Вы должны использовать функции в запросах журнала Azure Monitor для разделения логики запроса от области ресурсов запроса. Этот метод упрощает структуру запросов. В следующем примере показано, как отслеживать несколько компонентов Application Insights и визуализировать количество неудачных запросов по имени приложения.
Создайте запрос, как показано в следующем примере, который ссылается на область действия компонентов Application Insights. Команда withsource= SourceApp позволяет добавить столбец, который определяет имя приложения, отправившего журнал.
Сохраните запрос как функцию с псевдонимом applicationsScoping.
// crossResource function that scopes my Application Insights components
union withsource= SourceApp
app('00000000-0000-0000-0000-000000000000').requests,
app('00000000-0000-0000-0000-000000000001').requests,
app('00000000-0000-0000-0000-000000000002').requests,
app('00000000-0000-0000-0000-000000000003').requests,
app('00000000-0000-0000-0000-000000000004').requests
Теперь эту функцию можно использовать в запросе между ресурсами, как показано в следующем примере. Функция-псевдоним applicationsScoping возвращает объединение таблицы запросов из всех определённых приложений. После этого с помощью запроса фильтруются неудачные запросы и визуализируются тенденции по приложению. Оператор parse необязателен в этом примере. Он извлекает имя приложения из SourceApp свойства.
applicationsScoping
| where timestamp > ago(12h)
| where success == 'False'
| parse SourceApp with * '(' applicationId ')' *
| summarize count() by applicationId, bin(timestamp, 1h)
| render timechart
Примечание.
Этот метод нельзя использовать с оповещениями по результатам поиска в журналах, так как проверка доступа к ресурсам правила оповещения, включая рабочие области и приложения, выполняется при создании оповещения. Добавление новых ресурсов в функцию после создания оповещения не поддерживается. Если вы предпочитаете использовать функцию для определения области ресурсов в оповещениях поиска по журналам, необходимо изменить правило генерации оповещений на портале или с помощью шаблона Azure Resource Manager, чтобы обновить области ресурсов. Или включите список ресурсов в запрос оповещения поиска по журналам.
Запрос по рабочим областям Log Analytics с помощью workspace()
workspace() Используйте выражение для получения данных из определенной рабочей области в той же группе ресурсов, другой группе ресурсов или другой подписке. Вы можете использовать это выражение для включения данных журнала в запросы Application Insights и для выполнения запросов данных в нескольких рабочих областях в рамках одного запроса к журналу.
Синтаксис
workspace(
Идентификатор)
Аргументы
Identifier: форматы явных идентификаторов в следующей таблице являются лучшим способом запроса рабочих областей, так как они являются наиболее эффективными.
| Идентификатор | Описание | Пример |
|---|---|---|
| идентификатор | Идентификатор GUID рабочей области. | workspace("00000000-0000-0000-0000-000000000000") |
| Идентификатор ресурса Azure | Идентификатор ресурса Azure | workspace("/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-ee4e4e4e4e/resourcegroups/Contoso/providers/Microsoft.OperationalInsights/workspaces/contosoretail") |
Другие идентификаторы рабочей области, использующие только имя рабочей области или имя ресурса рабочей области, не рекомендуется, так как они приводят к снижению производительности и возможных ошибок при запросе между рабочими областями.
Примеры
workspace("00000000-0000-0000-0000-000000000000").Update | count
workspace("/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/Contoso/providers/Microsoft.OperationalInsights/workspaces/contosoretail").Event | count
union
( workspace("00000000-0000-0000-0000-000000000000").Heartbeat | where Computer == "myComputer"),
(app("00000000-0000-0000-0000-000000000000").requests | where cloud_RoleInstance == "myRoleInstance")
| count
union
(workspace("00000000-0000-0000-0000-000000000000").Heartbeat), (app("00000000-0000-0000-0000-000000000000").requests) | where TimeGenerated between(todatetime("2023-03-08 15:00:00") .. todatetime("2023-04-08 15:05:00"))
Создание запросов по классическим приложениям Application Insights с использованием app().
app Используйте выражение для получения данных из определенного классического ресурса Application Insights в той же группе ресурсов, другой группе ресурсов или другой подписке. Если вы используете ресурс Application Insights, связанный с рабочей областью, телеметрические данные хранятся в рабочей области Log Analytics вместе со всеми другими данными журнала.
workspace() Используйте выражение для запроса данных из приложений в нескольких рабочих областях. Меж-рабочий запрос не нужен для получения данных из нескольких приложений в одной рабочей области.
Синтаксис
app(
Идентификатор)
Аргументы
Identifier: форматы явных идентификаторов в следующей таблице являются лучшим способом запроса приложений, так как они являются наиболее эффективными.
| Идентификатор | Описание | Пример |
|---|---|---|
| идентификатор | GUID приложения | app("00000000-0000-0000-0000-000000000000") |
| Идентификатор ресурса Azure | Идентификатор ресурса Azure | app("/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-ee4e4e4e4e/resourcegroups/Fabrikam/providers/microsoft.insights/components/fabrikamapp") |
Примеры
app("00000000-0000-0000-0000-000000000000").requests | count
app("/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/Fabrikam/providers/microsoft.insights/components/fabrikamapp").requests | count
union
(workspace("00000000-0000-0000-0000-000000000000").Heartbeat | where Computer == "myComputer"),
(app("00000000-0000-0000-0000-000000000000").requests | where cloud_RoleInstance == "myColumnInstance")
| count
union
(workspace("00000000-0000-0000-0000-000000000000").Heartbeat), (app("00000000-0000-0000-0000-000000000000").requests)
| where TimeGenerated between(todatetime("2023-03-08 15:00:00") .. todatetime("2023-04-08 15:05:00"))
Сопоставление данных между ресурсами с помощью resource()
Выражение resource используется в запросе Azure Monitor, ограниченном ресурсом для получения данных из других ресурсов.
Синтаксис
resource(
Идентификатор)
Аргументы
Identifier: определяет ресурс, группу ресурсов или подписку, из которой сопоставляются данные.
| Идентификатор | Описание | Пример |
|---|---|---|
| Ресурс | Включает данные для ресурса. | resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm") |
| Группа ресурсов или подписка | Включает данные для ресурса и всех содержащихся в нем ресурсов. | resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myresourcegroup) |
Примеры
union (Heartbeat),(resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm").Heartbeat) | summarize count() by _ResourceId, TenantId
union (Heartbeat),(resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup").Heartbeat) | summarize count() by _ResourceId, TenantId
Связанный контент
В статье "Анализ данных журнала в Azure Monitor" представлена информация об обзоре запросов журнала и структуре данных журнала в Azure Monitor.