Редактор запросов Azure Monitor
Grafana предоставляет редактор запросов для источника данных Azure Monitor; он находится на странице Explore. Открыть редактор запросов Azure Monitor также можно из панели дашборда: нажмите меню в правом верхнем углу панели и выберите Edit.
В этом документе описаны особенности работы с запросами, характерные именно для источника данных Azure Monitor. Общую документацию по работе с запросами к источникам данных в Grafana смотрите в разделе Запрос и преобразование данных.
Источник данных Azure Monitor позволяет запрашивать данные из Azure Monitor Metrics и Logs, Azure Resource Graph, а также трассировки Application Insights. Для каждого источника предусмотрен собственный специализированный редактор запросов.
Прежде чем начать
- Убедитесь, что вы настроили источник данных Azure Monitor.
- Проверьте, что ваши учётные данные обладают нужными разрешениями на ресурсы, которые вы хотите запрашивать.
Ключевые понятия
Если вы только начинаете работать с Azure Monitor, ниже приведены ключевые термины, используемые в этой документации:
Выбор режима редактора запросов
Редактор запросов источника данных Azure Monitor имеет четыре режима в зависимости от того, какую службу Azure вы хотите запрашивать:
- Metrics — для метрик Azure Monitor
- Logs — для журналов Azure Monitor
- Traces — для трассировок Application Insights
- Azure Resource Graph — для Azure Resource Graph
Запрос метрик Azure Monitor
Azure Monitor Metrics собирает числовые данные из поддерживаемых ресурсов, и вы можете запрашивать их, чтобы исследовать состояние и использование ресурсов и повысить их доступность и производительность.
Метрики Monitor используют облегчённый формат, который хранит только числовые данные определённой структуры и поддерживает сценарии, близкие к реальному времени, что делает их удобными для быстрого выявления проблем. В отличие от них, Azure Monitor Logs может хранить данные различных типов, каждый со своей структурой.
Создание запроса к метрикам
Чтобы создать запрос к метрикам:
-
В панели Grafana выберите источник данных Azure Monitor.
-
Выберите службу Metrics.
-
Выберите ресурс, метрики которого нужно запросить, используя поля subscription, resource group, resource type и resource. Можно также выбрать несколько ресурсов, если они относятся к одной подписке, региону и типу ресурса. Обратите внимание, что эту возможность поддерживает лишь ограниченное число типов ресурсов.
-
Чтобы выбрать пространство имён, отличное от используемого по умолчанию, — например, для выбора ресурсов вроде учётных записей хранения, организованных в нескольких пространствах имён, — воспользуйтесь параметром Namespace.
Note
Не все метрики, возвращаемые API Azure Monitor Metrics, имеют значения.
Источник данных получает списки поддерживаемых метрик для каждой подписки и игнорирует метрики, значения которых всегда отсутствуют.
-
Выберите метрику в поле Metric.
При необходимости можно применить дополнительные агрегации или отфильтровать данные по измерениям.
- Измените агрегацию со среднего значения по умолчанию на минимальное, максимальное или суммарное.
- Укажите собственный шаг времени. По умолчанию Grafana сама выбирает интервал шага времени исходя из выбранного диапазона времени.
- Для метрик с несколькими измерениями можно разделять и фильтровать возвращаемые метрики. Например, метрика зависимостей Application Insights поддерживает возврат нескольких временных рядов для успешных и неуспешных вызовов.
Набор доступных параметров меняется в зависимости от того, что относится к выбранной метрике.
Запросы также можно расширять с помощью переменных шаблона.
Форматирование псевдонимов легенды
Подпись в легенде для метрик можно изменить с помощью псевдонимов. В поле Legend Format можно комбинировать псевдонимы, определённые ниже, любым удобным способом.
Например:
Blob Type: {{ blobtype }}превращается вBlob Type: PageBlob,Blob Type: BlockBlob{{ resourcegroup }} - {{ resourcename }}превращается вproduction - web_server
Фильтрация по измерениям
Некоторые метрики также имеют измерения, которые связывают с ними дополнительные метаданные. Измерения представляют собой пары «ключ — значение», назначенные каждому значению метрики. Grafana может отображать и фильтровать метрики на основе значений измерений.
Источник данных поддерживает операторы equals, not equals и starts with, как описано в документации по API Monitor Metrics.
Дополнительные сведения о многомерных метриках смотрите в документации по метрикам платформы данных Azure Monitor и в документации по фильтрации Azure Monitor.
Запрос журналов Azure Monitor
Azure Monitor Logs собирает и упорядочивает данные журналов и производительности из поддерживаемых ресурсов и делает многие источники данных доступными для совместного запроса с помощью языка запросов Kusto (KQL).
Если Azure Monitor Metrics хранит только упрощённые числовые данные, то журналы могут хранить данные разных типов, каждый со своей структурой. Кроме того, с помощью KQL можно выполнять сложный анализ данных журналов.
Источник данных Azure Monitor также поддерживает запросы к таблицам Basic Logs (если они существуют в вашей рабочей области Log Analytics). Эту возможность необходимо включить в настройках источника данных.
Конструктор запросов журналов (публичная предварительная версия)
Note
Конструктор запросов журналов — это функция в стадии публичной предварительной версии. Она может быть недоступна не во всех средах Grafana.
Конструктор запросов журналов предоставляет визуальный интерфейс для построения запросов к журналам Azure Monitor без написания KQL. Это удобно, если вы только начинаете работать с KQL или хотите быстро собрать запрос.
Чтобы включить конструктор запросов журналов:
- Включите
флаг функции
azureMonitorLogsBuilderEditorв конфигурации Grafana. - Перезапустите Grafana, чтобы изменение вступило в силу.
Чтобы переключаться между режимами Builder и Code:
Когда функция включена, в редакторе запросов журналов появляется переключатель Builder / Code:
- Builder: используйте визуальный интерфейс для выбора таблиц, столбцов, фильтров и агрегаций. Конструктор формирует запрос KQL за вас.
- Code: пишите запросы KQL напрямую. Используйте этот режим для сложных запросов, требующих всех возможностей KQL.
Новые запросы по умолчанию открываются в режиме Builder. Существующие запросы, созданные с помощью «сырого» KQL, остаются в режиме Code. При переключении в режим Builder настройка диапазона времени автоматически меняется на Dashboard, поскольку конструктор сам управляет фильтрацией по времени.
Note
В любой момент можно переключиться из режима Builder в режим Code, чтобы посмотреть или отредактировать сгенерированный KQL. Однако переключение из режима Code в режим Builder может не сохранить сложные запросы, которые нельзя представить в интерфейсе конструктора.
Создание запроса к журналам
Чтобы создать запрос к журналам:
-
В панели Grafana выберите источник данных Azure Monitor.
-
Выберите службу Logs.
-
Выберите ресурс для запроса. Можно выбрать несколько ресурсов, если они одного типа.
В качестве альтернативы можно динамически запрашивать все ресурсы в пределах одной группы ресурсов или подписки.
Note
Если в запросе указан временной интервал, используется пересечение временного интервала запроса и диапазона времени дашборда. Подробности смотрите в документации по API.
-
Введите ваш запрос KQL.
Запросы также можно расширять с помощью переменных шаблона.
Чтобы создать запрос к Basic Logs:
- Убедитесь, что в настройках источника данных включён переключатель Enable Basic Logs.
- В панели Grafana выберите источник данных Azure Monitor.
- Выберите службу Logs.
- Выберите один ресурс для запроса. Запросы к Basic Logs поддерживают только один ресурс рабочей области.
- Переключите переключатель Logs с Analytics на Basic. Появится диалоговое окно с предупреждением о возможных дополнительных расходах.
- Введите ваш запрос KQL.
Caution
Запросы к Basic Logs тарифицируются Azure за каждый запрос. Перед использованием этой функции ознакомьтесь с документацией по ценам Azure.
Запросы к Basic Logs имеют следующие ограничения:
- Диапазон времени: всегда используется диапазон времени дашборда. Указать диапазон времени внутри самого запроса нельзя.
- Один ресурс: можно запросить только одну рабочую область Log Analytics. Выбор нескольких ресурсов не поддерживается.
- Оповещения: запросы к Basic Logs недоступны при создании правил оповещений.
- Ограничения KQL: некоторые операторы KQL не поддерживаются. Полный список ограничений смотрите в документации Azure.
Запросы также можно расширять с помощью переменных шаблона.
Примеры запросов к журналам
Запросы к журналам Azure Monitor пишутся на языке запросов Kusto (KQL) — богатом языке, похожем на SQL.
В документации Azure есть материалы, которые помогут изучить KQL:
- Запросы к журналам в Azure Monitor
- Начало работы с Kusto
- Руководство: использование запросов Kusto в Azure Monitor
- Шпаргалка по переходу с SQL на Kusto
Note
Диапазон времени: диапазон времени, используемый для запроса, можно изменить с помощью переключателя диапазона времени:
- Выбор Query использует только диапазоны времени, указанные внутри запроса.
- Выбор Dashboard использует только диапазон времени дашборда Grafana.
- Если в запросе диапазон времени не указан, применяется диапазон времени Log Analytics по умолчанию.
Более подробную информацию смотрите в документации по API Azure Monitor Logs. Если вы ранее использовали параметр
Intersection, он перенесён вDashboard.
Этот пример запроса возвращает производительность CPU виртуальной машины, усреднённую по 5-минутным шагам времени:
Perf
// $__timeFilter is a special Grafana macro that filters the results to the time span of the dashboard
| where $__timeFilter(TimeGenerated)
| where CounterName == "% Processor Time"
| summarize avg(CounterValue) by bin(TimeGenerated, 5m), Computer
| order by TimeGenerated asc
Используйте запросы временных рядов для значений, которые меняются со временем, обычно для графических визуализаций, таких как панель Time series.
Каждый запрос должен возвращать как минимум столбец datetime и столбец с числовым значением.
Результат также должен быть отсортирован по столбцу datetime по возрастанию.
Можно также создать запрос как минимум с одним нечисловым столбцом, не являющимся datetime.
Azure Monitor считает такие столбцы измерениями, и они становятся метками в ответе.
Например, этот запрос возвращает агрегированное количество с группировкой по часу, Computer и CounterName:
Perf
| where $__timeFilter(TimeGenerated)
| summarize count() by bin(TimeGenerated, 1h), Computer, CounterName
| order by TimeGenerated asc
Можно также выбрать дополнительные числовые столбцы значений — с несколькими измерениями или без них. Например, этот запрос возвращает количество и среднее значение с группировкой по часу, Computer, CounterName и InstanceName:
Perf
| where $__timeFilter(TimeGenerated)
| summarize Samples=count(), ["Avg Value"]=avg(CounterValue)
by bin(TimeGenerated, $__interval), Computer, CounterName, InstanceName
| order by TimeGenerated asc
Используйте табличные запросы с панелью Table, чтобы получить список столбцов и строк. Этот запрос возвращает строки с шестью указанными столбцами:
AzureActivity
| where $__timeFilter()
| project TimeGenerated, ResourceGroup, Category, OperationName, ActivityStatus, Caller
| order by TimeGenerated desc
Использование макросов в запросах к журналам
Чтобы помочь вам писать запросы, в предложении where можно использовать несколько макросов Grafana:
Кроме того, в Grafana есть встроенный
макрос $__interval, который вычисляет интервал в секундах.
Запрос Azure Resource Graph
Azure Resource Graph (ARG) — это служба Azure, созданная для расширения Azure Resource Management за счёт эффективного исследования ресурсов и возможности масштабных запросов по набору подписок, что позволяет более эффективно управлять средой. Запрашивая ARG, вы можете искать ресурсы со сложной фильтрацией, итеративно исследовать ресурсы в соответствии с требованиями управления и оценивать влияние применения политик в крупной облачной среде.
Создание запроса к Resource Graph
Запросы ARG пишутся на варианте языка запросов Kusto (KQL), но не все возможности языка Kusto доступны в ARG.
Запрос к Azure Resource Graph форматируется как табличные данные.
Если ваши учётные данные Azure дают доступ к нескольким подпискам, перед вводом запросов можно выбрать несколько подписок. Также можно выполнять запросы на уровне каталога, изменив область действия запроса.
Note
Некоторые запросы, работающие на уровне каталога, могут не работать на уровне подписки, и наоборот.
Примеры запросов к Resource Graph
В документации Azure также есть примеры запросов, которые помогут вам начать.
Сортировка результатов по свойствам ресурса:
Этот запрос возвращает все ресурсы в выбранных подписках, но только свойства name, type и location:
Resources
| project name, type, location
| order by name asc
В этом запросе order by используется для сортировки свойств по свойству name по возрастанию (asc).
Вы можете изменить свойство сортировки и порядок (asc или desc).
В этом запросе project используется, чтобы показать в результатах только перечисленные свойства.
С его помощью можно добавлять или убирать свойства в запросах.
Запрос ресурсов со сложной фильтрацией:
Можно фильтровать ресурсы Azure по имени и значению тега.
Например, этот запрос возвращает список ресурсов со значением тега environment, равным Internal:
Resources
| where tags.environment=~'internal'
| project name
В этом запросе =~ используется в сравнении type, чтобы сделать запрос нечувствительным к регистру.
Также можно использовать project с другими свойствами, добавлять или убирать их.
Группировка и агрегирование значений по свойству:
Для определения правил группировки и агрегирования значений по свойству можно использовать summarize и count.
Например, этот запрос возвращает количество ресурсов в состоянии healthy, unhealthy и not applicable по каждой рекомендации:
securityresources
| where type == 'microsoft.security/assessments'
| extend resourceId=id,
recommendationId=name,
resourceType=type,
recommendationName=properties.displayName,
source=properties.resourceDetails.Source,
recommendationState=properties.status.code,
description=properties.metadata.description,
assessmentType=properties.metadata.assessmentType,
remediationDescription=properties.metadata.remediationDescription,
policyDefinitionId=properties.metadata.policyDefinitionId,
implementationEffort=properties.metadata.implementationEffort,
recommendationSeverity=properties.metadata.severity,
category=properties.metadata.categories,
userImpact=properties.metadata.userImpact,
threats=properties.metadata.threats,
portalLink=properties.links.azurePortal
| summarize numberOfResources=count(resourceId) by tostring(recommendationName), tostring(recommendationState)
В ARG многие вложенные свойства (properties.displayName) имеют тип dynamic, и для работы с ними их следует приводить к строке с помощью tostring().
Использование макросов в запросах к Resource Graph
Чтобы помочь вам писать запросы, в предложении where можно использовать несколько макросов Grafana:
Запрос трассировок Application Insights
Azure Application Insights — это служба, предоставляющая возможности мониторинга производительности приложений (APM). Application Insights можно использовать для сбора метрик, телеметрии и данных трассировки.
Application Insights хранит данные трассировок в базовой рабочей области Log Analytics, а трассировки можно расширять, добавляя дополнительную сопроводительную информацию по требованию разработчика приложения.
Создание запроса к трассировкам
Чтобы создать запрос к трассировкам:
-
В панели Grafana выберите источник данных Azure Monitor.
-
Выберите службу Traces.
-
Выберите ресурс для запроса. Можно выбрать несколько ресурсов, если они одного типа.
Note
Этот тип запроса поддерживает только ресурсы Application Insights.
-
(Необязательно) Укажите значение Operation ID, чтобы отфильтровать трассировки.
-
(Необязательно) Укажите event types для фильтрации.
-
(Необязательно) Укажите event properties для фильтрации.
-
(Необязательно) Измените Result format, чтобы переключаться между табличным форматом и форматом трассировки.
Note
Выбор формата трассировки фильтрует события, оставляя только события типа
trace. Используйте этот формат с визуализацией Trace.
Выполнение запроса возвращает все данные трассировок в пределах временного интервала, заданного диапазоном времени панели или дашборда.
Запросы также можно расширять с помощью переменных шаблона.
Использование запросов в правилах оповещений и записи
Все типы запросов Azure Monitor (Metrics, Logs, Azure Resource Graph и Traces) можно использовать в правилах оповещений и правилах записи Grafana.
Подробную информацию о создании правил оповещений, поддерживаемых типах запросов, требованиях к аутентификации и примеры смотрите в разделе Оповещения Azure Monitor.
Работа с большими наборами данных ресурсов Azure
Если запрос превышает максимально допустимое число записей, результат разбивается на страницы и возвращается только первая страница результатов. Чтобы уменьшить объём возвращаемых записей ниже этого значения, можно использовать фильтры.
Дальнейшие шаги
- Используйте переменные шаблона, чтобы создавать динамичные и переиспользуемые дашборды
- Добавьте аннотации, чтобы накладывать события на графики
- Настройте оповещения, чтобы создавать правила оповещений на основе данных Azure Monitor
- Устраняйте неполадки с запросами и конфигурацией