Язык запросов Kusto для Azure Resource Graph: руководство для начинающих
By Mirko Peters ·
Освойте язык запросов Kusto (KQL) для Azure Resource Graph. Изучите простой синтаксис, фильтры в конвейере, оператор канала и запросы для управления облачной средой.
Automatically translated with AI from the original post. Read the English original

Освоив язык запросов Kusto (KQL) для Azure Resource Graph, администраторы облака смогут писать чистые и очень быстрые запросы, которые без труда выводят облачную инвентаризацию, риски безопасности и соответствие требованиям управления во множестве подписок, не требуя ручных действий в портале.
Главное
- Запросы KQL читаются как рецепт: символ конвейера (|) связывает последовательные шаги обработки данных.
- Таблица по умолчанию 'resources' содержит большую часть того, что нужно для одновременных запросов к нескольким подпискам Azure.
- Операторы project и extend помогают упорядочить запутанный вывод и извлекать значения вложенных свойств без лишнего кода.
- По умолчанию Resource Graph ограничивает результаты 1 000 записями как защитный механизм, а для больших сред требуются токены пагинации.
- Навыки KQL, освоенные в Azure Resource Graph, напрямую переносятся в Log Analytics и Azure Data Explorer.
Разбираемся в KQL в Azure Resource Graph
Когда вы впервые сталкиваетесь с Kusto Query Language (KQL), аббревиатура может показаться пугающей. Однако если убрать технический жаргон, окажется, что синтаксис очень простой и похож на английский, а создан он для того, чтобы запросы к облачной инфраструктуре были интуитивно понятными. В отличие от написания сложных приложений или громоздких скриптов, KQL сосредоточен исключительно на том, чтобы задавать вопросы и получать структурированные данные.
Каждый вопрос, который вы задаёте в Azure Resource Graph, строится на KQL. Если вы работали с Azure Data Explorer или Log Analytics, этот синтаксис покажется вам знакомым. Но даже если вы начинаете с нуля, порог входа удивительно низкий. Основную часть KQL, необходимую для повседневного управления облаком, можно освоить за один присест.
Анатомия запроса KQL
Запрос KQL читается как пошаговый рецепт. Секрет такой читаемости — символ конвейера (|), который разделяет отдельные инструкции. Вы начинаете с базовой таблицы данных, а затем передаёте её в последующие команды, которые сужают, фильтруют или преобразуют результат.
Прочитайте запрос KQL сверху вниз, и он будет звучать почти как обычный английский язык. Например, рассмотрим простейший полезный запрос, который можно написать:
resources | summarize countПроизнесённая вслух, эта команда означает: возьми все данные из таблицы по умолчанию resources и посчитай их количество. Система отвечает одним, но очень важным числом, которое показывает общий масштаб вашей облачной инфраструктуры.
Основные операторы для администраторов облака
Освоив подсчёт ресурсов, вы захотите фильтровать и форматировать данные. Несколько базовых операторов выполняют основную работу почти в каждом административном запросе:
- where: фильтрует набор данных по заданным условиям. Например, если изменить запрос на
resources | where type == "Microsoft.Compute/virtualMachines", подсчёт ограничится строго виртуальными машинами. - project: выбирает, какие столбцы будут присутствовать в итоговом результате. Это позволяет вывести только имя ресурса, расположение и идентификатор подписки вместо огромного массива необработанного JSON.
- order by: сортирует результаты по алфавиту или по числовому значению, превращая случайный дамп данных в аккуратную таблицу, которую легко просматривать.
- extend: Создает временный пользовательский столбец, позволяя извлекать глубоко вложенные значения конфигурации и присваивать им короткие, пригодные для повторного использования имена.
Как избежать типичных ловушек KQL
Хотя KQL во многом снисходителен, в вопросах регистра у него строгие правила. Оператор сопоставления без учета регистра (записывается как знак равенства с тильдой, например =~) спокойно игнорирует регистр при поиске строковых значений, таких как типы ресурсов. Однако имена свойств устроены иначе. Если вы допустите опечатку или неверно укажете регистр в имени свойства, KQL не выдаст явной синтаксической ошибки. Вместо этого он молча вернет пустые значения, и вы будете искать ошибку, которой на самом деле нет в вашей логике.
Использование таблиц за пределами базового набора
Таблица resources покрывает большинство повседневных административных проверок, но для более глубокой работы с управлением существуют специализированные таблицы. Когда нужно проверить настройки безопасности, просмотреть назначения политик или изучить организационные контейнеры, такие как группы управления, подписки и группы ресурсов, вы можете направлять запросы KQL непосредственно к этим выделенным таблицам.
Поскольку KQL является общим стандартом для экосистемы Microsoft, освоение этих шаблонов сразу повышает ценность ваших навыков. Запросы, которые вы пишете сегодня для очистки неиспользуемых групп безопасности сети или поиска виртуальных машин без тегов, с той же пользой пригодятся при создании оповещений безопасности в Microsoft Defender или при построении операционных панелей в Log Analytics.
Заключение и следующие шаги
Изучение языка запросов Kusto превращает Azure Resource Graph из загадочного серверного движка в ваш любимый повседневный инструмент управления облаком. Заменяя утомительные щелчки в портале и хрупкие скрипты краткими, понятными запросами, вы получаете полную видимость вашей среды с несколькими подписками.
Чтобы глубже разобраться в упрощении рабочих процессов администрирования облака, послушайте полный выпуск, где найдете больше экспертных советов, практических примеров и пошаговых рекомендаций по применению Azure Resource Graph в вашей организации.
Часто задаваемые вопросы
Что такое KQL и зачем он используется в Azure Resource Graph?
KQL расшифровывается как Kusto Query Language. Это легковесный и интуитивно понятный язык запросов, с помощью которого в Resource Graph можно задавать вопросы о вашей среде Azure. Он позволяет мгновенно фильтровать, сортировать и группировать тысячи облачных ресурсов с помощью читаемого синтаксиса на основе конвейера (pipe-разделителя).
Как отфильтровать ресурсы по типу с помощью KQL?
Вы можете отфильтровать ресурсы, добавив предложение 'where' после первоначального объявления таблицы. Например, запрос 'resources | where type =~ "microsoft.keyvault/vaults"' вернет только ваши хранилища Azure Key Vault.
Почему мой запрос KQL возвращает пустые значения вместо ошибки?
Имена свойств в KQL чувствительны к регистру. Если вы неверно укажете регистр в имени свойства, Azure Resource Graph не выдаст синтаксической ошибки, а молча вернет пустые значения, из-за чего отладка становится сложной.
Что такое ограничение в 1 000 записей в Azure Resource Graph?
По умолчанию запрос Resource Graph возвращает не более 1 000 записей, чтобы защитить пользователей от случайной загрузки огромных объемов данных. Если в вашей среде тысячи ресурсов, можно обойти это ограничение или постранично получать результаты с помощью токенов продолжения (continuation tokens).